Php/mysql Afficher ID

Php/mysql Afficher ID - PHP - Programmation

Marsh Posté le 08-12-2004 à 01:32:47    

Bonjour !
 
 
Voilà , imaginons un tableau Mysql du style :
 
      id      nom
       1      orange
       2      poire
       3      cerise
 
 
Comment faire pour que sous php , si je rentre en var le nom style "cerise" sa me dise son id.
 
Qu'importe comment on récupere la varianle du "nom" , ça je sais faire, mais comment afficher son id ... là je sais pas.
 
faudrai une commande du style :  
$lis="select id from table where nom=poire";
$uno=mysql_query($lis):
print ("$uno" );
 
Un truc du genre mais là sa ne marche pas (c'est normal vous me direz)
 
Mais bon comment faire pour afficher l'id d'un champ le constituant ???
 
 
Merci.
 
 
 

Reply

Marsh Posté le 08-12-2004 à 01:32:47   

Reply

Marsh Posté le 08-12-2004 à 02:04:06    

Alors :  
 

Code :
  1. $lis="select id from table where nom=poire";
  2. $uno=mysql_query($lis):
  3. $resultat = mysql_fetch_array($uno);
  4. echo $resultat['id'];


 
;)

Reply

Marsh Posté le 08-12-2004 à 11:19:36    

Attention, quand tu va remplacer poire par ta variable après, pense à rajouter des simple quotes de chaque coté, sinon mysql ne va pas comprendre.
dans une requete, les string doivent etre écris entre quote simple, c'est obligatoire.


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 08-12-2004 à 12:01:39    

nero27 a écrit :

Alors :  
 

Code :
  1. $lis="select id from table where nom=poire";
  2. $uno=mysql_query($lis):
  3. $resultat = mysql_fetch_array($uno);
  4. echo $resultat['id'];


 
;)


 
Au choix :  
 

Code :
  1. $lis="select id from table where nom=poire";
  2. $uno=mysql_query($lis):
  3. $identifiant = mysql_result($uno, 0);


 
(valable si ta requête ne renvoie qu'un seul enregistrement)

Reply

Marsh Posté le 08-12-2004 à 12:11:17    

:heink: mysql_result(); ??
C'est tout mou comme fonction ça! Elle est pas rapide du tout, c'est une fonction(aire) :lol:
nan un bon mysql_fetch_assoc(); ou mysql_fetch_array(), ou mysql_fetch_object(); :love: si tu es chaud!
 
Et oui fais bien attention (Xav_ et nero :jap: ):
$lis="select id from table where nom='" . $fruit . "'";

Reply

Marsh Posté le 08-12-2004 à 12:34:02    

Ca fait une ligne de code en moins :sweat:
 
Soyez cools j'apprends PHP tout seul sans jamais trop chercher l'optimisation :D
 
Et donc, dans le cas d'une requête qui ne renvoie qu'un seul résultat (typiquement un count), tu conseilles quoi ?


Message édité par Fred999 le 08-12-2004 à 12:34:19
Reply

Marsh Posté le 08-12-2004 à 13:34:23    

ben
 

Code :
  1. 1. $lis="select id from table where nom=poire";
  2.    2. $uno=mysql_fetch_object($lis):
  3.    3. echo $uno->id

:wahoo:

Reply

Marsh Posté le 08-12-2004 à 14:06:56    

Ha c'est bien ça :)
 
Merci !

Reply

Marsh Posté le 08-12-2004 à 14:17:17    

Si un seul résultat à coup sur, je rajouterai meme dans la requete un  

Code :
  1. LIMIT 1


 ou

Code :
  1. LIMIT 0,1

pour les puristes
 
Comme ça tu lui dis dès le départ que la requete ne renverra qu'un seul enregistrement (donc dès qu'il est trouvé, MySQL arrete de chercher ;))


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 08-12-2004 à 14:24:30    

+1 pour toi Xav_ !
Optimisé la nickel le LIMIT 0,1
Ca l'fait quand meme mysql_fetch_object();

Reply

Marsh Posté le 08-12-2004 à 14:24:30   

Reply

Marsh Posté le 08-12-2004 à 14:28:57    

bob007 a écrit :

+1 pour toi Xav_ !
Optimisé la nickel le LIMIT 0,1
Ca l'fait quand meme mysql_fetch_object();


 
perso je n'ai jamais utilisé que ça (mysql_fetch_object), mais le plus gros site sur lequel je bosse (celui de mon asso), on est 2 dessus --> l'autre bosse avec un mysql_fetch_array, mais j'aime moins, ça me gonfle quand je dois debbuger ces requetes !!!! (en plus il utilise le n° de colonne plutot que le nom, alors que mysql_fetch_array le gère et que c'est vachement plus parlant)


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 08-12-2004 à 14:59:01    

Topic instructif :)
 
mysql_fetch_object fonctionne donc comme mysql_fetch_array, si ce n'est l'appel des champs par pointeur ?

Reply

Marsh Posté le 08-12-2004 à 14:59:46    

Fred999 a écrit :

Topic instructif :)
 
mysql_fetch_object fonctionne donc comme mysql_fetch_array, si ce n'est l'appel des champs par pointeur ?


http://www.nexen.net/docs/php/anno [...] object.php


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 08-12-2004 à 15:04:49    

OK c'est donc du pareil au même, si ce n'est que ça prend moins de caractères pour écrire :D
 
Merci beaucoup :jap:

Reply

Marsh Posté le 08-12-2004 à 15:52:29    

Merci les gars pour toutes vos réponses , je vais bosser ça !! thank !

Reply

Marsh Posté le 08-12-2004 à 15:54:15    

Ouep c'est cool, parce que lire et relire des sites c'est pas toujours très convivial.
 
Là, j'ai appris deux choses importantes en peu de temps :jap:

Reply

Marsh Posté le 08-12-2004 à 16:37:56    

arretez les jeunes, je vais finir par rougir... ;)


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 08-12-2004 à 16:51:15    

Là j'ai un petit prob, j'ai tapé ça :
 
while($data = mysql_fetch_assoc($rop)){      
$doto=$data['id']-1;      
print ("L'id a été modifié par $doto   " );
$fin="UPDATE test SET id ='doto'";
mysql_query($fin);
}  
 
 
mais sa ne me modifie que mon premier Id dans mon tableau sql , pas les autres ... si qq a la solution :D
 
Merci

Reply

Marsh Posté le 08-12-2004 à 16:53:49    

Abime a écrit :

Là j'ai un petit prob, j'ai tapé ça :
 
while($data = mysql_fetch_assoc($rop)){      
$doto=$data['id']-1;      
print ("L'id a été modifié par $doto   " );
$fin="UPDATE test SET id ='doto'";
mysql_query($fin);
}  
 
 
mais sa ne me modifie que mon premier Id dans mon tableau sql , pas les autres ... si qq a la solution :D
 
Merci


Normal, tu exploses ton curseur $data en faisant une nouvelle requête non?


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 08-12-2004 à 17:11:26    

Xav_ a écrit :

arretez les jeunes, je vais finir par rougir... ;)


 
ouééééé on fait la ola pour Xav_!!
 
OOOOOOOOoooollLLLLLLLaaaaAAaAaaa

Reply

Marsh Posté le 08-12-2004 à 17:17:16    

Xav_ a écrit :

arretez les jeunes, je vais finir par rougir... ;)


 
On dit [:counterslash]
 
Personne connaît ses smileys par coeur ici ? :D
 
Plus sérieusement, j'étais très présent lors de la création de la section
 
http://forum.hardware.fr/forum2.ph [...] 0&subcat=0
 
http://forum.hardware.fr/forum2.ph [...] 0&subcat=0
 
Et je vois que l'ambiance n'a pas changé, c'est cool :)


Message édité par Fred999 le 08-12-2004 à 17:18:39
Reply

Marsh Posté le 08-12-2004 à 18:15:56    

skeye a écrit :

Normal, tu exploses ton curseur $data en faisant une nouvelle requête non?


 
Non non, j'ai déjà fait une requete d'update dans un while sur les élément  d'un SELECT, normalement ça passe.
Par contre, si tu pouvais mettre le code de la requete de sélection... si yen a qu'un de mis à jour, c'est peut etre que la 1ere requete ne t'en renvoi qu'un....


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 08-12-2004 à 19:40:12    

<?php
 
$db = mysql_connect('localhost','xxxxx','xxxxxx');
mysql_select_db('xxxxx_db',$db);    
 
$lis="select id from test where nom='poire'";
$pof=mysql_query($lis);
$resultat = mysql_fetch_assoc($pof);      
$tot = $resultat['id'];              
 
$rap = 'select id from test';      
$rop = mysql_query($rap);
 
 
while($data = mysql_fetch_assoc($rop))      
{      
$doto=$data['id']-1;        
print ("L'id a été modifié par $doto   " );
$fin="UPDATE test SET id ='doto'";
mysql_query($fin);
}  
 
?>
 
 
Voilà mon code en entier.

Reply

Marsh Posté le 08-12-2004 à 19:45:37    

euh je voudrais pas dire de conneries, mais ta table test est structurée comment? Parce-que mettre le même id à tous les enregistrements j'y crois pas trop, on a tendance à obliger l'unicité de ce genre de trucs...[:joce]


Message édité par skeye le 08-12-2004 à 19:45:50

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 09-12-2004 à 00:23:19    

Bha comme marqué dans mon premier message :
 
id  nom
-----------
1 | pomme
2 | poire
3 | abricot
4 | banane

Reply

Marsh Posté le 09-12-2004 à 07:51:44    

Abime a écrit :

Bha comme marqué dans mon premier message :
 
id  nom
-----------
1 | pomme
2 | poire
3 | abricot
4 | banane


Oui, mais quels sont les attributs de tes champs?
Ton ID, ce ne serait pas une clé primaire, par hasard?


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 09-12-2004 à 08:24:14    

Abime a écrit :

Là j'ai un petit prob, j'ai tapé ça :
 
while($data = mysql_fetch_assoc($rop)){      
$doto=$data['id']-1;      
print ("L'id a été modifié par $doto   " );
$fin="UPDATE test SET id ='doto'";
mysql_query($fin);
}  
 
 
mais sa ne me modifie que mon premier Id dans mon tableau sql , pas les autres ... si qq a la solution :D
 
Merci


 
heu c'est pas mieux comme ca ? :
 
while($data = mysql_fetch_assoc($rop)){      
$doto=$data['id']-1;      
print ("L'id a été modifié par $doto   " );
$fin="UPDATE test SET id ='$doto'";
mysql_query($fin);


Message édité par esox_ch le 09-12-2004 à 08:24:34
Reply

Marsh Posté le 09-12-2004 à 13:49:39    

Figure toi que sans le dollar , sa marche , avec sa veut pas , a la base j'avait mis le dollar mais sa ne me faisait rien , et oui tu as raison skeye , mon id est en primaire , sa veut dire quoi au juste primaire ?
 
 
merci

Reply

Marsh Posté le 09-12-2004 à 13:54:09    

Ca veut dire que tu n'as pas le droit d'avoir la même valeur 2 fois.
Hors ton code essaie d'y mettre 'doto', qui est une chaine de caractères (esox_ch a probablement raison, ce que tu veux faire c'est la syntaxe qu'il te donne) fixe d'après ton code.
Donc tu peux le faire une fois sur le premier, mais les suivants vont refuser de prendre la même valeur.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 09-12-2004 à 13:54:25    

Fait voir un echo $fin; avan le mysql_query et regarde ce qui sort, apres , si c'est qqch de plausible ..

Reply

Marsh Posté le 09-12-2004 à 13:55:16    

esox_ch a écrit :

Fait voir un echo $fin; avan le mysql_query et regarde ce qui sort, apres , si c'est qqch de plausible ..


[:benou_jap]
...et ton ID il est de quel type? Chaine de caractères, numérique?


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 09-12-2004 à 15:13:35    

Salut ,
 
alors en mettant un echo $fin sa me donne :  
 
L'id a été modifié par 0 UPDATE test SET id ='doto'
L'id a été modifié par 1 UPDATE test SET id ='doto'
L'id a été modifié par 2 UPDATE test SET id ='doto'
L'id a été modifié par 3 UPDATE test SET id ='doto'  
 
mon id est de type Int.
 
 
voilà voilà.

Reply

Marsh Posté le 09-12-2004 à 15:17:48    

Un int qui vaut doto? Heureusement que PHP/SQL sont souples, en Java tu te serais au minimum fait decapiter :p. Bon je pense que le probleme viens de comment tu as configurer ta table (clef unique,...)

Reply

Marsh Posté le 09-12-2004 à 15:20:31    

Abime a écrit :

Salut ,
 
alors en mettant un echo $fin sa me donne :  
 
L'id a été modifié par 0 UPDATE test SET id ='doto'
L'id a été modifié par 1 UPDATE test SET id ='doto'
L'id a été modifié par 2 UPDATE test SET id ='doto'
L'id a été modifié par 3 UPDATE test SET id ='doto'  
 
mon id est de type Int.
 
 
voilà voilà.


Tu veux vraiment mettre doto partout?[:itm]
Je ne pense pas...essaie avec $doto, pour voir.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 09-12-2004 à 15:59:49    

j'ai essayé avec $doto , et là sa ne me change même plus mon premier enregistrement.  
 
et oui je veux mettre mon doto partout , parceque normalement mon doto change a chaque boucle , y doit me changer mon 1 - 2 - 3 - 4 par un 0 - 1 - 2 - 3.
 
erf je vois pas ce qui coinçe sa m'embête.

Reply

Marsh Posté le 09-12-2004 à 16:01:19    

...et avec $doto, le echo $fin donne quoi?


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 09-12-2004 à 16:07:43    

Je viens de recreer mon champ Id , et maintenant ya du nouveau :
 
si je met le $doto , tous mes champ id sont des '3'.
si j'enleeve le $ et que je met doto , y deviennet tous des '0'
 
lol ...

Reply

Marsh Posté le 09-12-2004 à 16:08:47    

sa deviens :
 
 
L'id a été modifié par 0 UPDATE test SET id ='0'  
L'id a été modifié par 1 UPDATE test SET id ='1'  
L'id a été modifié par 2 UPDATE test SET id ='2'  
L'id a été modifié par 3 UPDATE test SET id ='3'  

Reply

Marsh Posté le 09-12-2004 à 16:10:10    

...et t'as pas l'impression d'avoir oublié un truc?[:mlc]
du style  

Code :
  1. where id = '".$data['id']."'"


Message édité par skeye le 09-12-2004 à 16:11:58

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 09-12-2004 à 16:17:31    

Je te remercie skeye , effectivement sa marche ...
 
c'est vrai que je n'avais pas pensé à ça ...
 
en tout cas merci à tous pour votre aide et surtout a toi skeye  :bounce:  
 
boubye !!

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed