Parcourir les enregistrements d'une table par un bouton next

Résolu/Fermé
arij223 Messages postés 14 Date d'inscription mercredi 15 avril 2015 Statut Membre Dernière intervention 24 avril 2015 - 15 avril 2015 à 13:50
arij223 Messages postés 14 Date d'inscription mercredi 15 avril 2015 Statut Membre Dernière intervention 24 avril 2015 - 17 avril 2015 à 12:58
Bonjour,

J'ai créé une page html ou y'a du code php pour effectuer les traitements ,cependant ma page affiche bien les valeurs de la première ligne de ma table dans les input ça me permet aussi de modifier les info des champs et cela s'effectue aussi sur ma BDD. (jusque là cava :D) le problème est que puisque ma table contiens plusieurs lignes (enregistrements) j'aimerais passer à la prochaine ligne en appuyant sur un bouton "suivant" par exemple ,qui me permettra d'afficher la même page qu'au départ à condition que les input contiennent les valeurs de la deuxième ligne de ma table . voilà je ne sais pas si j'étais assez claire ça parait un peu compliqué surtout que je suis débutante en php . j'ai beau cherché sur internet , mais rien ne marche

Merci pour toute aide ou idée
A voir également:

2 réponses

ludo1325 Messages postés 149 Date d'inscription samedi 27 juin 2009 Statut Membre Dernière intervention 23 juin 2015 33
15 avril 2015 à 19:49
Salut,

Donc résumons la chose,
tu affiche un formulaire avec dans tes input les valeurs d'une ligne retourné par une requête SQL ?

Tu voudrais ensuite, quand on clique sur un bouton next, affiche le même formulaire avec dedans, les valeurs de la ligne suivante ?
3
arij223 Messages postés 14 Date d'inscription mercredi 15 avril 2015 Statut Membre Dernière intervention 24 avril 2015 34
16 avril 2015 à 00:21
Ouii exactement ludo , d'abord j'ai essayé avec une boucle for , ensuite j'ai vu pour les curseur comme en VB mais rien ne marche soit ça m'affiche une erreur soit rien ne se passe je n'ai vrm aucune idée si tu peux me proposé une methode avec laquelle commencer je pourrais essayé de developper sa solution encore merci pour ton passage ;)
0
ludo1325 Messages postés 149 Date d'inscription samedi 27 juin 2009 Statut Membre Dernière intervention 23 juin 2015 33
16 avril 2015 à 09:40
Il suffit de passer dans l'url un paramètre ($_GET) et d'ajouter à ta requete un LIMIT un peu comme les système de pagination.

Par exemple imaginons que t'as table contiennent des pages, donc les champs récupérés en base seront : id, name, content et la table s'appelle pages

quand tu arrive la premiere fois sur ta page, le paramètre est inexistant, donc on va récupérer le premier enregistrement.

$sql = 'SELECT * FROM pages LIMIT 0,1';

Quand tu clique sur next ton url devient,
http://monsite.web.com/page.php?p=1 || p=1 étant le paramètre en question

Alors la requête devient, $sql = 'SELECT * FROM pages LIMIT 1,1'
Ensuite encore une fois sur next, et la requête : $sql = 'SELECT * FROM pages LIMIT 2,1'

Tu changes le premier paramètre du limit, selon ce qui est envoyé dans la variable $_GET['p'] et les valeurs dans le input vont donc changer car ce sera l'entrée suivante en base qui sera récupérée !

Je sais pas si c'est super clair, dit moi pour la suite !
0
arij223 Messages postés 14 Date d'inscription mercredi 15 avril 2015 Statut Membre Dernière intervention 24 avril 2015 34
16 avril 2015 à 12:41
Ouiii c'est très clair ludo impec :D , j'ai cherché sur net à propos de ce système de pagination , j'ai fais un test ça marche les enregistrements changent a chaque clic de pages et la modification aussi s'effectue sur chaque enregistrement sélectionné.
le seul petit souci c'est que prenons l'exemple que je me trouve sur la page 3 et que je modifie des infos sur cette page , ensuite quand il m'arrive de cliquer sur le bouton modifier , la page revient automatiquement sur la toute première et ne reste pas sur la 3 à moins que je ne décide de passer à une autre ,c'est ce qui m'agace un peu :/ aurais-tu une idée de comment faire ?

Merci mille fois pour l'intérêt que tu porte à mon poste :)
0
ludo1325 Messages postés 149 Date d'inscription samedi 27 juin 2009 Statut Membre Dernière intervention 23 juin 2015 33
16 avril 2015 à 13:47
Quand tu clique sur ton bouton modifier, il te suffit de repasser dans l'url le paramètre $_GET['p'].

La méthode la plus simple, et qu'une fois le traitement de tes données terminé, il te suffit de rediriger sur l'url ou tu était, donc tu continue à faire passer le paramètre $_GET['p'] partout.

Pour ce faire, une fois le traitement de tes données terminé, tu rajoute dans ton code un : header('location: index.php?p='.$_GET['p']); et ça redirigera sur le bon lien.

Pas de soucis ! :)
0
arij223 Messages postés 14 Date d'inscription mercredi 15 avril 2015 Statut Membre Dernière intervention 24 avril 2015 34 > ludo1325 Messages postés 149 Date d'inscription samedi 27 juin 2009 Statut Membre Dernière intervention 23 juin 2015
Modifié par arij223 le 16/04/2015 à 15:46
Huum je ne veux pas être lourde désolée ^^" mais ne crois pas avoir compris comment ou alors ce que je met est faux ,attend voici le code php que j'utilise et tu me diras ce qui ne va pas dedans :s

<?php

mysql_connect('localhost', 'root', '');
mysql_select_db('test');

$messagesParPage=1;

if (isset($_POST['submit']) && $_POST['submit'] == "Modifier")
{

$num_serie=htmlentities(trim($_POST['num_serie']));
$nom_materiel=htmlentities(trim($_POST['nom_materiel']));
$designation=htmlentities(trim($_POST['designation']));


$sql1 = "UPDATE materiel SET num_serie ='$num_serie', nom_materiel ='$nom_materiel', designation ='$designation' where num_serie='$num_serie'";

$req=mysql_query($sql1) or die(mysql_error());

}

$retour_total=mysql_query('SELECT COUNT(*) AS total FROM matable');
$donnees_total=mysql_fetch_assoc($retour_total);
$total=$donnees_total['total'];


$nombreDePages=ceil($total/$messagesParPage);

if(isset($_GET['page']))
{
$pageActuelle=intval($_GET['page']);

if($pageActuelle>$nombreDePages)
{
$pageActuelle=$nombreDePages;
}
}
else
{
$pageActuelle=1; // La page actuelle est la n°1
}

$premiereEntree=($pageActuelle-1)*$messagesParPage;

// On calcul la première entrée à lire


$retour_messages=mysql_query('SELECT * FROM matable ORDER BY num_serie ASC LIMIT '.$premiereEntree.', '.$messagesParPage.'');

while($donnees=mysql_fetch_assoc($retour_messages))

{
?>

<form method="POST" action="modif_traitement.php" name="f1">
numero de serie :</font> <input type="text" name="mum_serie" value="<?php echo $donnees['num_serie']; ?>">
Materiel : <input type="text" name="nom_materiel" value="<?php echo $donnees['nom_materiel']; ?>"> </br>
Designation: <input type="text" name="designation" value="<?php echo $donnees['designation']; ?>">

</br><input type="submit" value="Modifier" name="submit">

<input type="submit" name="submit" value="Suivant"/>

</form>

<?php
}

echo '<p align="center">Page : ';

for($i=1; $i<=$nombreDePages; $i++)
{

if($i==$pageActuelle) //Si il s'agit de la page actuelle...
{
echo ' [ '.$i.' ] ';
}
else //Sinon...
{
echo ' <a href="modif_traitement.php?page='.$i.'">'.$i.'</a> ';

}
}
echo '</p>';


?>


j'ai cherché un peu j'ai pu trouver cet exemple sur internet , sauf le truc qui fait que quand je modifie, ça ne reste pas sur la même page mais ça reviens à la toute première , Encore merci
0
arij223 Messages postés 14 Date d'inscription mercredi 15 avril 2015 Statut Membre Dernière intervention 24 avril 2015 34
17 avril 2015 à 12:58
Merci à ludo1325 pour sa réponse ! ça marche à présent voici le code :

<?php

$driver = 'mysql';
$host = 'localhost';
$dbname = 'nombasededonne';
$login = 'root';
$passwd = '';
$dsn = $driver.':host='.$host.';dbname='.$dbname;
$bdd = new PDO($dsn, $login, $passwd);
$bdd->exec("SET CHARACTER SET utf8");


if (isset($_POST['submit']) && $_POST['submit'] == "Modifier"){
$id = htmlentities(trim($_POST['id']));
$num_serie=htmlentities(trim($_POST['num_serie']));
$nom_materiel=htmlentities(trim($_POST['nom_materiel']));
$designation=htmlentities(trim($_POST['designation']));

$bdd->query("UPDATE matable SET num_serie = '".$num_serie."', nom_materiel = '".$nom_materiel."', designation = '".$designation."' WHERE id = '".$id."'");
}
$messagesParPage = 1;
$retour_total = $bdd->query('SELECT COUNT(*) AS total FROM matable')->fetch()[0];
$nombreDePages = ceil($retour_total/$messagesParPage);
if(isset($_GET['page'])) {
$pageActuelle = intval($_GET['page']);

if($pageActuelle > $nombreDePages){
$pageActuelle = $nombreDePages;
}
}else{
$pageActuelle = 1;
}
$premiereEntree=($pageActuelle-1)*$messagesParPage;

$donnees = $bdd->query('SELECT * FROM matable ORDER BY num_serie DESC LIMIT '.$premiereEntree.', '.$messagesParPage.'')->fetch(PDO::FETCH_ASSOC);
?>
<form method="POST" action="votrepagedetraitement.php?<?php if(isset($_GET['page'])) echo 'page='.$_GET['page']; ?>" name="f1">

numero de serie :</font> <input type="text" name="mum_serie" value="<?php echo $donnees['num_serie']; ?>">
Materiel : <input type="text" name="nom_materiel" value="<?php echo $donnees['nom_materiel']; ?>"> </br>
Designation: <input type="text" name="designation" value="<?php echo $donnees['designation']; ?>">

</br><input type="submit" value="Modifier" name="submit">

<input type="hidden" name="id" value="<?php echo $donnees['id']; ?>">

</form>

<?php

echo '<p align="center">Page : ';

for($i = 1; $i <= $nombreDePages; $i++)
{
if($i == $pageActuelle)
{

if($pageActuelle > 1)
{
echo '<a href="votrepagedetraitement.php?page='.($pageActuelle - 1).'">Précédent</a> ';
}

if($pageActuelle < $nombreDePages)
{
echo '<a href="votrepagedetraitement.php?page='.($pageActuelle + 1).'"> Suivant</a>';
}

}
}
echo '</p>';


?>

Sujet résolu ! :D
0