Page 1 sur 1

problème synthaxe?

Posté : 13 mars 2011, 18:32
par roberta
Bonjour,

j'ai un petit problème avec ce script, j'aimerais récupérer l'id de l'utilisateur qui s'est logger et rentrer dans la base l'instant de la connexion.
J'ai donc réaliser ce bout de code :

Code : Tout sélectionner

session_start(); //on démarre une session $_SESSION['name'] = $name; // récupère le login $query1="select iduser from authorized_users where name='$name'"; $result1= mysqli_query($mysql,$query1); //recupère l'ID de l'utilisateur if(!$result1) { echo 'Cannot run query.'; exit; } $query2="UPDATE authorized_users SET date1 = NOW( ) WHERE iduser ='".$result1."'"; //met à jour date1 , qui correspond à la date et l'heure de la dernière connexion de l'utilisateur $result2 = mysqli_query( $mysql, $query2 );
ce script me donne l'erreur suivante : "Catchable fatal error: Object of class mysqli_result could not be converted to string in C:\XXXX\www\xxx\xxx.php on line 72

La ligne 72 correspond à la requête $query2... et l'erreur se trouve au niveau de $result1... lorsque je lui met une valeur fixe par exemple iduser=1 le script fonctionne.

Merci d'avance pour vos remarques.

Re: problème synthaxe?

Posté : 13 mars 2011, 18:34
par Berzemus
problème synthaxe?
Oui, c'est "syntaxe" :mrgreen:

La programmation, c'est comme l'orthographe, mais en pire.

Re: problème synthaxe?

Posté : 13 mars 2011, 18:48
par roberta
oui...effectivement... #-o

Re: problème synthaxe?

Posté : 13 mars 2011, 19:40
par moogli
salut,

a priori tu ne sais pas exploiter le retour de mysqli_query, tu ne peut l'employer ainsi, et c'est ce que t'indique php avec ton message d'erreur (il essai mais ne peux pas convertir un jeux de données en chaine de caractère ;)

je te conseil de regarder mysqli_fetch_assoc qui devrait grandement t'aider à exploiter tous ça ;)


@+

Re: problème synthaxe?

Posté : 13 mars 2011, 21:09
par roberta
merci pour cette remarque,

mais à moins que je ne comprenne pas mon code, $result1 renvoi une seule donnée l'ID soit un nombre entier et non un jeu de données.
l'utilisation de mysqli_fetch_assoc est-elle indispensable?

et dans ce cas comment l'utiliser?

Code : Tout sélectionner

$row=mysqli_fetch_assoc($result1); $query2="UPDATE authorized_users SET date1 = NOW( ) WHERE iduser ='".$row[0]."'"; $result2 = mysqli_query( $mysql, $query2 );


ne marche pas, je n'ai pas de message d'erreur, mais cela ne met pas la base à jour.

Re: problème synthaxe?

Posté : 13 mars 2011, 21:12
par xTG
Regardes la documentation de la fonction...
Cela te renvoie une ressource, cette ressource doit être interprétée (mysqli_fetch_assoc) !

Re: problème synthaxe?

Posté : 13 mars 2011, 21:31
par moogli
merci pour cette remarque,

mais à moins que je ne comprenne pas mon code, $result1 renvoi une seule donnée l'ID soit un nombre entier et non un jeu de données.
l'utilisation de mysqli_fetch_assoc est-elle indispensable?
oui oui tu ne comprend pas ton code ;)

mysql_fetch_assoc est indispensable (a moins que tu ne préfère fetch_objet, fetch_array etc).

suis le conseil de xTG et lien de mon message précédent ;)

@+

Re: problème synthaxe?

Posté : 13 mars 2011, 22:20
par roberta
Bon voilà la solution :priere: , la doc m'a bien aidée en effet, j'ai pu trouver ce code :
session_start(); //on démarre une session
		$_SESSION['name'] = $name; //la variable de session $_SESSION['user'] récupère le login saisi
		$query1="select iduser from authorized_users where name='$name'"; 
		$result1= mysqli_query($mysql,$query1); //recupère l'ID de l'utilisateur
		if(!$result1)
		{	
			echo 'Cannot run query.';
		exit;
		}
		$row=mysqli_fetch_row($result1);
		$query2="UPDATE authorized_users SET date1 = NOW( ) WHERE iduser ='".$row[0]."'"; //met à jour date1 , qui correspond à la date et l'heure de la dernière connexion de l'utilisateur
		$result2 = mysqli_query( $mysql, $query2 ); 
			if(!$result)
			{
				echo 'Cannot run query.';
			exit;
			}
		mysqli_free_result($result1);
ce code fonctionne également avec la fonction mysqli_fetch_array() ... Avec mysql_fetch_assoc il faut remplacer '".$row[0]."' par '".$row['iduser']"' dans mon cas. Il est effectivement utile de comprendre la différence entre un tableau associatif et un tableau indexé retourné.
Merci pour les différentes réponses de chacun d'entre vous.

Un jour peut-être je comprendrais ce que je fais. #-o