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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Mise a jour d'un champ d'une table par une check box

par ouckileou » 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>';
	}
}
?>

par Darkbibou » 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

par ouckileou » 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

par Darkbibou » 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 :?

par ouckileou » 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

par Darkbibou » 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).

](*,)

par ouckileou » 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

par Darkbibou » 15 avr. 2005, 13:51

tu peut etre plus explicite stp ?

Je connai pas ce truc d'id :S

par ouckileou » 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 :)

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

par Darkbibou » 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