Selectioner une ou plusieurs lignes dans un tableau

Fermé
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 - 10 févr. 2014 à 03:42
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 - 3 avril 2014 à 04:46
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
10 févr. 2014 à 04:11
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 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
10 févr. 2014 à 05:55
Merci c un début.
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
10 févr. 2014 à 11:43
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 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
13 févr. 2014 à 01:10
voir commentaire ci-dessous, merci.
0
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
10 févr. 2014 à 11:49
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 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
Modifié par maxireussite le 13/02/2014 à 01:10
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 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
13 févr. 2014 à 10:02
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 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
13 févr. 2014 à 12:11
Merci bcp.

Je prends le temps de tester cela et je reviens vers toi.
0
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
13 févr. 2014 à 23:35
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 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
13 févr. 2014 à 23:49
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 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
Modifié par maxireussite le 14/02/2014 à 04:01
On s'attaque à la 2ème partie ?

Rien ne s'affiche au chargement de la page appelée !
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
14 févr. 2014 à 10:24
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 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
15 févr. 2014 à 04:54
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 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
15 févr. 2014 à 16:22
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 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
3 avril 2014 à 04:46
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 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
15 févr. 2014 à 17:35
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 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
Modifié par maxireussite le 27/03/2014 à 04:50
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