Parcourir les enregistrements d'une table par un bouton next
Résolu
arij223
Messages postés
14
Date d'inscription
Statut
Membre
Dernière intervention
-
arij223 Messages postés 14 Date d'inscription Statut Membre Dernière intervention -
arij223 Messages postés 14 Date d'inscription Statut Membre Dernière intervention -
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
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:
- Parcourir les enregistrements d'une table par un bouton next
- Table ascii - Guide
- Table des matières word - Guide
- Comment faire une capture d'écran sur un samsung sans bouton ? - Guide
- Bouton reinitialisation pc - Guide
- Diagnostic bouton photo - Accueil - Outils
2 réponses
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 ?
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 ?
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
<?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
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 !
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 :)
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 ! :)
<?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