soothsayer
|
 |
« le: 03 Juillet 2009, 02:59:28 » |
|
Salut! Je suis actuellement entrain de faire une section d'administration pour mon site. Je suis rendu a faire le système qui gère les administrateurs. Mais lorsque je modifie les paramètres d'un admin ce message est affiché. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'right='0:0' WHERE id='36'' at line 1 mais je n'arrive pas a trouver mon erreur... Voici la requête Mysql que j'ai utilisé. mysql_query("UPDATE admin SET right='" . $right . "' WHERE id='" . $id . "'") or die (mysql_error()); Merci d'avance de votre aide. 
|
|
|
Journalisée
|
|
|
|
Forums Webou.net - Hébergement gratuit et sans publicités avec PHP/MySQL
|
 |
« le: 03 Juillet 2009, 02:59:28 » |
|
|
|
|
Journalisée
|
|
|
|
Coleim
|
 |
« Répondre #1 le: 03 Juillet 2009, 03:39:42 » |
|
Essaye ça : $queryString = "UPDATE admin SET right='" . $right . "' WHERE id='" . $id . "'"; mysql_query($queryString) or die (mysql_error());
|
|
|
Journalisée
|
"Kirby, c'est le seul héros qui sauve le monde en voulant récupérer son gâteau à la fraise !"
|
|
|
Neiflheim
|
 |
« Répondre #2 le: 03 Juillet 2009, 13:29:32 » |
|
la syntaxe à l'air juste, il me semble que c'est ta variable $right qui pose un souci  elle correspond à quoi?
|
|
|
Journalisée
|
|
|
|
soothsayer
|
 |
« Répondre #3 le: 03 Juillet 2009, 18:28:45 » |
|
Coleim, ça affiche la même chose qu'avant.
La variable $right vaut 0:0 mais je ne crois pas que ce soit ça le problème car je suis capable de l'insérer dans la table mais ça ne marche pas pour l'updater.
|
|
|
Journalisée
|
|
|
|
Coleim
|
 |
« Répondre #4 le: 04 Juillet 2009, 02:43:00 » |
|
Alors, essaye de faire un echo $query; pour voir ce qu'il y a dedans. Ensuite, essaye la requête : $queryString = "UPDATE admin SET right='0' WHERE id='36'"; mysql_query($queryString) or die (mysql_error()); Si ça ça marche pas, essaye ça : $queryString = 'UPDATE admin SET right=\'0\' WHERE id=\'36\''; mysql_query($queryString) or die (mysql_error()); Et dis moi.
|
|
|
Journalisée
|
"Kirby, c'est le seul héros qui sauve le monde en voulant récupérer son gâteau à la fraise !"
|
|
|
Forums Webou.net - Hébergement gratuit et sans publicités avec PHP/MySQL
|
 |
« Répondre #4 le: 04 Juillet 2009, 02:43:00 » |
|
|
|
|
Journalisée
|
|
|
|
soothsayer
|
 |
« Répondre #5 le: 05 Juillet 2009, 00:02:01 » |
|
Ça ne fonctionne pas...
|
|
|
Journalisée
|
|
|
|
Coleim
|
 |
« Répondre #6 le: 05 Juillet 2009, 03:23:56 » |
|
Qu'est ce qui ne fonctionne pas?
C'est quoi le résultat de echo $query?
|
|
|
Journalisée
|
"Kirby, c'est le seul héros qui sauve le monde en voulant récupérer son gâteau à la fraise !"
|
|
|
soothsayer
|
 |
« Répondre #7 le: 05 Juillet 2009, 05:00:22 » |
|
C'est la requête Mysql qui ne fonctionne pas. Peut importe ce que j'essaye c'est toujours le même message d'erreur qui apparaît mais avec l'id qui change ou la valeur de right. Le résultat de $query c'Est : UPDATE admin SET right='0:1' WHERE id='8'
|
|
|
Journalisée
|
|
|
|
Coleim
|
 |
« Répondre #8 le: 05 Juillet 2009, 12:26:02 » |
|
Dans ce cas, si l'update ne fonctionne pas, et ce quel que soit la requête, même avec ça : UPDATE admin SET right='2' WHERE id='8'; Nous faudrait un peux plus de code avant? Tu t'es bien connecté à la base? Essaye sans le where sinon : UPDATE admin SET right='2'; Si ça, ça marche vraiment pas, le problème est ailleurs. Mais je vois pas trop. Ton champ right existe bien dans la table? Ta table admin existe?
|
|
|
Journalisée
|
"Kirby, c'est le seul héros qui sauve le monde en voulant récupérer son gâteau à la fraise !"
|
|
|
soothsayer
|
 |
« Répondre #9 le: 06 Juillet 2009, 03:05:05 » |
|
Ça ne fonctionne toujours pas. Tout le reste de mon code fonctionne sauf la requête Mysql UPDATE. Le INSERT et le DELETE fonctionnent correctement... Voici tout le code de ma page : <?php // Pour ne pas afficher sans inlude dans une page. $str = str_replace('\\', '/', __FILE__); if($_SERVER['SCRIPT_FILENAME'] == $str) { header('Location: /'); exit; } // On décompose le cookie. $data = explode('&', $_COOKIE['admin']); // On décompose Right. $right = explode(':', $data[2]); if($right[0] != 1) { header('Location: /'); exit; } mysql_connect("localhost", "***********", "************"); mysql_select_db("sooth_BDD"); // On supprime un admin. if(isset($_GET['supprimer_admin'])) { // On demande de supprimer un admin mysql_query("DELETE FROM admin WHERE id='" . $_GET['supprimer_admin'] . "'"); header('Location: ?page=admin'); }
// On modifie un admin. if(isset($_GET['modifier_admin'])) { // On demande de modifier un admin. // On récupère les infos de l'admin correspondant. $admin_mod = mysql_query("SELECT * FROM admin WHERE id='" . $_GET['modifier_admin'] . "'"); $array_mod = mysql_fetch_array($admin_mod); $id_mod = $array_mod['id']; $login_mod = $array_mod['login']; }
if(empty($_POST['id']) == false) { function right($right) { if($right == 'on') { // On regarde si la checkbox a été coché. return $right = 1; // Elle a été coché et on lui donne la valeur 1. } else { return $right = 0; // Elle n'a pas été coché et on lui donne la valeur de 0. } } $admin_right = right($_POST['admin']); // On change la valeur de la variable. $news = right($_POST['news']); // On change la valeur de la variable. $right = $admin_right . ':' . $news; // On met les rights dans une chaîne. $id = $_POST['id']; mysql_query("UPDATE admin SET right='" . $right . "' WHERE id='" . $id . "'") or die (mysql_error()); } // On ajoute un admin if(isset($_POST['login']) AND isset($_POST['mdp']) AND isset($_POST['mdp2'])) { $login = $_POST['login']; $md5login = md5($_POST['login']); // On code le login. $mdp = md5($_POST['mdp']); // On code le pot de passe. $mdp2 = md5($_POST['mdp2']); // On code le 2e mot de passe function right($right) { if($right == 'on') { // On regarde si la checkbox a été coché. return $right = 1; // Elle a été coché et on lui donne la valeur 1. } else { return $right = 0; // Elle n'a pas été coché et on lui donne la valeur de 0. } } $right = right($_POST['admin']) . ':' . right($_POST['news']); // On change la valeur des variables et on les met dans une chaîne. if($mdp == $mdp2) { // On vérifie si les 2 mots de passe entrés sont identiques. $admin_login = mysql_query("SELECT COUNT(*) AS nb_admin FROM admin WHERE login='$login'"); $donnees_login = mysql_fetch_array($admin_login); if($donnees_login['nb_admin'] == 0) { // Les mots de passe sont identiques et on regarde si le login choisit existe déjà. mysql_query("INSERT INTO admin VALUES('', '" . $login . "', '" . $md5login . "', '" . $mdp . "', '" . $right . "')"); // Il n'existe pas et on l'ajoute à la BD. } else { echo '<p>Le login existe déjà</p>'; // Il existe. } } else { // Les deux mots de passe ne sont pas identiques. echo '<p>Les mots de passe entrés ne sont pas identiques.</p>'; } } // On affiche les admins. ?> <table border="2"> <tr> <th>Supprimer</th> <th>Modifier</th> <th>Login</th> <th>Droits</th> </tr> <?php $admin = mysql_query('SELECT * FROM admin ORDER BY id'); while ($donnees = mysql_fetch_array($admin)) { ?> <tr> <td><?php echo '<a href="?page=admin&modifier_admin=' . $donnees['id'] . '">'; ?>Modifier</a></td> <td><?php echo '<a href="?page=admin&supprimer_admin=' . $donnees['id'] . '">'; ?>Supprimer</a></td> <td><?php echo $donnees['login']; ?></td> <td><?php echo $donnees['right']; ?></td> </tr> <?php } mysql_close(); ?> </table> <h3>Ajouter un admin</h3> <form action="?page=admin" method="POST"> <input type="hidden" name="id" value="<?php echo $id_mod; ?>"> <label for="login">Login : </label><input type="text" name="login" value="<?php echo $login_mod; ?>" <?php if(isset($id_mod)) { echo 'readonly'; } ?>><br> <?php if(empty($id_mod)) { echo '<label for="mdp">Mot de passe : </label><input type="password" name="mdp"><br> <label for="mdp2">Vérification du mdp : </label><input type="password" name="mdp2"><br>'; } ?> <label for="admin">Autoriser admin? </label><input type="checkbox" name="admin"><br> <label for="news">Autoriser news? </label><input type="checkbox" name="news"><br> <input type="submit" value="Enregistrer"> </form>
|
|
|
Journalisée
|
|
|
|
Coleim
|
 |
« Répondre #10 le: 06 Juillet 2009, 04:37:03 » |
|
 Bah écoute, la aux vue de ton truc, je suppose que les : doivent peut être causer un problème, mais tu me dis qu'en mettant autre chose, ça marche ... Donc j'en ai foutrement aucune idée. Ton code m'a l'air plus que correct.
|
|
|
Journalisée
|
"Kirby, c'est le seul héros qui sauve le monde en voulant récupérer son gâteau à la fraise !"
|
|
|
soothsayer
|
 |
« Répondre #11 le: 06 Juillet 2009, 04:50:39 » |
|
Merci  Mais ce qui est bizarre c'est que toute les autres requête Mysql fonctionne même avec le : dans right.
|
|
|
Journalisée
|
|
|
|
Coleim
|
 |
« Répondre #12 le: 06 Juillet 2009, 07:15:09 » |
|
Ah, je viens de remarquer que la requête update est aussi la seule ou tu met "or die" A la place de ça : mysql_query("UPDATE admin SET right='" . $right . "' WHERE id='" . $id . "'") or die (mysql_error()); essaye ça : mysql_query("UPDATE admin SET right='" . $right . "' WHERE id='" . $id . "'");
|
|
|
Journalisée
|
"Kirby, c'est le seul héros qui sauve le monde en voulant récupérer son gâteau à la fraise !"
|
|
|
clemgaut
|
 |
« Répondre #13 le: 06 Juillet 2009, 10:31:05 » |
|
or die(mysql_error()); sert à afficher les erreurs de la requete donc normalement ça ne fais pas bugger la requete (enfin chez moi non).
|
|
|
Journalisée
|
|
|
|
Coleim
|
 |
« Répondre #14 le: 06 Juillet 2009, 11:58:28 » |
|
Je sais bien, mais à part ça, je vois pas du tout d'ou ça peut venir. Si t'as une idée.
|
|
|
Journalisée
|
"Kirby, c'est le seul héros qui sauve le monde en voulant récupérer son gâteau à la fraise !"
|
|
|
|