Selectioner une ou plusieurs lignes dans un tableau

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.
A voir également:

15 réponses

Utilisateur anonyme
 
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.
0
maxireussite Messages postés 405 Statut Membre 5
 
Merci c un début.
0
Alain_42 Messages postés 5413 Statut Membre 894
 
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 !';
	}
	
}
0
maxireussite Messages postés 405 Statut Membre 5
 
voir commentaire ci-dessous, merci.
0
maxireussite Messages postés 405 Statut Membre 5
 
Merci bcp Alain_42,

je vais prendre le temps de regarder cela et je reviens vers vous.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
maxireussite Messages postés 405 Statut Membre 5
 
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>';
?>
0
Alain_42 Messages postés 5413 Statut Membre 894
 
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>
0
maxireussite Messages postés 405 Statut Membre 5
 
Merci bcp.

Je prends le temps de tester cela et je reviens vers toi.
0
maxireussite Messages postés 405 Statut Membre 5
 
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>';
?>
0
maxireussite Messages postés 405 Statut Membre 5
 
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. :)
0
maxireussite Messages postés 405 Statut Membre 5
 
On s'attaque à la 2ème partie ?

Rien ne s'affiche au chargement de la page appelée !
0
Alain_42 Messages postés 5413 Statut Membre 894
 
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>';


?>
0
maxireussite Messages postés 405 Statut Membre 5
 
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 ?
0
Alain_42 Messages postés 5413 Statut Membre 894
 
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 />';
0
maxireussite Messages postés 405 Statut Membre 5
 
J'ai un peu de mal à saisir.
je crains que tu ne doives 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.
0
maxireussite Messages postés 405 Statut Membre 5
 
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.
0
maxireussite Messages postés 405 Statut Membre 5
 
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.
0