Precedente :: Successivo |
Autore |
Messaggio |
sevenjeak Semidio


Registrato: 04/02/08 22:05 Messaggi: 308 Residenza: Roma
|
Inviato: 28 Set 2009 19:24 Oggetto: [PHP/DOM] Script guestbook, funziona in parte |
|
|
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">
</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 |
|
 |
freemind Supervisor sezione Programmazione


Registrato: 04/04/07 21:28 Messaggi: 4643 Residenza: Internet
|
Inviato: 30 Set 2009 20:53 Oggetto: |
|
|
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 |
|
 |
sevenjeak Semidio


Registrato: 04/02/08 22:05 Messaggi: 308 Residenza: Roma
|
Inviato: 01 Ott 2009 08:36 Oggetto: |
|
|
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 |
|
 |
|
|
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
|
|