|
|
|
|
Bonjour,
Je voudrai créer un mini formulaire PHP où les internautes pourraient laisser une blague (tu texte quoi !) et ensuite je voudrai que toutes les blagues inscrites soient affichées (sur la même page ?)...
Comment faire ?
Configuration: Windows XP Safari 530.19.1
Tu dois faire ça en PHP avec une base de données.
|
Je t'ai codé ça avec DOM en PHP.
<?xml version="1.0" encoding="UTF-8"?> <blagues> </blagues>Enregistres-le en UTF-8, envoyes-le sur le FTP et attributs lui les droits en écriture pour le serveur. Ensuite, renommes ta page avec l'extension .php et voilà le script qu'il faut utiliser pour lire : <?php
/* -- Lecture des news -- */
$contenu = file_get_contents('blagues.xml');
$xml = new SimpleXMLElement($contenu);
foreach($xml as $blague) {
echo '<div class="blague">'."\n".
"\t".'<p class="info">Blague déposée par <strong>'.htmlspecialchars(stripslashes($blague->auteur)).'</strong></p>'."\n".
"\t".'<p class="texte">'.nl2br(htmlspecialchars(stripslashes($blague->texte))).'<br/>'."\n".
'</div>'."\n\n";
}
unset($xml);unset($contenu);
?>Et celui du formulaire :<h3>Vous aussi, partagez vos blagues !</h3>
<?php
if(get_magic_quotes_gpc()) {
$_POST = array_map('stripslashes', $_POST);
$_GET = array_map('stripslashes', $_GET);
$_COOKIE = array_map('stripslashes', $_COOKIE);
}
$form = '<form method="post" action="">
<p>
<label for="auteur">Auteur</label>
<input type="text" name="auteur" id="auteur" />
</p>
<p>
<label for="texte">La blague</label>
<textarea name="texte" id="texte" cols="45" rows="8"></textarea>
</p>
<p>
<input type="submit" value="Ajouter" />
<input type="hidden" name="submitBlague" value="true" />
</p>
</form>';
if($_POST['submitBlague'] == "true") {
$auteur = trim($_POST['auteur']);
$texte = trim($_POST['texte']);
if(empty($auteur) || empty($texte)) {
echo 'Merci de remplir tous les champs !'."\n".$form;
} else {
/* Création de l'objet DOM et chargement du XML actuel */
$dom = new DOMDocument('1.0', 'UTF-8');
$dom->load('blagues.xml');
/* Création de la nouvelle blague */
$blagueTag = $dom->createElement('blague');
$auteurTag = $dom->createElement('auteur',$auteur);
$texteTag = $dom->createElement('texte');
$texteCDATA = $dom->createCDATASection($texte);
/* Assemblage */
$texteTag->appendChild($texteCDATA);
$blagueTag->appendChild($auteurTag);
$blagueTag->appendChild($texteTag);
$blagues = $dom->getElementsByTagName('blagues');
$blagues = $blagues->item(0);
$blagues->appendChild($blagueTag);
/* Sauvegarde */
if($dom->save('blagues.xml')) {
echo 'Blague ajoutée';
} else {
echo 'Erreur lors de l\'insertion de la blague';
}
unset($dom);
}
} else {
echo $form;
}
?>
PS: Pour enregistres en UTF-8 avec le Bloc-Notes : Fichiers → Enregistrer sous ... → dans la liste, choisis "Unicode" PS 2 : Pour mettre les droits en écriture avec Filezilla, fait clic-droit puis "Attributs". Ton ordinateur ne fait pas ce que tu veux ... mais ce que tu lui dis de faire.
|
As-tu bien remplis le fichier "blagues.xml" avec ça ? : <?xml version="1.0" encoding="UTF-8"?> <blagues> </blagues>Assures-toi de bien avoir PHP5 sur ton hébergeur (même si il le supporte, beaucoup mettent PHP4 par défaut). : pour le savoir, crées un fichier "phpinfo.php" et mets cette ligne dedans : <?php phpinfo(); ?> Ton ordinateur ne fait pas ce que tu veux ... mais ce que tu lui dis de faire. |
Répondre à avion-f16
|
Le problème, c'est l'encodage de ton fichier .xml
<?xml version="1.0" encoding="UTF-8"?> <blagues> </blagues>2. Fait "Fichier → Enregistrer sous ...", nommes-le "blagues.xml" (mets le nom entre guillemées) et dans la liste "Encodage", choisis "ANSI". Ensuite, upload le nouveau fichier à la place de l'ancien Ton ordinateur ne fait pas ce que tu veux ... mais ce que tu lui dis de faire.
|
Arf, encore erreur de ma part (en te donnant le script, j'ai oublié de corrigé). Voilà le contenu du fichier .xml : <?xml version="1.0" encoding="iso-8859-1"?>
<blagues>
</blagues>En espérent que cette fois soit la bonne
Et voilà le nouveau script qui permet l'insertion, il devrait faire disparaître la notice : <h3>Vous aussi, partagez vos blagues !</h3>
<?php
if(get_magic_quotes_gpc()) {
$_POST = array_map('stripslashes', $_POST);
$_GET = array_map('stripslashes', $_GET);
$_COOKIE = array_map('stripslashes', $_COOKIE);
}
$form = '<form method="post" action="">
<p>
<label for="auteur">Auteur</label>
<input type="text" name="auteur" id="auteur" />
</p>
<p>
<label for="texte">La blague</label>
<textarea name="texte" id="texte" cols="45" rows="8"></textarea>
</p>
<p>
<input type="submit" value="Ajouter" />
<input type="hidden" name="submitBlague" value="true" />
</p>
</form>';
if(isset($_POST['submitBlague'])) {
if($_POST['submitBlague'] == "true") {
$auteur = trim($_POST['auteur']);
$texte = trim($_POST['texte']);
if(empty($auteur) || empty($texte)) {
echo 'Merci de remplir tous les champs !'."\n".$form;
} else {
/* Création de l'objet DOM et chargement du XML actuel */
$dom = new DOMDocument('1.0', 'iso-8859-1');
$dom->load('blagues.xml');
/* Création de la nouvelle blague */
$blagueTag = $dom->createElement('blague');
$auteurTag = $dom->createElement('auteur',$auteur);
$texteTag = $dom->createElement('texte');
$texteCDATA = $dom->createCDATASection($texte);
/* Assemblage */
$texteTag->appendChild($texteCDATA);
$blagueTag->appendChild($auteurTag);
$blagueTag->appendChild($texteTag);
$blagues = $dom->getElementsByTagName('blagues');
$blagues = $blagues->item(0);
$blagues->appendChild($blagueTag);
/* Sauvegarde */
if($dom->save('blagues.xml')) {
echo 'Blague ajoutée';
} else {
echo 'Erreur lors de l\'insertion de la blague';
}
unset($dom);
}
} else {
echo $form;
}
} else {
echo $form;
}
?>
Ton ordinateur ne fait pas ce que tu veux ... mais ce que tu lui dis de faire. |
Répondre à avion-f16
|
Je pense que le problème provennait du fait que j'ai mis "iso-8859-1" quelque-part alors que c'était "ISO-8859-1" (bête erreur, j'ai toujours mis les encodages en majuscule ...).
blagues.php <h3>Partagez vos blagues !</h3> <?php if(get_magic_quotes_gpc()) { $_POST = array_map('stripslashes', $_POST); $_GET = array_map('stripslashes', $_GET); $_COOKIE = array_map('stripslashes', $_COOKIE); } $form = '<form method="post" action=""> <p> <label for="auteur">Auteur</label> <input type="text" name="auteur" id="auteur" /> </p> <p> <label for="texte">La blague</label> <textarea name="texte" id="texte" cols="45" rows="8"></textarea> </p> <p> <input type="submit" value="Ajouter" /> <input type="hidden" name="submitBlague" value="true" /> </p> </form>'; if(isset($_POST['submitBlague'])) { if($_POST['submitBlague'] == "true") { $auteur = trim($_POST['auteur']); $texte = trim($_POST['texte']); if(empty($auteur) || empty($texte)) { echo 'Merci de remplir tous les champs !'."\n".$form; } else { /* Création de l'objet DOM et chargement du XML actuel */ $dom = new DOMDocument('1.0', 'ISO-8859-1'); $dom->load('blagues.xml'); /* Création de la nouvelle blague */ $blagueTag = $dom->createElement('blague'); $auteurTag = $dom->createElement('auteur',$auteur); $texteTag = $dom->createElement('texte'); $texteCDATA = $dom->createCDATASection($texte); /* Assemblage */ $texteCDATA = $texteTag->appendChild($texteCDATA); $auteurTag = $blagueTag->appendChild($auteurTag); $texteTag = $blagueTag->appendChild($texteTag); $blagues = $dom->getElementsByTagName('blagues'); $blagues = $blagues->item(0); $blagueTag = $blagues->appendChild($blagueTag); /* Sauvegarde */ if($dom->save('blagues.xml')) { echo 'Blague ajoutée'; } else { echo 'Erreur lors de l\'insertion de la blague'; } unset($dom); } } else { echo $form; } } else { echo $form; } ?> <h3>Blagues déjà proposées</h3> <?php /* -- Lecture des news -- */ $contenu = file_get_contents('blagues.xml'); $xml = new SimpleXMLElement($contenu); foreach($xml as $blague) { echo '<div class="blague">'."\n". "\t".'<p class="info">Blague déposée par <strong>'.htmlspecialchars(stripslashes($blague->auteur)).'</strong></p>'."\n". "\t".'<p class="texte">'.nl2br(htmlspecialchars(stripslashes($blague->texte))).'<br/>'."\n". '</div>'."\n\n"; } unset($xml);unset($contenu); ?> blagues.xml <?xml version="1.0" encoding="ISO-8859-1"?> <blagues> </blagues>Tu peux voir en ligne → http://fighter-aircraft.com/blagues/blagues.php Ton ordinateur ne fait pas ce que tu veux ... mais ce que tu lui dis de faire. |
Répondre à avion-f16
|