petit problème avec update

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : petit problème avec update

par Truc » 11 janv. 2006, 01:04

sinon, j'ai rajouté le echo $sql; dans mon script et le programme affiche une page blanche avec ceci

UPDATE membres SET vie = vie+0.1 WHERE pseudo=''
et donc la variable $login ne contient rien ici et donc la requete ne peut effectuer la mise à jour sauf si le champ login est vide !!!
Pour finir, je ne suis pas sur d'avoir saisi ta derniere question.....
le $login est valable pour tous les pseudos qui pourraient etre rentrés par les membres.
pour l'instant y'en a qu'un, le mien dont je me sers pour tester en direct chez mon hébergeur.
donc tu as ton pseudo il faudrait que la variable $login contient ton login pour que la requete effectuée la mise à jour sur tes données.

Mais avec l'id c'est encore mieux :wink:

par YVES » 11 janv. 2006, 00:00

Trouvé !!!!

et honnetement, a force de tester :shock:

j'ai mis simplement ........... WHERE id=$id

:wink:

par YVES » 10 janv. 2006, 23:49

Je vais p-etre dire une anerie , mais ca ne serait pas à cause du fait que le fameux $login (celui du membre) est aussi et en meme temps dans une session active et en cours?
(revoir mon script ci dessus) :roll: :oops:

par YVES » 10 janv. 2006, 23:41

J'ai tapé cela dans php mysql
requête SQL:

"UPDATE membres SET vie = vie+0.1 WHERE pseudo='".$login. "'"

MySQL a répondu:Documentation
#1064 - 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 '"UPDATE membres SET vie = vie+0.1 WHERE pseudo='". $login ."'"'

sinon, j'ai rajouté le echo $sql; dans mon script et le programme affiche une page blanche avec ceci

UPDATE membres SET vie = vie+0.1 WHERE pseudo=''

Pour finir, je ne suis pas sur d'avoir saisi ta derniere question.....
le $login est valable pour tous les pseudos qui pourraient etre rentrés par les membres.
pour l'instant y'en a qu'un, le mien dont je me sers pour tester en direct chez mon hébergeur.

par Truc » 10 janv. 2006, 00:34

Hum... :-k

affiche la requete générée avec un echo :
echo $sql;
ensuite fait un copier/coller dans phpmyadmin pour verifier l'exécution.

sinon question bete as tu un membre avec ce pseudo ?

par YVES » 10 janv. 2006, 00:22

de là ...........


if(isset($_POST['pseudo']))$login=addslashes($_POST['pseudo']);
else $login="";

ensuite elle est en session (et fonctionne)

$login = $_POST['pseudo']; puis


$_SESSION['pseudo'] = $login;

le pseudo du visiteur s'affiche bien quand je fais un echo





[/php]

par Truc » 09 janv. 2006, 23:51

d'où sort la variable "$login"

par YVES » 09 janv. 2006, 23:23

Mince, ca ne fonctionne toujours pas: aucun message d'erreur mais le champ "vie" ne s'incrémente pas de +0.1 :cry:

par Cyrano » 08 janv. 2006, 00:30

Essaye en modifiant un brin ta requête:
$sql = "UPDATE membres SET vie = vie+0.1 WHERE pseudo='". $login ."'";
(sans les apostrophes)

par YVES » 08 janv. 2006, 00:03

<?php
session_start() ;
?>
<?php
$db= mysql_connect(localhost, zzzz, zzzz) or die("Impossible de se connecter à la base de données"); 	   
 mysql_select_db('zzzz',$db)  or die('Erreur de selection base'.mysql_error());
$sql = "UPDATE membres SET vie= 'vie+0.1' WHERE pseudo='$login'";
mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
mysql_close();
?> 

la table en voilà 1 bout, désolé si c'est pas tres "lisible"...




id int(10) Non auto_increment
pseudo varchar(60) Non
passe varchar(7) Non
email varchar(60) Non
date_inscri timestamp(14) Oui NULL
age smallint(3) Non 0
sexe char(1) Non H
avatar varchar(250) Non ./avatars/avx.gif
allopass char(3) Non non
statut varchar(20) Non citoyen lambda
gestion varchar(250) Non ./images/jetonvert.gif deplacement varchar(250) Non ./images/jetonvert.gif action varchar(250) Non ./images/jetonvert.gif situation varchar(50) Non en chemin
salaire int(5) Non 0
billet int(10) Non 1000
emprunt int(10) Non 0
compte int(10) Non 0
vie decimal(5,1) Non 3.0

par Cyrano » 07 janv. 2006, 23:50

Fais voir la structure de ta table et ton code modifié ? :-k

par YVES » 07 janv. 2006, 23:45

comment pourrais-je connaitre l'id du visiteur?!

J'ai rajouté la clause WHERE suivie de:

pseudo='$login'

$_SESSION['pseudo']

pseudo = $_SESSION['pseudo']

idem avec id et $_SESSION ['id'] :?

en ces cas là, message d'erreur ou alors l'entrée "vie" de la base ne s'incrémente plus du tout.

par Cyrano » 07 janv. 2006, 22:56

Il manque une clause WHERE identifiant précisément une ligne de la table. Sans cette clause, toutes les lignes seront traitées également.

Donc :

Code : Tout sélectionner

UPDATE table SET champ = 'valeur' WHERE identifiant = 'id_xyz';

petit problème avec update

par YVES » 07 janv. 2006, 22:53

Bonjour,

J'utilise un update qui fonctionne parfaitement mais le problème c'est qu'il marche pour tous les membres de la table...
Comment faire pour que ce ne soit que le membre en cours validant l'action qui soit seulement concerné :shock:
J'ai testé avec le login et meme la session mais ca ne fonctionne pas.
Voici le code:
<?php
session_start() ;
?>
<?php
$db= mysql_connect(localhost, zzzz, zzzz) or die("Impossible de se connecter à la base de données"); 	   
 mysql_select_db('zzzz',$db)  or die('Erreur de selection base'.mysql_error());
$sql = "UPDATE membres SET vie= vie+0.1";
mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
mysql_close();
?>