[ PHP MySQL ] Acces au prochain enregistrement ?

Acces au prochain enregistrement ? [ PHP MySQL ] - PHP - Programmation

Marsh Posté le 17-06-2002 à 17:28:58    

Voila, j'ai une table avec un id en autoincrement cependant il peut y avoir des trous c a dire
 
1
2
3
5
6
7
 
comme vous voyez entre 3 et 5 le 4 n'existe pas
alors y a til une methode pour avoir acces au prochain sans avoir a passé par l'id
 
c a dire si je suis sur le 3 lui dire d'alle sur le prochain et pas sur le 3+1 vu qu'il nexiste pas ?
 
je sais pas si jai été clair, mais bon j'espere que vous pourrez m'aider


---------------
Oui je sais, je suis une merde en orthographe et alors ? Altcoin list: https://docs.google.com/spreadsheet [...] =286417424
Reply

Marsh Posté le 17-06-2002 à 17:28:58   

Reply

Marsh Posté le 17-06-2002 à 17:32:53    

C koi ta requète ?
Tu fais comment pour accéder à tes données MySQL ?

Reply

Marsh Posté le 17-06-2002 à 17:33:07    

Ben... Généralement quand tu fais une requête sur les tuples, tu récupères une référence sur l'ensemble des réponses à cette requêtes. En général tu parse cet ensemble sans faire attention à l'id. Enfin, ce que je veux dire c'est que ce n'est pas un problème.


---------------
Le site de ma maman
Reply

Marsh Posté le 17-06-2002 à 17:38:01    

Moi non plus c pour ça que je pose les questions car je vois pas comment il accède aux données
moi je fous un while($data= mysql_fetch_array($le_resultat_de_la_requete))

Reply

Marsh Posté le 17-06-2002 à 17:41:15    

Je@nb a écrit a écrit :

Moi non plus c pour ça que je pose les questions car je vois pas comment il accède aux données
moi je fous un while($data= mysql_fetch_array($le_resultat_de_la_requete))  



Pareil que toi. Sincèrement je vois pas son problème. A moins qu'il ne fasse la technique du gros sale...

Code :
  1. for ($id = 0; $id < IDMAX; $id++) {...}


---------------
Le site de ma maman
Reply

Marsh Posté le 17-06-2002 à 17:46:59    

lol je savais même pas que ça existait

Reply

Marsh Posté le 17-06-2002 à 17:48:57    

Je@nb a écrit a écrit :

lol je savais même pas que ça existait  



C'est une nouvelle feature du forum. Ca fait qu'une semaine mais c'est bien pratique.


---------------
Le site de ma maman
Reply

Marsh Posté le 17-06-2002 à 17:51:12    

non non ça je c lol je parle de la structure de aprcours d'id.

Reply

Marsh Posté le 17-06-2002 à 23:02:39    

et bien j'ai une requete sur un systeme de news :
 
et je fait un
while (list($contenu,$titre,$id)=mysql_fetch_array($resultat))
 
bien et ce que je veut c que cette requete qui recupere mes news, j'aimerais passé d'une news à l'autre cependant si j'applique le systeme simple, je me trouve avec des pages cassé
 
vous comprenez ?


Message édité par massanu le 17-06-2002 à 23:05:03
Reply

Marsh Posté le 18-06-2002 à 11:07:24    

bonjour


---------------
Oui je sais, je suis une merde en orthographe et alors ? Altcoin list: https://docs.google.com/spreadsheet [...] =286417424
Reply

Marsh Posté le 18-06-2002 à 11:07:24   

Reply

Marsh Posté le 18-06-2002 à 11:29:33    

massanu a écrit a écrit :

et bien j'ai une requete sur un systeme de news :
 
et je fait un
while (list($contenu,$titre,$id)=mysql_fetch_array($resultat))
 
bien et ce que je veut c que cette requete qui recupere mes news, j'aimerais passé d'une news à l'autre cependant si j'applique le systeme simple, je me trouve avec des pages cassé
 
vous comprenez ?  



Non, pas un mot. C'est quoi une page cassée ?


---------------
Le site de ma maman
Reply

Marsh Posté le 18-06-2002 à 11:30:21    

Cherrytree a écrit a écrit :

Non, pas un mot. C'est quoi une page cassée ?  




 
Un page cassée, c une page qui n'a pas d'ID, du coup, rien ne d'affiche :)


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
Reply

Marsh Posté le 18-06-2002 à 11:31:21    

Max Evans a écrit a écrit :

 
 
Un page cassée, c une page qui n'a pas d'ID, du coup, rien ne d'affiche :)  



Je ne connaissais pas ce problème. Une page qui n'a pas d'ID c'est quoi ? (Je suis sérieux, j'ai l'impression d'être dans la 4è dimension).


---------------
Le site de ma maman
Reply

Marsh Posté le 18-06-2002 à 11:48:33    

bah c tout a fait simple a comprendre
 
jai un systeme de news qui passe d'une news a l'autre avec un bouton suivant
donc tu passe en parametre l'id de la news
 
1 -> 2 -> 3 -> 4 etc...
 
cependant si la news 3 n'existe pas ca donne  
 
1 -> 2 ->  -> 4
ca fait un trou te donc rien ne s'affiche ca casse le systeme
 
understand ?
 
donc je voulais savoir si ya pas une maniere de passé au prochain enregistrement sans passé par son id


---------------
Oui je sais, je suis une merde en orthographe et alors ? Altcoin list: https://docs.google.com/spreadsheet [...] =286417424
Reply

Marsh Posté le 18-06-2002 à 13:42:11    

Ben ouais, enfin... il me semble que tu dois faire une requête dont tu parses les réponses (avec un while) tant qu'il y en a. C'est sur les réponses que tu parses, pas sur l'id. J'ai pas de codes sous la main (ça fait 3 mois que j'ai pas fait de PHP), mais c'est la méthode que tu dois suivre. Si qqn peut mettre du code pour te montrer, et ben ce sera cool.


---------------
Le site de ma maman
Reply

Marsh Posté le 18-06-2002 à 14:00:21    

Quand tu cherches à afficher la news d'ID n° N, il faut que dans ta requête tu mettes "where ID>=N " et " LIMIT 0,1 ". Ca te ramèneras la prochaine news existante.
pour conaitre le numéro de la news qui a été trouvé, n'oublis pas de le ramener dans le résultat de la requête et de créé lesliens de ta page a partir de ce numéro là et non pas à partir du numéro qui a servi à afficher la page.

Reply

Marsh Posté le 18-06-2002 à 23:42:16    

et comment peut on recuperer le plus grand
 
SELECT MAX(id) FROM....
 
mais je veut recuperer le resultat dans une variable pour qu'il soit utilisable dans le reste de la page
 
comment faire ?


---------------
Oui je sais, je suis une merde en orthographe et alors ? Altcoin list: https://docs.google.com/spreadsheet [...] =286417424
Reply

Marsh Posté le 18-06-2002 à 23:55:53    

massanu a écrit a écrit :

et comment peut on recuperer le plus grand
 
SELECT MAX(id) FROM....
 
mais je veut recuperer le resultat dans une variable pour qu'il soit utilisable dans le reste de la page
 
comment faire ?  



Ben comme d'hab. Ta requête, tu la soumets et tu retire le résultat :??:

Code :
  1. $result = mysql_query($query);
  2. $row = mysql_fetch_row($result);


 
Ce code n'est pas top propre, mais bon ça illustre le truc. Qu'est ce qui te bloque ?


---------------
Le site de ma maman
Reply

Marsh Posté le 19-06-2002 à 11:47:46    

ce qui me cloquais c que l'id max nest pas egale au nombre de row retourné par la requete ;-(
 
donc j'ai fait 2 while imbriqué, ca a l'air de marché pour l'instant
 
merci pour toutes vos aides


---------------
Oui je sais, je suis une merde en orthographe et alors ? Altcoin list: https://docs.google.com/spreadsheet [...] =286417424
Reply

Marsh Posté le 19-06-2002 à 23:57:29    

1. Très important mais je pense que ça doit déjà être fait : ton ID doit être PRIMARY KEY (et pas simplement UNIQUE).
 
2. Pour avoir l'enregistrement ayant l'id max :

Code :
  1. SELECT * FROM matable ORDER BY ID DESC LIMIT 1


 
3. Pour le nombre d'enregistrements :

Code :
  1. SELECT COUNT(*) AS cpt FROM matable


 
4. Pour le problème de pages cassées :

Code :
  1. $result = mysql_query("SELECT * FROM matable WHERE ID>=$N ORDER BY ID DESC LIMIT 1" );

puis pour le lien

Code :
  1. $res = mysql_fetch_object($resultat);
  2. $N = $res->ID;
  3. $lien = "nexpage.php?N=$N";


Message édité par Dost67 le 19-06-2002 à 23:59:14
Reply

Marsh Posté le 20-06-2002 à 01:13:03    

En fait ça sert à quoi UNIQUE ? J'ai vu que Primary key en cours.


---------------
Le site de ma maman
Reply

Marsh Posté le 21-06-2002 à 00:42:24    

merci mon cher
ca aidera ce qui conaisse pas certains trucs de base
 
unique c comme sont nom l'indique, a etre une clé unique lol


---------------
Oui je sais, je suis une merde en orthographe et alors ? Altcoin list: https://docs.google.com/spreadsheet [...] =286417424
Reply

Marsh Posté le 21-06-2002 à 00:48:51    

Ben ouais, mais je vois pas à quoi ça peut servir. J'ai besoin que de clés primaires dans mes tables.


---------------
Le site de ma maman
Reply

Marsh Posté le 21-06-2002 à 00:55:04    

Dost67 a écrit a écrit :

1.  
 
4. Pour le problème de pages cassées :

Code :
  1. $result = mysql_query("SELECT * FROM matable WHERE ID>=$N ORDER BY ID DESC LIMIT 1" );

puis pour le lien

Code :
  1. $res = mysql_fetch_object($resultat);
  2. $N = $res->ID;
  3. $lien = "nexpage.php?N=$N";

 




 
Ya un truc
ca marche pas cette portion de code
 
pour la page suivante je met  
 

Code :
  1. $id_suiv=$id++;


 
et ca marche pour le lien suivant ca evite les page cassé
par contre pour les pages précedentes ca marche pas, ca regle pas les pages cassé, mais bon c deja pas mal comme résultat
 
quand je met
 

Code :
  1. $res = mysql_fetch_object($resultat);
  2. $id_suiv=$res->id


 
mon $id_suiv ne prend aucune valeur, bizarre...


---------------
Oui je sais, je suis une merde en orthographe et alors ? Altcoin list: https://docs.google.com/spreadsheet [...] =286417424
Reply

Marsh Posté le 21-06-2002 à 10:51:29    

C'est normal ça fonctionne pas je me suis planté dans les variable : $result et $resultat c'est les mêmes !!!!!!
 
Sinon évite le $id_suiv++ et utilise plutôt $id_suiv = $res->id comme j'ai dit parce que sinon :
1 > 2 > 3 > > > 6
Quand t'es à 3 ça va t'afficher le 6 et $id vaudra 4 mais après $id vaudra 5 et t'affichera encore 6...
 
Faudrait aussi transmettre une autre variable dans l'URL, par exemple nextpage.php?$down_or_up=down pour savoir si la requête SQL est WHERE ID>=N (si faut monter) ou WHERE ID<=N (si faut descendre).

Reply

Marsh Posté le 21-06-2002 à 10:55:23    

Cherrytree a écrit a écrit :

Ben ouais, mais je vois pas à quoi ça peut servir. J'ai besoin que de clés primaires dans mes tables.  



Le UNIQUE, ca sert juste à éviter qu'il y ai deux fois la même valeur dans la colone qui est mise en UNIQUE.

Reply

Marsh Posté le 21-06-2002 à 12:03:02    

omega2 a écrit a écrit :

Le UNIQUE, ca sert juste à éviter qu'il y ai deux fois la même valeur dans la colone qui est mise en UNIQUE.  



OK.


---------------
Le site de ma maman
Reply

Marsh Posté le 21-06-2002 à 15:55:06    

Dost67 a écrit a écrit :

C'est normal ça fonctionne pas je me suis planté dans les variable : $result et $resultat c'est les mêmes !!!!!!
 
Sinon évite le $id_suiv++ et utilise plutôt $id_suiv = $res->id comme j'ai dit parce que sinon :
1 > 2 > 3 > > > 6
Quand t'es à 3 ça va t'afficher le 6 et $id vaudra 4 mais après $id vaudra 5 et t'affichera encore 6...
 
Faudrait aussi transmettre une autre variable dans l'URL, par exemple nextpage.php?$down_or_up=down pour savoir si la requête SQL est WHERE ID>=N (si faut monter) ou WHERE ID<=N (si faut descendre).  




 
ok jessaye l'object $id_suiv=$res->$id
 
javais pensé a down et tup , donc je vais reflechir au probleme et je vous tiens au courant
 
jpense que ce systeme pourra en aidé plus d'un car je pense pas etre le premier a vouloir affiché les enws par page
 
merci les copaing ;-) :jap:


---------------
Oui je sais, je suis une merde en orthographe et alors ? Altcoin list: https://docs.google.com/spreadsheet [...] =286417424
Reply

Marsh Posté le 21-06-2002 à 18:08:49    

Je viens de penser à quelque chose :

Code :
  1. SELECT * FROM matable ORDER BY id DESC LIMIT $id_suiv,1


 
Dans le cas 1 > 2 > 3 > > > 6 > 7, si tu demandes le 0 ça affiche le 1, si tu demandes le 2 ça t'affiche 3, si tu demandes le 3 ça affiche le 6, si tu demandes le 4 ça affiche le 7, etc.
 
Le seul problème c'est que $id_suiv et le vrai id dans la table ne correspondent plus.


Message édité par Dost67 le 21-06-2002 à 18:10:57
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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