tata2 Posté(e) le 22 décembre 2009 Posté(e) le 22 décembre 2009 Bonjour à tous, Alors voilà j' ai ce code : gestion.php : <?php require('config.php'); mysql_connect(DB_HOST, DB_LOGIN, DB_PASS); mysql_select_db(DB_BDD); echo "Voici toutes les webradios non confirmés :"; echo "<br/>"; echo "<br/>"; $sql= "SELECT * FROM radio WHERE confirmation='0' "; $req=mysql_query($sql) or die ("Erreur SQL ! <br/>".$sql.'<br/>'.mysql_error()); while($data=mysql_fetch_assoc($req)) { echo "{$data['nom']}"; echo " -- <a href=\"{$data['site']}\">{$data['site']}</a>"; echo " -- <a href=\"http://webradios.fr.nf/radio/{$data['url']}.php\"> Allez a la page de la radio </a>"; echo "-- <a href=\"confirmation.php?id={$data['id']}\"> Confirmer la webradio </a>"; echo "<br/>"; } ?> confirmation.php : <?php require('config.php'); mysql_connect(DB_HOST, DB_LOGIN, DB_PASS); mysql_select_db(DB_BDD); $_GET['id']=$id; $sql= 'UPDATE radio SET confirmation="1" WHERE id="$id" '; $req=mysql_query($sql) or die ("Erreur SQL ! <br/>".$sql.'<br/>'.mysql_error()); header("Location: http://webradios.fr.nf/"); ?> Lorsque j' execute le code J' ai bien le get qui marche mais lors de l' execution SQL, rien n' est changer a l' ID du get (11 est mon ID de test)... Donc j' ai tester a la main le code (direct dans phpmyadmin): UPDATE radio SET confirmation="1" WHERE id="11" Et tout marche bien ... Donc je pense qu' il y a un problème a la variable $id, mais je ne le trouve pas, j' ai essayer plusieurs chose qui résulte a un echec ... J' ai essayer genre ceci : <?php require('config.php'); mysql_connect(DB_HOST, DB_LOGIN, DB_PASS); mysql_select_db(DB_BDD); $_GET['id']="$id"; $sql= 'UPDATE radio SET confirmation="1" WHERE id=$id '; $req=mysql_query($sql) or die ("Erreur SQL ! <br/>".$sql.'<br/>'.mysql_error()); header("Location: http://webradios.fr.nf/test/creat/gestion.php"); ?> Mais ce code m' indique : Erreur SQL ! UPDATE radio SET confirmation="0" WHERE id=$id Unknown column '$id' in 'where clause' Merci d' avance,
tsubasaleguedin Posté(e) le 22 décembre 2009 Posté(e) le 22 décembre 2009 j'ai pas lu ton code mais généralement les debutants oublies les strval(int)
tata2 Posté(e) le 22 décembre 2009 Auteur Posté(e) le 22 décembre 2009 Ok je vais essayer merci Mais ce que je ne comprend pas c' est que j' ai exactement le meme code (C/C) sur une autre page qui fait la même chose et sa marche nikel. Je vais essayer avec strval(int) Edit : Cela ne marche pas avec : $sql= 'UPDATE radio SET confirmation="0" WHERE id="strval($id)" ';
tsubasaleguedin Posté(e) le 22 décembre 2009 Posté(e) le 22 décembre 2009 $id=$_GET['id']; $sql= "UPDATE `radio` SET `confirmation`='0' WHERE id='".strval($id)."';";
tata2 Posté(e) le 22 décembre 2009 Auteur Posté(e) le 22 décembre 2009 $id=$_GET['id']; $sql= "UPDATE `radio` SET `confirmation`='0' WHERE id='".strval($id)."';"; Ah Oups Désolé effectivement ça marche mieux avec la concanétation Merci
Amour Posté(e) le 26 décembre 2009 Posté(e) le 26 décembre 2009 Dans l'absolu, la partie suivante n'a aucun intérêt : $id=$_GET['id']; Autant utiliser directement $_GET['id'] Aussi, il serait bon de tester avec isset() si la variable existe avant (ça évite des soucis)
piwi82 Posté(e) le 29 mars 2010 Posté(e) le 29 mars 2010 Dans l'absolu, la partie suivante n'a aucun intérêt : $id=$_GET['id']; Autant utiliser directement $_GET['id'] Aussi, il serait bon de tester avec isset() si la variable existe avant (ça évite des soucis) Bonjour les possiblités d'injection SQL... C'est bien d'attribuer la valeur de _GET['id'] à une variable, mais il faudrait vérifier que cette dernière est valide avant de l'insérer dans une requête. Apparemment il s'agit d'un id, donc d'un nombre entier. Tu peux facilement le vérifier avec la fonction is_int($id) ou une expression régulière comme preg_match('/^[0-9]+$/',$id). Pensez à ne jamais insérer directement des variables PHP dont vous ne maîtrisez pas le contenu dans une requête SQL, c'est l'une des premières source d'attaque d'un site (et ça peut faire très mal)
hollow971 Posté(e) le 27 mai 2010 Posté(e) le 27 mai 2010 Il faut garder les bonnes abitudes !!! <?php if($_GET) { $id = (int) $_GET['id']; } ?>
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.