Mise a jour d'un champ d'une table par une check box

Eléphant du PHP | 158 Messages

15 avr. 2005, 13:46

Salut a tous,

J'ai ecrit un script qui affiche tt les enregistrement d'une de mes tables ligne par ligne. En bout de chaque ligne j'ai rajouté une checkbox et je voudrai que lorsque je coche une checkbox d'une ligne quelconque sa valeur soit automatiquement rentrée dans la table au niveau de la bonne ligne, comment dois je m'y prendre ?

merci d'avance
°°°Darkbibou°°°

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

15 avr. 2005, 13:47

la checkbox contient un id, l'id de la ligne, et ensuite "UPDATE... WHERE id"

en gros quoi, si j'ai bien compris :)

Eléphant du PHP | 158 Messages

15 avr. 2005, 13:51

tu peut etre plus explicite stp ?

Je connai pas ce truc d'id :S
°°°Darkbibou°°°

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

15 avr. 2005, 13:58

tu affiches les enregistrements de ta table

1 - truc1 - machin1
2 - truc2 - machin2
3 - truc3 - machin3

donc tu peux mettre en bout une checkbox

Code : Tout sélectionner

<input type="checkbox" name="checkbox[1]" value="true">
donc une fois ton formulaire envoyé tu boucles sur les id et tu regardes si la checkbox a été cochée

exemple :

Code : Tout sélectionner

De 0 à 10 Si checkbox[i] existe Alors mise à jour de l'enregistrement N° i avec la valeur de checkbox[i] (avec UPDATE) FSi
pour les requête UPDATE, tu peux préciser sur quel champ faire la mise à jour
exemple :

Code : Tout sélectionner

UPDATE table SET champ2 = "abcde" WHERE champ1 = 5
voir la doc : http://dev.mysql.com/doc/mysql/fr/update.html

Eléphant du PHP | 158 Messages

15 avr. 2005, 14:14

ok par id tu voulai parler du name de la checkbox !!

Le problème c que je ne peut pas nommer mes checkbox car le script que je cree doit pouvoir s'appliquer à des bases de n'importe quel taille.

Voici mon code actuel pour la page de sélection:

[code]

<HTML>

<HEAD>

<TITLE> Formulaire de selection d'une partie de la table par l'utilisateur </TITLE>

</HEAD>

<BODY>

<FORM NAME="check_ligne" METHOD="post" ACTION="affiche_checked_ligne.php">

<BR>
<H2 align="center">Formulaire de sélection d'entreprise</H2>
<BR>


<?

//connexion à la base de données:
$liendb8=mysql_connect("localhost","root","")or die("la connexion à la base a échoué");
// selection de la base à remplir:
mysql_select_db("base_stage")or die("Impossible de se connecter à la base de données");

// requête de contrôle de l'affichage
$sql="SELECT * FROM Entreprises ORDER BY Nom_entreprise";

$resultat=mysql_query($sql);

echo"<TABLE align='center' border=1 cellspacing='1'>";

while($select_entreprise = mysql_fetch_row($resultat))// creation d'une variable tableau qui stocke les données résultats de la recherche
{ // tant que $select_entreprise existe on fait:
echo"<TR>";
$taille_select_entreprise= count($select_entreprise);
for($i=0;$i<$taille_select_entreprise;$i++){
echo"<TD>".$select_entreprise[$i]."</TD>";
echo "<TD>"."<INPUT type='checkbox' name='case_coche[$i]' value='oui'>"."</TD>";
}
echo"</TR>";
} // fin du while/tant que

echo"</TABLE>";

// Fermeture de la base
mysql_close($liendb8);

?>

<BR><BR>

<TABLE align="center" cellspacing="1">

<TR>
<TD><INPUT type="submit" value="Afficher la sélection"></TD>
<TD width="120"></TD>
<TD><INPUT TYPE="reset" VALUE="Décocher"></TD>
</TR>

</TABLE>

</FORM>

</BODY>

</HTML>[/code]

Mais je doute que cela fonctionne et meme si cela fonctionnai je voi pas comment je pourrai récupérer tt les valeur dans le deuxieme script ki sera utilisé pour mettre a jour la base (version php >4).

](*,)
°°°Darkbibou°°°

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

15 avr. 2005, 14:22

en utilisant des noms de checkbox sous forme de tableau cela te permet d'effectuer ce script quelle que soit la taille de la table

Code : Tout sélectionner

<input type="checkbox" name="checkbox[1]" value="true"> <input type="checkbox" name="checkbox[2]" value="true"> <input type="checkbox" name="checkbox[3]" value="true">
si tu crées ces checkbox dynamiquement, tu peux facilement créer une boucle et incrémenter à chaque fois l'indice

Eléphant du PHP | 158 Messages

15 avr. 2005, 14:29

ca se voit que c la fin de la semaine car je voit pas du tt comment integrer ce ke tu me di à mon code :?
°°°Darkbibou°°°

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

15 avr. 2005, 14:32

je viens de regarder tu l'as déjà fait en fait :
echo "<TD>"."<INPUT type='checkbox' name='case_coche[$i]' value='oui'>"."</TD>";
donc ici à la place de $i, tu pourrais mettre une variable contenant l'ID de l'entreprise dans ta table
et ensuite faire la mise à jour sur cet ID

Eléphant du PHP | 158 Messages

15 avr. 2005, 14:55

je pense que c'est bon pour le nom de mes cases mais le problème maintenant c de récupérer les récupérer dans le deuxième script, j'ai essayé ca mais ca ne fonctionne pas:

$les_checkbox= $_POST['$nom_box'];

merci d'avance
°°°Darkbibou°°°

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

15 avr. 2005, 15:07

un exemple :
<form action="checkbox.php" method="POST">
	<input type="checkbox" name="checkbox[1]" value="1"> 1<br>
	<input type="checkbox" name="checkbox[2]" value="2"> 2<br>
	<input type="checkbox" name="checkbox[3]" value="3"> 3<br>
	<input type="submit" name="submit" value"envoyer">
</form>
<?php
if (isset($_POST['submit'])) {
	$checkbox = $_POST['checkbox'];
	for ($i=1;$i<=3;$i++) {
		if (isset($checkbox[$i])) {
			$valeur = $checkbox[$i];
		} else {
			$valeur = "non cochée";
		}		
		echo '$checkbox['.$i.'] = '.$valeur.'<br>';
	}
}
?>