Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
[PHP/DOM] Script guestbook, funziona in parte
Nuovo argomento   Rispondi    Indice del forum -> Linguaggi per Internet
Precedente :: Successivo  
Autore Messaggio
sevenjeak
Semidio
Semidio


Registrato: 04/02/08 22:05
Messaggi: 308
Residenza: Roma

MessaggioInviato: 28 Set 2009 19:24    Oggetto: [PHP/DOM] Script guestbook, funziona in parte Rispondi citando

Salve,

Ho creato un guestbook in php che tramite il la classe DOMdocument() memorizza i dati all'interno di un file xml: la index del mio guestbook è questa:
Codice:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="style.css" />
<title>Pc tools |guestbook</title>
</head>

<body>
   <div id="header">
      &nbsp;
   </div>
   <div id="content">
      <?php
     if (!isset($_GET["np"])) {
     ?>
        <button onclick="location.href = 'index.php?np'">Nuovo messaggio</button><br />
       <?php
          $doc = new DOMdocument();
         $doc->load('msg.xml');
         $root = $doc->documentElement;
         $array_msg = $root->getElementsByTagName('msg');
         foreach ($array_msg as $ln)
         {
            // Estrago i valore dei nodi
            $author = $ln->getElementsByTagName('author');
            $author = $author->item(0)->nodeValue;
            $date = $ln->getElementsByTagName('date');
            $date = $date->item(0)->nodeValue;
            $text = $ln->getElementsByTagName('text');
            $text = $text->item(0)->nodeValue;
            // Visualizzo i valori a video
            echo "<div class='post'>";
            echo "<div class='post-title'><strong>Scritto da</strong> ".$author."<div class='post-date'><strong>Il</strong> ".$date."</div></div>";
            echo "<div class='post-msg'>".$text."</div>";
            echo "</div>";
         }
       ?>
     <?php
     }else {
     ?>
         <form action="adding.php" method="post">
            <div>
             <label>Nome</label><br />
               <input id="nome" name="name"/>
            </div>
         <div>
            <label>Messaggio</label><br />
               <textarea id="messaggio" name="msg" cols="31" rows="5"></textarea>
            </div>
         <div>
            <input type="submit" value="Inserisci messaggio" />
         </div>
         </form> 
     <?php
     }
     ?>
   </div>
</body>
</html>

Mentre il documento xml è questo:
Codice:

<?xml version="1.0" encoding="UTF-8"?>
<messagge>
   <msg>
      <author>Sevenjeak</author>
     <data>28/09/09</data>
     <text>messagio di prova</text>
   </msg>
</messagge>

Lo script funziona, ma quando tramite il form, presente nella index, invia un carattere speciale al file xml questultimo non lo prende visualizzando sulla index questi errori:
Codice:


Warning: DOMDocument::load() [domdocument.load]: Input is not proper UTF-8, indicate encoding ! Bytes: 0xE8 0x20 0x63 0x69 in file:///C:/Programmi/Apache%20Software%20Foundation/Apache2.2/htdocs/Pc-tools/guestbook/msg.xml, line: 8 in C:\Programmi\Apache Software Foundation\Apache2.2\htdocs\Pc-tools\guestbook\index.php on line 20

Fatal error: Call to a member function getElementsByTagName() on a non-object in C:\Programmi\Apache Software Foundation\Apache2.2\htdocs\Pc-tools\guestbook\index.php on line 22


di cosa si tratta?
Top
Profilo Invia messaggio privato HomePage
freemind
Supervisor sezione Programmazione
Supervisor sezione Programmazione


Registrato: 04/04/07 21:28
Messaggi: 4643
Residenza: Internet

MessaggioInviato: 30 Set 2009 20:53    Oggetto: Rispondi citando

Prima di tutto porta in UTF-8 anche la pagina e poi usa le sezioni CDATA per i nodi che devono contenere un testo arbitrario.

Codice:

$node=$xml->createElement('nodo');
$root->appendChild($node);
$cdata=$xml->createCDATASection('testo arbitrario');
$node->appendChild($cdata);


con $xml il documento creato con DOMDocument, $root il nodo root dell'xml.

Non ho provato il codice, l'ho scritto al volo.

P.S.
Ma per curiosità: perchè passi per xml per generare pagine html, usando addirittura una libreria?
Top
Profilo Invia messaggio privato
sevenjeak
Semidio
Semidio


Registrato: 04/02/08 22:05
Messaggi: 308
Residenza: Roma

MessaggioInviato: 01 Ott 2009 08:36    Oggetto: Rispondi

Ho risolto utilizzando la funziona htmlentities(), cmq a che cosa serve la funzione createCDATASection()?

P.S.: xml non mi serve per creare una pagina html, ma solamente per archiviare i dati per poi leggerli nella index del mio guestbook
Top
Profilo Invia messaggio privato HomePage
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Linguaggi per Internet Tutti i fusi orari sono GMT + 2 ore
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi