Forums Webou.net - Hébergement gratuit et sans publicités avec PHP/MySQL Webou Webou Pro
Recherche avancée  
*
Bienvenue, Invité. Veuillez vous connecter ou vous inscrire.
Avez-vous perdu votre courriel d'activation?
20 Novembre 2017, 01:40:39


Connexion avec identifiant, mot de passe et durée de la session


Pages: [1] 2   Bas de page
  Imprimer  
Auteur Fil de discussion: Update d'une table dans Mysql  (Lu 4391 fois)
0 Membres et 1 Invité sur ce fil de discussion.
soothsayer
Nouveau
*
Hors ligne Hors ligne

Messages: 42


Voir le profil WWW
« 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é.

Citation
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é.

Code:
mysql_query("UPDATE admin SET right='" . $right . "' WHERE id='" . $id . "'") or die (mysql_error());

Merci d'avance de votre aide. Clin d'oeil
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
Sr. Member
****
Hors ligne Hors ligne

Messages: 433



Voir le profil WWW
« Répondre #1 le: 03 Juillet 2009, 03:39:42 »

Essaye ça :

Code:
$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
Webmaster / Ingénieur Environnement
Bavard
***
Hors ligne Hors ligne

Messages: 109



Voir le profil WWW
« 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 Clin d'oeil elle correspond à quoi?
Journalisée
soothsayer
Nouveau
*
Hors ligne Hors ligne

Messages: 42


Voir le profil WWW
« 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
Sr. Member
****
Hors ligne Hors ligne

Messages: 433



Voir le profil WWW
« Répondre #4 le: 04 Juillet 2009, 02:43:00 »

Alors, essaye de faire un

Code:
echo $query;

pour voir ce qu'il y a dedans.

Ensuite, essaye la requête :

Code:
$queryString = "UPDATE admin SET right='0' WHERE id='36'";
mysql_query($queryString) or die (mysql_error());

Si ça ça marche pas, essaye ça :

Code:
$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
Nouveau
*
Hors ligne Hors ligne

Messages: 42


Voir le profil WWW
« Répondre #5 le: 05 Juillet 2009, 00:02:01 »

Ça ne fonctionne pas...
Journalisée
Coleim
Sr. Member
****
Hors ligne Hors ligne

Messages: 433



Voir le profil WWW
« 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
Nouveau
*
Hors ligne Hors ligne

Messages: 42


Voir le profil WWW
« 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
Sr. Member
****
Hors ligne Hors ligne

Messages: 433



Voir le profil WWW
« 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 :

Code:
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 :

Code:
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
Nouveau
*
Hors ligne Hors ligne

Messages: 42


Voir le profil WWW
« 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 :
Code:
<?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
Sr. Member
****
Hors ligne Hors ligne

Messages: 433



Voir le profil WWW
« Répondre #10 le: 06 Juillet 2009, 04:37:03 »

 Choqu&eacute;

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
Nouveau
*
Hors ligne Hors ligne

Messages: 42


Voir le profil WWW
« Répondre #11 le: 06 Juillet 2009, 04:50:39 »

Merci Clin d'oeil Mais ce qui est bizarre c'est que toute les autres requête Mysql fonctionne même avec le : dans right.
Journalisée
Coleim
Sr. Member
****
Hors ligne Hors ligne

Messages: 433



Voir le profil WWW
« 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 :

Code:
mysql_query("UPDATE admin SET right='" . $right . "' WHERE id='" . $id . "'") or die (mysql_error());

essaye ça :

Code:
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
Bavard
***
Hors ligne Hors ligne

Messages: 141


Voir le profil WWW
« 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

1 c'est bien, 2 c'est mieux Sourire
Site sur la TI-82
Coleim
Sr. Member
****
Hors ligne Hors ligne

Messages: 433



Voir le profil WWW
« 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 !"
Pages: [1] 2   Haut de page
  Imprimer  
 
Aller à:  

Propulsé par MySQL Propulsé par PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Dilber MC Theme by HarzeM
Page générée en 0.035 secondes avec 22 requêtes.