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.
15 réponses
-
Ce serait probablement de combiner HTML & PHP.
//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 !'; } } -
Merci bcp Alain_42,
je vais prendre le temps de regarder cela et je reviens vers vous. -
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>';
?> -
Dis moi ce que tu reçoit avec ça:
<?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>
-
Merci bcp.
Je prends le temps de tester cela et je reviens vers toi. -
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>';
?> -
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. :) -
On s'attaque à la 2ème partie ?
Rien ne s'affiche au chargement de la page appelée ! -
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 ? -
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 />'; -
Merci ne suffit plus, faudrait inventer un mot bien plus fort.
Je prends le temps de tester cela et je te dit ce qu'il en est. -
Bon ben Alain_42 me revoilà !
je crains que tu ne doive me prendre par la main, car pour envoyer les résultats dans une table avec un numéro ID unique, afin de les regrouper dans la même "session" ou "commande"; je sèche un peu.