id a l'avance

id a l'avance - PHP - Programmation

Marsh Posté le 14-11-2008 à 11:42:02    

bonjour tous le monde....
 
voila, j'ai une bdd et une table 'clients'....je voudrais afficher le champs 'contact' et je voudrais savoir s'il etait possible d'afficher tous les contacts -a l'aide d'une boucle while- comme ceci
 
Martin-lien-
John-lien-
Jason-lien-
Bobby-lien-
 
 
et que si je clique sur -lien-, ca me retourne a la meme page AVEC l'id du prochain nom....du genre si je clique sur le lien Martin, j'obtiens l'id de John et ainsi de suite....
 
merci beaucoup!  :)

Reply

Marsh Posté le 14-11-2008 à 11:42:02   

Reply

Marsh Posté le 14-11-2008 à 11:44:41    

je ne vois pas le problème.


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

Marsh Posté le 14-11-2008 à 11:49:40    

?
 
 
et bah comment faire pour recuperer l'id du prochain contact avec une boucle while?
 
moi je fais  
while($b=mysql_fetch_array($resultat_sql ))
{
 
$id=$b["id"];
 
$contact=$b["contact"];
 
echo $contact.'<br>';
}
ce qui affiche une liste de contact... et je voudrais qu'a chaque contact, je puisse recuperer l'id du PROCHAIN contact qui suit le contact actuel....
d'ou probleme!
 
donc si j'ai cette liste de contact qui s'affiche,  
Martin-lien-  
John-lien-  
Jason-lien-  
Bobby-lien-  
 
je veux que le lien a cote de martin porte l'id de john, le lien a cote de john porte l'id de jason, le lien a cote de jason porte l'id de bobby etc...


Message édité par kaking le 14-11-2008 à 11:52:02
Reply

Marsh Posté le 14-11-2008 à 11:54:17    

kaking > Quelque soit ton niveau, tu es surement capable de trouver la solution par toi même en décomposant le problème :
1) Dans la boucle, comment est ce que je repère le contact actuel
2) une fois trouvé le contact actuel, comment puis je faire pour indiquer à la boucle que le prochain est celui recherché
 
Une fois que t'auras répondus à ces deux questions t'auras ta solution et tu te demanderas pourquoi tu n'y avais pas pensé plus tôt.

Reply

Marsh Posté le 14-11-2008 à 11:56:35    

omega2 a écrit :

kaking > Quelque soit ton niveau, tu es surement capable de trouver la solution par toi même en décomposant le problème :
1) Dans la boucle, comment est ce que je repère le contact actuel
2) une fois trouvé le contact actuel, comment puis je faire pour indiquer à la boucle que le prochain est celui recherché
 
Une fois que t'auras répondus à ces deux questions t'auras ta solution et tu te demanderas pourquoi tu n'y avais pas pensé plus tôt.


 
...c'est impossible a faire, c'est ca?  :??:

Reply

Marsh Posté le 14-11-2008 à 12:08:38    

omega2 a écrit :

kaking > Quelque soit ton niveau, tu es surement capable de trouver la solution par toi même ...


kaking a écrit :


 
...c'est impossible a faire, c'est ca?  :??:

Il me semblait pourtant avoir dit clairement que c'est possible.
 
Je sais bien qu'on utilise facilement l'ironie par moment mais sans smilie, c'est rarement le cas. ;)

Reply

Marsh Posté le 14-11-2008 à 13:55:34    

mmmmmh.... la vraiment je vois pas -a mon avis je n'est pas ete assez explicite pour vous decrire mon probleme....
 
 
reprenons :
 
je fais de l'ajax : quand je clique sur un contact, hop une fiche apparait au milieux de l'ecran avec tous les details du contact en question.... et je voudrais que sur cette fiche il y ai le lien suivant pour que quand je clique dessus, la fiche correspondant au contact suivant apparaissent a la place de la fiche actuelle....
 
alors voila le code qui affche la page appelée via ajax :

Code :
  1. <script type="text/javascript">
  2. function makeRequest2(id) {
  3.         var xhr;
  4.         if(window.XMLHttpRequest || window.ActiveXObject) {
  5.                 if(window.XMLHttpRequest) {
  6.                         xhr = new XMLHttpRequest();
  7.                 }
  8.                 else {
  9.                         try {
  10.                                 xhr = new ActiveXObject("Msxml2.XMLHTTP" );
  11.                         } catch(e) {
  12.                                 xhr = new ActiveXObject("Microsoft.XMLHTTP" );
  13.                         }
  14.                 }
  15.         }
  16.         else {
  17.                 alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest..." );
  18.                 return;
  19.         }
  20.        
  21.         xhr.onreadystatechange = function() {
  22.                 if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {      
  23.       document.getElementById("apDiv21" ).innerHTML = xhr.responseText;
  24.       mouseClic('onglet4');
  25.                 }
  26.         }
  27.        
  28.      
  29.         xhr.open("GET", "id_modif.php?id=" + id + "", true);
  30.         xhr.send(null);
  31.        
  32. }</script>
  33. <table><?php
  34. //ma requete est inscrite dans deux tables  
  35. $query=mysql_query("select * from req" )or die(mysql_error());
  36. $fetchy=mysql_fetch_array($query)or die(mysql_error());
  37. $resultat_sql=mysql_query($fetchy['req1'].' '.$fetchy['req2'])or die(mysql_error());
  38. while($b=mysql_fetch_array($resultat_sql ))
  39. {
  40. ?><tr>
  41.   <td><input type="button" onclick="<?php echo 'makeRequest2(\''.$b['id'].'\')';?>" value="<?php echo $b["contact"];?>" />
  42.  
  43.   <td><font size="-1"><?php echo $b["adresse"];?></font></td>
  44.   <!-- et y a encore plein d'autres cellules-->
  45. </tr> <?php
  46. }
  47. ?>
  48. </table>
  49. <br>
  50. <table border="1" bgcolor="#ccccff"><tr><td> <div id="apDiv21"></div></td></tr></table>


 
et ca c'est la page appelée, la page id_modif, qui s'affiche si on appuie sur le bouton contact :

Code :
  1. <?php
  2. $i=$_GET['id'];
  3. mysql_connect("localhost","root","" );
  4.         mysql_select_db("" );
  5. $a=mysql_query("select * from clients where id='$i'" );
  6.   $b=mysql_fetch_array($a);
  7. ?>
  8. <table border="1" height='378' width="900" bgcolor="#CCFFFF"><th colspan="4" height="23" bgcolor="#CCCCCC" ><?php $cont=$b['contact'];echo $cont;?></th>
  9. <th width="257" bgcolor="#CCCCCC" >BLOC NOTE</th>
  10. <tr><td width="149" height="42" bgcolor="#CCCC99">adresse :</td>
  11. <td width="144" bgcolor="#e7f5fb"></select>
  12.   <input type="text" value="<?php echo $b['adresse'];?>" name="adresse" /></td><!-- et y a encore plein d autres champs-->
  13. <!-- et c est ici que je voudrais mettre un lien 'suivant' permettant d'afficher les
  14. informations de l'id suivant. pour ca, il faut envoyer deux
  15. parametres a la fonction makeRequest2() : l'id du contact sur lequel
  16. on a cliqué ET l'id suivant....mais ca je sais pas comment faire!
  17. ha ouais mais nan! meme comme ca ca sera pas bon because que ca marchera une fois mais la deuxieme fois qu'on appuiera sur 'suivant',
  18. et bah on aura pas l'id suivant vu qu'on aura pas cliqué sur le bouton utilisant la fonction makerequest
  19. je sais pas comment faire...


 
 
et voilou!
 
la ca parait pas aussi simple non? parceque si ca vous parait encore basic ce que je vous  
demande, ca veut dire que j'ai raté une marche et
que je suis une grosse quiche affligeante qui demande humblement votre pardon.
 
'oilou! merci pour ceux qui repondront  :)


Message édité par kaking le 14-11-2008 à 14:08:54
Reply

Marsh Posté le 16-11-2008 à 10:03:50    

J AI TROUVEEEEEEE!!!!!!
apres 2 jours de travail acharnés et de recherche dans les vieux grimoires informatiques, j'ai enfin trouvé la soluce : prendre la requete enregistrée dans la bdd et faire ceci :
 
 

Code :
  1. $i=$_GET['id'];
  2. $query=mysql_query("select * from req" )or die(mysql_error());
  3. $fetchy=mysql_fetch_array($query)or die(mysql_error());
  4. $were=$fetchy['req1'];
  5. //echo $were;
  6. if ((preg_match("#WHERE#", $were)) ||(preg_match("#where#", $were)) )
  7. {
  8. $where='AND id > '.$i.' LIMIT 0,1';
  9. }
  10. else
  11. {
  12. $where='where id > '.$i.' LIMIT 0,1';
  13. }
  14. $query=mysql_query("select * from req" )or die(mysql_error());
  15. $fetchy=mysql_fetch_array($query)or die(mysql_error());
  16. //echo $fetchy['req1'].' '.$where;
  17. $resultat_sql=mysql_query($fetchy['req1'].' '.$where)or die(mysql_error());
  18. $gb=mysql_fetch_array($resultat_sql );
  19. $idsuiv=$gb['id'];

et 'oilou!
 
ca me donne l'id suivant!
 
merci ! ++

Reply

Marsh Posté le 17-11-2008 à 09:34:39    

Ça m'a l'air bien compliqué, ton truc. [:petrus75]  
 
Si tu veux l'id suivant c'est que tu veux, pour chaque id, les infos précédentes...


Message édité par sielfried le 17-11-2008 à 09:34:48

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 17-11-2008 à 09:37:43    

oui mais c est je pense la seule maniere d'avoir l'id suivant alors qu'on est encore dans la boucle-donc que le mysql_fetch_array ne soit pas encore a l'id que je veux selectionner....
 
^^

Reply

Marsh Posté le 17-11-2008 à 09:37:43   

Reply

Marsh Posté le 17-11-2008 à 09:43:05    

Et un truc comme ça ?
 

Code :
  1. while ($client = mysql_fetch_object($res)) {
  2.  // Là tu as $client->id et $client_precedent, qui n'est pas définie si t'es sur le premier
  3.  $client_precedent = $client;
  4. }


Message édité par sielfried le 17-11-2008 à 09:45:55

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 17-11-2008 à 09:57:23    

ha ouais mais pour avoir l'id qui SUIT? pas le precedent mais le suivant?
 
ma methode a l'air bien...

Reply

Marsh Posté le 17-11-2008 à 09:58:42    

kaking a écrit :

ha ouais mais pour avoir l'id qui SUIT? pas le precedent mais le suivant?

 

ma methode a l'air bien...

 

réfléchis 2 minutes...si au lieu d'afficher les infos du courant tu affiches celles du précédent, est-ce que par hasard le courant ne serait pas le suivant de celui qui tu affiches?[:joce]

 

Ta méthode est très très moche.:o


Message édité par skeye le 17-11-2008 à 09:59:19

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

Marsh Posté le 17-11-2008 à 09:59:55    

Dans mon exemple $client->id est bien l'id qui suit $client_precedent. Juste que t'es censé travailler sur $client_precedent au lieu de travailler sur le client sur lequel t'es en train de boucler.
 
edit: ouais, valà. :o


Message édité par sielfried le 17-11-2008 à 10:01:24

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 17-11-2008 à 10:19:00    

ha ouaiiiiiiiiiiis  :pfff:  
 
bon bon, je m'tais....merci beaucoup, c est sympa,j'ai compris!  :D !


Message édité par kaking le 17-11-2008 à 10:20:24
Reply

Sujets relatifs:

Leave a Replay

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