Page 1 sur 1

Problème script modification de news.

Posté : 13 févr. 2011, 03:18
par aurel80
Bonsoir,

J'essaie de faire un script news,problème c'est mon premier script de modification dite moi toutes mes erreurs merci :
<?php

require('include/mysql.php');

if (isset($_GET['modifier_news']))
{
    $_GET['modifier_news'] = htmlentities($_GET['modifier_news']);
    $retour = $bdd->prepare('SELECT * FROM news WHERE id = :modifier_news');
	$retour->execute(array('modifier_news' => $_GET['modifier_news']));
    
    $titre = stripslashes($donnees['titre']);
    $texte_news = stripslashes($donnees['texte_news']);
    $id_news = $donnees['id'];
}
while ($donnees = $retour->fetch())
{
?>
<form action="index.php?page=update-news" method="post" />
<label>Auteur :</label><br />
<input type="text" name="autheur" value="<?php echo $autheur ?>"/><br />
<label>Titre de la news :</label><br />                            
<input type="text" name="titre" value="<?php echo $donnees['titre'] ?>" /><br />
<label>texte de la news :</label><br />
<textarea name="texte_news" cols="57" rows="10">
<?php echo $texte_news ?>
</textarea>
<input type="submit" value="    Poster la news     " />
<input type="reset" value="    réecrire la news    " />
</form>
<?php
}
?>

Re: Problème script modification de news.

Posté : 13 févr. 2011, 11:57
par xTG
$_GET['modifier_news'] = htmlentities($_GET['modifier_news']);
Ceci ne sert à rien.
On utilise une telle fonction lors d'un affichage et non lors de l'envoi en base de donnée.

Re: Problème script modification de news.

Posté : 13 févr. 2011, 12:19
par Ryle
En complément tu as également quelques petites erreurs de conception, pas méchants, mais puisque tu demandes les erreurs :) :

- Si jamais la variable $_GET['modifier_news'] n'est pas définie, tu ne vas pas rentrer dans le if(), et tu n'exécuteras donc pas la requête. Pourtant juste après, requête ou pas tu vas faire un while pour parcourir les résultats de la requête, ce qui peut engendrer une erreur puisque $retour ne sera peut être pas défini.

- Second point, d'après ta requête sql, on peut supposer que celle-ci ne doit retourner qu'un seul enregistrement (celui dont l'id est passé en paramètre). Du coup il n'est pas nécessaire de "boucler" sur l'ensemble des résultats retournés avec un while. Un simple if() pour tester qu'il y a bien un résultat ferait tout aussi bien l'affaire, voire même, si tu es certains qu'il y aura toujours un résultat trouvé, un simple appel au fetch.
C'est vraiment du détail, mais ça permet de comprendre plus facilement ton code (surtout pour celui qui reviendra dessus dans 6 mois, et qui pourrait très bien être toi ;)) parce que là, mon premier réflexe, c'est de me dire que tu as un formulaire html dans une boucle while, et donc que tu veux afficher plusieurs formulaires sur ta page, alors que ça ne sera à priori jamais le cas :)

Re: Problème script modification de news.

Posté : 14 févr. 2011, 03:31
par aurel80
je vous redonne le code re-fait le voici :
<fieldset>
<?php

require('include/mysql.php');

if (isset($_GET['modifier_news']))
{
    $_GET['modifier_news'] = htmlentities($_GET['modifier_news']);
    $retour = $bdd->prepare('SELECT * FROM news WHERE id = :modifier_news')
	or die(print_r($bdd->errorInfo()));
	$retour->execute(array('modifier_news' => $_GET['modifier_news']));
    
    $titre = stripslashes($donnees['titre']);
	$autheur = stripslashes($donnees['autheur']);
    $texte_news = stripslashes($donnees['texte_news']);
    $id_news = $donnees['id'];
	
} else {

    $titre = stripslashes($donnees['titre']);
	$autheur = stripslashes($donnees['autheur']);
    $texte_news = stripslashes($donnees['texte_news']);
    $id_news = $donnees['id'];
	
    $retour = $bdd->prepare('UPDATE news SET titre = :titre, autheur = :autheur, texte_news = :texte_news WHERE id = :id_news')
	or die(print_r($bdd->errorInfo()));
	$retour->execute(array('titre' => $titre,
						    'autheur' => $autheur,
							'texte_news' => $texte_news));

}
while ($donnees = $retour->fetch())
{
?>
<form action="index.php?page=update-news" method="post" />
<label>Auteur :</label><br />
<input type="text" name="autheur" value="<?php echo $donnees['autheur'] ?>"/><br />
<label>Titre de la news :</label><br />                            
<input type="text" name="titre" value="<?php echo $donnees['titre'] ?>" /><br />
<label>texte de la news :</label><br />
<textarea name="texte_news" cols="57" rows="10">
<?php echo $donnees['texte_news'] ?>
</textarea>
<input type="submit" value="    Poster la news     " />
<input type="reset" value="    réecrire la news    " />
</form>
<?php
}
?>
</fieldset>