Page 1 sur 1

modifier news

Posté : 05 nov. 2009, 03:50
par koliom
Bonjour,

sur mon script de news, la fonction modifier n'est pas prise en compte.

Je suis parti comme ça:
dans redige_news:

j'ai mis:
$id_news = 0; // pas une modif.
<input type="hidden" name="id_news" value="<?php echo $id_news; ?>" />
puis dans news.php
if (isset($_POST['titre']) AND isset($_POST['contenu']) AND isset($_POST['journee']))
{
    $titre = addslashes($_POST['titre']);
    $contenu = addslashes($_POST['contenu']);
	$journee = addslashes($_POST['journee']);
	$match = addslashes($_POST['match']);
	   // On vérifie si c'est une modification de news ou pas
    if ($_POST['id_news'] == 0)
    {
        
        mysql_query("INSERT INTO news VALUES('', '" . $titre . "', '" . $contenu . "', '" . $journee . "', '" . $match ."')");
    }
    else
    {
        
        $_POST['id_news'] = addslashes($_POST['id_news']);
        // modification
        mysql_query("UPDATE news SET titre='" . $titre . "', contenu='" . $contenu . "', journee='" . $journee . "', match='" . $match . "' WHERE id='" . $_POST['id_news'] . "'");
    }																				   

}

Et là quand je veux modifier, on dirait que ma requete n'est pas prise en compte

Re: modifier news

Posté : 05 nov. 2009, 12:09
par fab
Pour un champ de type INTEGER il ne faut pas l'entouré de '
Par contre attention du coup aux failles d'injection SQL vérifie bien que le contenu de $_POST['id_news'] est numérique à l'aide de is_numeric() :)

Re: modifier news

Posté : 05 nov. 2009, 21:34
par koliom
slt

id-news est numerique.

En changeant la requete en :
mysql_query("UPDATE news SET titre=" . $titre . ", contenu=" . $contenu . ", journee=" . $journee . ", match=" . $match . " WHERE id=" . $_POST['id_news'] . "");
idem comme si il ne reconnaissait pas id_news :x

Re: modifier news

Posté : 05 nov. 2009, 22:09
par Aureusms
Et si tu fais un echo de la requete avant pour voir id id_news est valide ou non ?
<?php
else
    {       
        $id_news = addslashes($_POST['id_news']);
        // modification
       $requete = "UPDATE news SET titre='" . $titre . "', contenu='" . $contenu . "', journee='" . $journee . "', match='" . $match . "' WHERE id='" . $id_news. "'";
       echo $requete;
       if (is_numeric($id_news)) mysql_query($requete);
    }
?>
Cela donne quoi ?

Re: modifier news

Posté : 06 nov. 2009, 01:17
par koliom
J'ai bien le

WHERE id='17'

J'avoue sécher completement dessus.

Un exemple: j'ai
UPDATE news SET titre='aaadaa', contenu=' aaaaaaaaa ', journee='aa', match=' aaaaaaaaaaaaaaaaaaaa ' WHERE id='18'
Mais elle n'est pas prise en compte

Re: modifier news

Posté : 06 nov. 2009, 14:46
par Aureusms
Je vois deux choses :

Cela peux venir du mysql_query si l'identifiant sql est HS.
Pour rappel : resource mysql_query ( string $query [, resource $link_identifier ] ). Aussi comme tu ne précises pas le $link_identifier dans ton cas, il se peut (mais il faudra tester) qu'il ne soit pas renseigner. Et donc normalement tu devrais avoir un WARNING sauf si ton contrôle d'erreurs ne le précises pas.

Cela peut être dû à l'id lui même... Tu me dis que il t'affiches bien WHERE id='17' mais tu marques WHERE id='18';
Essayes cela :
<?php
$requete = "SELECT titre, contenu, journee, match FROM news WHERE id='18' LIMIT 1";
$resultat_sql = mysql_query ($requete) or die('Requête invalide : ' . mysql_error());
if (mysql_num_rows($resultat_sql) != 0)
{
  $resultat = mysql_fetch_row($resultat_sql);
  $titre= $resultat[0];
  $contenu = $resultat[1];
  $journee = $resultat[2];
  $match = $resultat[3];
  echo "titre = ".$titre." - contenu = ".$contenu." - journee = ".$journee." - match = ".$match."<br />";

 $requete = "UPDATE news SET titre='aaadaa', contenu=' aaaaaaaaa ', journee='aa', match=' aaaaaaaaaaaaaaaaaaaa ' WHERE id='18'";
 mysql_query ($requete) or die('Requête invalide : ' . mysql_error());

 /*ou sinon essayes
 $requete = "UPDATE news SET titre='aaadaa' WHERE id='18'";
 mysql_query ($requete) or die('Requête invalide : ' . mysql_error());
 $requete = "UPDATE news SET contenu=' aaaaaaaaa ' WHERE id='18'";
 mysql_query ($requete) or die('Requête invalide : ' . mysql_error());
 $requete = "UPDATE news SET journee='aa' WHERE id='18'";
 mysql_query ($requete) or die('Requête invalide : ' . mysql_error());
 $requete = "UPDATE news SET match=' aaaaaaaaaaaaaaaaaaaa ' WHERE id='18'";
 mysql_query ($requete) or die('Requête invalide : ' . mysql_error()); */
}
else
{
  echo "problème : ligne inexistante";
}