Selectioner une ou plusieurs lignes dans un tableau
maxireussite
Messages postés
405
Statut
Membre
-
maxireussite Messages postés 405 Statut Membre -
maxireussite Messages postés 405 Statut Membre -
Bonjour à tous,
Je souhaite afficher le résultat d'une requête dans un tableau et, à gauche ou à droite des lignes (dont le nbre peut varier) avoir des cases à cocher pour sélectionner l'ID d'une ou plusieurs lignes et les envoyer dans une table.
Comment pourrais-je m'y prendre, moi qui suis pas fortiche en php ?
Merci d'avance en tous cas de votre aide.
Je souhaite afficher le résultat d'une requête dans un tableau et, à gauche ou à droite des lignes (dont le nbre peut varier) avoir des cases à cocher pour sélectionner l'ID d'une ou plusieurs lignes et les envoyer dans une table.
Comment pourrais-je m'y prendre, moi qui suis pas fortiche en php ?
Merci d'avance en tous cas de votre aide.
A voir également:
- Selectioner une ou plusieurs lignes dans un tableau
- Tableau word - Guide
- Trier un tableau excel - Guide
- Tableau ascii - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
- Écrire plusieurs lignes dans une cellule excel mac - Guide
15 réponses
Ce serait probablement de combiner HTML & PHP.
Excuse-moi si cn'est pas complet, j'avais pas grand temps.
//Requete dans la base de données
echo "<table>";
while ($data = $db ->fetch()){
echo "<tr><td>{$data['exemple']}</td><td>{$data['blabla']}</td></tr>";
}
echo "</table>";
Excuse-moi si cn'est pas complet, j'avais pas grand temps.
une solution:
<?php
echo '<form name="form1" action="" method="post">';
echo "<table>";
while ($data = $db ->fetch()){
echo '<tr><td>'.$data['exemple'].'</td><td>'.$data['blabla'].'</td><td><input type="checkbox" name="ligne_cochee['.$data['id'].' value="1" /></td></tr>';
}
echo "</table>";
echo '<input type="submit" name="envoyer" value="Enregistrer" />';
echo '</form>';
//et dans ton script pour récuperer
if(isset($_POST['envoyer'])){
//les cases cochées sont reçue dans l'array $_POST['ligne_cochee']
//donc tu le parcours
if(sizeof($_POST['ligne_cochee']) >0){
foreach($_POST['ligne_cochee'] as $id=>$value){
//seules les caches cochées sont présentes dans cet array
//tu fais ton enregistrement dans ta table pour cet id=$id
}
}else{
echo 'Vous devez cocher au moins une case !';
}
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour Alain_42,
Voilà 1ère étape l'affichage des lignes à cocher, j'ai testé, mais ça n'affiche rien? j'ai pourtant testé $requete qui est bon.
Peux-tu me dire où sa cloche stp ?
Merci.
<?php
$db='*****';
$cnx=mysql_connect('localhost', '*****', '*****') or die("Pb connexion serveur ".mysql_error()); // connexion à la base
$db_sel=mysql_select_db($db) or die("Erreur de selection ".mysql_error());
$requete = ("SELECT colis_id, code_client FROM oc_colis
WHERE TO_DAYS(NOW()) - TO_DAYS(date_creation) <= 1 ORDER BY date_creation DESC");
echo '<form name="form1" action="" method="post">';
echo "<table>";
while ($data = $db ->fetch($requete )){
echo '<tr><td>'.$data['colis_id'].'</td><td>'.$data['code_client'].'</td><td><input type="checkbox" name="ligne_cochee['.$data['id'].' value="1" /></td></tr>';
}
echo "</table>";
echo '<input type="submit" name="envoyer" value="Enregistrer" />';
echo '</form>';
?>
Voilà 1ère étape l'affichage des lignes à cocher, j'ai testé, mais ça n'affiche rien? j'ai pourtant testé $requete qui est bon.
Peux-tu me dire où sa cloche stp ?
Merci.
<?php
$db='*****';
$cnx=mysql_connect('localhost', '*****', '*****') or die("Pb connexion serveur ".mysql_error()); // connexion à la base
$db_sel=mysql_select_db($db) or die("Erreur de selection ".mysql_error());
$requete = ("SELECT colis_id, code_client FROM oc_colis
WHERE TO_DAYS(NOW()) - TO_DAYS(date_creation) <= 1 ORDER BY date_creation DESC");
echo '<form name="form1" action="" method="post">';
echo "<table>";
while ($data = $db ->fetch($requete )){
echo '<tr><td>'.$data['colis_id'].'</td><td>'.$data['code_client'].'</td><td><input type="checkbox" name="ligne_cochee['.$data['id'].' value="1" /></td></tr>';
}
echo "</table>";
echo '<input type="submit" name="envoyer" value="Enregistrer" />';
echo '</form>';
?>
Dis moi ce que tu reçoit avec ça:
et si tu veux enr dans ta table les valeurs affichées il faut mettre dans ta boucle while
les data['....'] dans des input
<?php
$db='*****';
$cnx=mysql_connect('localhost', '*****', '*****') or die("Pb connexion serveur ".mysql_error()); // connexion à la base
$db_sel=mysql_select_db($db) or die("Erreur de selection ".mysql_error());
$requete = ("SELECT colis_id, code_client FROM oc_colis
WHERE TO_DAYS(NOW()) - TO_DAYS(date_creation) <= 1 ORDER BY date_creation DESC");
echo '<form name="form1" action="" method="post">';
echo "<table>";
while ($data = $db ->fetch($requete )){
echo '<tr><td>'.$data['colis_id'].'</td><td>'.$data['code_client'].'</td><td><input type="checkbox" name="ligne_cochee['.$data['id'].' value="1" /></td></tr>';
}
echo "</table>";
echo '<input type="submit" name="envoyer" value="Enregistrer" />';
echo '</form>';
//et dans ton script pour récuperer
if(isset($_POST['envoyer'])){
////TEST
//ça doit t'afficher les id des cases cochées array(...)
echo '<pre>';
print_r($_POST['ligne_cochee']);
echo '</pre>';
////
//les cases cochées sont reçue dans l'array $_POST['ligne_cochee']
//donc tu le parcours
if(sizeof($_POST['ligne_cochee']) >0){
foreach($_POST['ligne_cochee'] as $id=>$value){
//seules les caches cochées sont présentes dans cet array
//tu fais ton enregistrement dans ta table pour cet id=$id
}
}else{
echo 'Vous devez cocher au moins une case !';
}
}
et si tu veux enr dans ta table les valeurs affichées il faut mettre dans ta boucle while
les data['....'] dans des input
<td><input "type="text" name="colis_id['.$data['id'].']" value="'.$data['colis_id'].'" /></td>
Bjr,
Avant tout je t'assure avoir vérifié $requete qui nourrit dans une autre page une zone de liste qui fonctionne.
Ici, ça ne donne toujours rien, page blanche :
<?php
$db='*****';
$cnx=mysql_connect('localhost', '*****', '*****') or die("Pb connexion serveur ".mysql_error()); // connexion à la base
$db_sel=mysql_select_db($db) or die("Erreur de selection ".mysql_error()); // sélection de la base //messages de TEST à oter ensuite qd ça marchera
$requete= mysql_query("SELECT apayer_id, date_apayer, code_client FROM oc_apayer WHERE TO_DAYS(NOW()) - TO_DAYS(date_apayer) <= 5 ORDER BY date_apayer DESC") or die("Pb avec la requette ".mysql_error());
echo '<form name="form1" action="" method="post">';
echo "<table>";
while ($data = $db ->fetch($requete)){
echo '<tr><td>'.$data['apayer_id'].'</td><td>'.$data['code_client'].'</td><td><input type="checkbox" name="ligne_cochee['.$data['apayer_id'].' value="1" /></td></tr>';
}
echo "</table>";
echo '<input type="submit" name="envoyer" value="Enregistrer" />';
echo '</form>';
?>
Avant tout je t'assure avoir vérifié $requete qui nourrit dans une autre page une zone de liste qui fonctionne.
Ici, ça ne donne toujours rien, page blanche :
<?php
$db='*****';
$cnx=mysql_connect('localhost', '*****', '*****') or die("Pb connexion serveur ".mysql_error()); // connexion à la base
$db_sel=mysql_select_db($db) or die("Erreur de selection ".mysql_error()); // sélection de la base //messages de TEST à oter ensuite qd ça marchera
$requete= mysql_query("SELECT apayer_id, date_apayer, code_client FROM oc_apayer WHERE TO_DAYS(NOW()) - TO_DAYS(date_apayer) <= 5 ORDER BY date_apayer DESC") or die("Pb avec la requette ".mysql_error());
echo '<form name="form1" action="" method="post">';
echo "<table>";
while ($data = $db ->fetch($requete)){
echo '<tr><td>'.$data['apayer_id'].'</td><td>'.$data['code_client'].'</td><td><input type="checkbox" name="ligne_cochee['.$data['apayer_id'].' value="1" /></td></tr>';
}
echo "</table>";
echo '<input type="submit" name="envoyer" value="Enregistrer" />';
echo '</form>';
?>
Ouf ! J'ai trouvé,
En fait il fallait remplacer "while ($data = $db ->fetch($requete))"
par
"while ($data= mysql_fetch_array($requete))
que j'ai récupérer dans ma fameuse zone de liste.
Merci bcp en tout cas Alain_42, tu m'as conduit vers LA vérité informatique. :)
En fait il fallait remplacer "while ($data = $db ->fetch($requete))"
par
"while ($data= mysql_fetch_array($requete))
que j'ai récupérer dans ma fameuse zone de liste.
Merci bcp en tout cas Alain_42, tu m'as conduit vers LA vérité informatique. :)
et comme ça tu doi sau moins avoir les deux array de TEST après click sur le bouton Enregistrer:
<?php
$db='*****';
$cnx=mysql_connect('localhost', '*****', '*****') or die("Pb connexion serveur ".mysql_error()); // connexion à la base
$db_sel=mysql_select_db($db) or die("Erreur de selection ".mysql_error()); // sélection de la base //messages de TEST à oter ensuite qd ça marchera
//et dans ton script pour récuperer
if(isset($_POST['envoyer'])){
////TEST
echo 'Array de tout le POST:<pre>';
print_r($_POST);
echo '</pre><br />';
//ça doit t'afficher les id des cases cochées array(...)
echo 'Array des cases cochées:<pre>';
print_r($_POST['ligne_cochee']);
echo '</pre>';
////
//les cases cochées sont reçue dans l'array $_POST['ligne_cochee']
//donc tu le parcours
if(sizeof($_POST['ligne_cochee']) >0){
foreach($_POST['ligne_cochee'] as $id=>$value){
//seules les caches cochées sont présentes dans cet array
//tu fais ton enregistrement dans ta table pour cet id=$id
//TEST
echo $id.' est coché<br />';
}
}else{
echo 'Vous devez cocher au moins une case !';
}
}
$requete= mysql_query("SELECT apayer_id, date_apayer, code_client FROM oc_apayer WHERE TO_DAYS(NOW()) - TO_DAYS(date_apayer) <= 5 ORDER BY date_apayer DESC") or die("Pb avec la requette ".mysql_error());
echo '<form name="form1" action="" method="post">';
echo "<table>";
while ($data = mysql_fetch_assoc($requete)){
echo '<tr><td>'.$data['apayer_id'].'</td><td>'.$data['code_client'].'</td><td><input type="checkbox" name="ligne_cochee['.$data['apayer_id'].' value="1" /></td></tr>';
}
echo "</table>";
echo '<input type="submit" name="envoyer" value="Enregistrer" />';
echo '</form>';
?>
Super ! C bon ça fonctionne. Merci mille fois.
Pour finir, je voudrais pas abuser, mais comment envoyer les choix dans une tables, en incrémentant autant de lignes qu'il y a de choix sous l'id du même client ?
Pour finir, je voudrais pas abuser, mais comment envoyer les choix dans une tables, en incrémentant autant de lignes qu'il y a de choix sous l'id du même client ?
dans cette partie tu fais tes insertions
foreach($_POST['ligne_cochee'] as $id=>$value){
//seules les caches cochées sont présentes dans cet array
<gras>//tu fais ton insertion sachant que $id n'est pas l'id client je suppose</gras>
//TEST
echo $id.' est coché<br />';