Visualizzazione risultati 1 fino 4 di 4

Discussione: Lista di punti XML

  1. #1
    fiduciali non è connesso Neofita
    Data registrazione
    05-07-2017
    Messaggi
    23

    Predefinito Lista di punti XML

    Buonasera,
    Ho questo codice in una pagina "lista_punti.php" dove prelevo dal archivio tutti o una parte dei punti e in una seconda pagina "mappa.php" recupero la lista dei punti ottenuta nella prima pagina e li graficizzo nella mappa di Google Earth.

    Il codice nella pagina "lista_punti.php" dove mi viene mostrato l'errore:
    Codice PHP:
    function parseToXML($htmlStr)
    {
    $xmlStr=str_replace('<','&lt;',$htmlStr);
    $xmlStr=str_replace('>','&gt;',$xmlStr);
    $xmlStr=str_replace('"','&quot;',$xmlStr);
    $xmlStr=str_replace("'",''',$xmlStr);
    $xmlStr=str_replace("&",'&amp;',$xmlStr);
    return $xmlStr;
    }

    if ($selezione_punti == "TUTTI") {
    $result = mysqli_query($db_connessione, "SELECT * FROM ARCHIVIO WHERE latitudine <> '' and longitudine <> ''");
    }

    header("Content-type: text/xml");

    // Start XML file, echo parent node
    echo "<?xml version='1.0' ?>";
    echo '<markers>';
    $ind=1;

    // Iterate through the rows, printing XML nodes for each
    while($row = mysqli_fetch_array($result)) {
    // Add to XML document node
    echo '<marker ';
    echo 'id="' . $ind . '" ';
    echo 'name="' . parseToXML($row['nome']) . '" ';
    echo 'x="' . parseToXML(round($row['x'],3)) . '" ';
    echo 'y="' . parseToXML(round($row['y'],3)) . '" ';
    echo 'z="' . parseToXML(round($row['z'],3)) . '" ';
    echo 'descrizione="' . parseToXML($row['descrizione']) . '" ';
    echo 'lat="' . $row['latitudine'] . '" ';
    echo 'lng="' . $row['longitudine'] . '" ';
    echo 'quota="' . round($row['quota'],3) . '" ';
    echo 'h_antenna="' . round($row['h_antenna'],3) . '" ';
    echo 'type="' . $row['type'] . '" ';
    echo '/>';
    $ind = $ind + 1;
    }

    // End XML file
    echo '</markers>';
    Errore mostrato nella pagina "lista_punti.php":

    This page contains the following errors:
    error on line 2 at column 1: Extra content at the end of the document
    Below is a rendering of the page up to the first error.

    Da cosa è dovuto quest'errore?

  2. #2
    L'avatar di dreadnaut
    dreadnaut è connesso ora Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,269

    Predefinito

    Un file .php deve cominciare con <?php

    [edit]
    Avrai un altro errore poche righe sotto però, perché ''' non è una stringa valida. Ti serve "'" oppure '\''.

    Inoltre parseToXML è un nome interessante ma... incorretto. Quello che fa è escapeForXml, che d'altra parte esiste già come
    Codice PHP:
    $escaped = htmlspecialchars($stringa, ENT_XML1 | ENT_COMPAT, "UTF-8");

    Usando quello ed extract() per accedere alle colonne del database, potresti riscrivere il tuo ciclo come:
    Codice PHP:
    <?php

    // [...]

    $ind=1;

    // Iterate through the rows, printing XML nodes for each
    while($row = mysqli_fetch_array($result)) {
    print_marker($ind, $row);
    $ind++;
    }

    function
    print_marker($markerId, $data)
    {
    extract($data);
    ?>
    <marker id="<?= $markerId ?>"
    name="<?= escape($nome) ?>"
    x="<?= escape($x) ?>"
    y="<?= escape($y) ?>"
    z="<?= escape($z) ?>"
    descrizione="<?= escape($descrizione) ?>"
    lat="<?= $latitudine ?>"
    lng="<?= $longitudine ?>"
    quota="<?= round($quota, 3) ?>"
    h_antenna="<?= round($h_antenna, 3) ?>"
    type="<?= $type ?>"
    />
    <?php
    }

    function
    escape($string) {
    return
    htmlspecialchars($string, ENT_XML1 | ENT_COMPAT, "UTF-8");
    }
    Ultima modifica di dreadnaut : 03-07-2022 alle ore 22.11.50

  3. #3
    fiduciali non è connesso Neofita
    Data registrazione
    05-07-2017
    Messaggi
    23

    Predefinito

    Grazie per la risposta, ho risolto rimuovendo
    Codice PHP:
    error_reporting(-1);
    presente in un altra pagina collegata che interferiva mostrando quel messaggio.
    Domani proverò anche il tuo codice, non conoscevo
    Codice PHP:
    $escaped = htmlspecialchars($stringa, ENT_XML1 | ENT_COMPAT, "UTF-8");
    ma la utilizzerò.

  4. #4
    L'avatar di dreadnaut
    dreadnaut è connesso ora Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,269

    Predefinito

    Occhio che rimuovere error_reporting non risolve il problema, ma lo nasconde soltanto. In più, nasconde possibili errori che puoi introdurre in futuro, rendendo la tua via più difficile.

    Io lascerei error_reporting al suo posto, magari nella sua forma più leggibile error_reporting(E_ALL), e cercherei di correggere il problema.
    Ultima modifica di dreadnaut : 04-07-2022 alle ore 21.17.10 Motivo: + tag [tt]

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •