OVH Cloud OVH Cloud

navigation mysql

3 réponses
Avatar
Jacques
Bonjour à tous,

Je cherche à créer un formulaire basé sur une table MySql.

Je voudrais que ce formulaire affiche par défaut le premier enregistrement
de la table ET pouvoir naviguer d'un enregistrement à l'autre avec des
boutons "Suivant", "Précédent" etc...

C'est cette navigation qui me pose problème.

Ne trouvant pas d'exemple sur le web, je me pose la question si cela est
bien possible.

J'ai bien la solution de créer un cookie contenant la clé courante et d'en
tenir compte par la suite mais si la table est importante cela risque de
ramer.

Avez vous des idées pour m'aider.

Merci d'avance pour votre aide

Jacques

3 réponses

Avatar
Guillaume Bouchard
Jacques wrote:
Je voudrais que ce formulaire affiche par défaut le premier enregistrement
de la table ET pouvoir naviguer d'un enregistrement à l'autre avec des
boutons "Suivant", "Précédent" etc...


Donc au depart, tu selectiones tes infos de cette façon

SELECT ... FROM table ORDER BY ... LIMIT 1

Non ?
Il te suffit de jouer avec la clause LIMIT debut,nombre

Donc quelque chose du genre

<?php

// En toute rigueur, on devrais tester si 0 <= page <= max
if(isset($_POST['page']) && is_numeric($_POST['page'])){
$nb = $_POST['page'];
} else {
$nb = 0;
}



$sql = "SELECT ... FROM table ORDER BY ... LIMIT $nb,1";

?>

C'est cette navigation qui me pose problème.


Pour la navigation, à toi de faire un button qui envoie vers page=nb-1
et l'autre vers page=nb+1 en faisant bien attention à ne pas obtenir de
nb <= 0 ou > ton_max.

Ne trouvant pas d'exemple sur le web, je me pose la question si cela est
bien possible.


Tous est possible, sauf de depasser la vitesse de la lumière et ont n'en
ai pas encore certain ;o)

--
Guillaume.

Avatar
John Gallet
Bonjour,

Je voudrais que ce formulaire affiche par défaut le premier enregistrement
de la table ET pouvoir naviguer d'un enregistrement à l'autre avec des
boutons "Suivant", "Précédent" etc...


Plusieurs méthodes sont détaillées sur la FAQ de ce forum :
http://faqfclphp.free.fr/ chapitre 8.
HTH
JG

Avatar
Bruno Baguette

Jacques wrote:
[--SNIP--]

<?php

// En toute rigueur, on devrais tester si 0 <= page <= max
if(isset($_POST['page']) && is_numeric($_POST['page'])){
$nb = $_POST['page'];
} else {
$nb = 0;
}


Au lieu d'utiliser is_numeric() - qui accepte également les nombres
indiqués en hexadécimal - ne serait-il pas préférable d'utiliser les
fonctions C ctype_* (http://php.belnet.be/manual/en/ref.ctype.php) ?

Dans ce cas ci, ce serait plutôt la fonction ctype_digit() qu'il faudrait
utiliser, sauf erreur de ma part.

Cordialement,

--
----------------------------------------
Bruno Baguette -

Build A Brighter Lamp :: Linux Apache {middleware} PostgreSQL