Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/10/2006, 14h33   #1
Nouveau Membre du Club
 
Avatar de urbalk
 
Inscription : novembre 2005
Messages : 135
Détails du profil
Informations personnelles :
Localisation : France, Moselle (Lorraine)

Informations forums :
Inscription : novembre 2005
Messages : 135
Points : 38
Points : 38
Par défaut [SQL] Passer plusieurs variables à l'aide des checkbox

Bonjour,
j'essaie de passer plusieurs variables que je sélectionne via un formulaire:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//selection de la table dans la base
$query="Select * from interventions" ;
//controle des resultats
$result = mysql_query( $query )or exit ('Erreur SQL !'.$query.'<br>'.mysql_error());
while($data = mysql_fetch_array($result))
{
//affichage des resultats
echo"<tr><td><input type='text' name='tech' size='15' value='".$data['tech']."' maxlength='25'></td>";
echo"<td><input type='text' name='client' size='15' value='".$data['client']."' maxlength='25'></td>";
echo"<td><input type='text' name='doss' size='15' value='".$data['doss']."' maxlength='25'></td>";
echo"<td><input type='text' name='tech' size='15' value='".$data['ville']."' maxlength='25'></td>";
echo"<td><input type='text' name='tech' size='15' value='".$data['jour']."' maxlength='25'></td>";
echo"<td><input type='text' name='tech' size='15' value='".$data['inter']."' maxlength='25'></td>";
echo"<td><input type='text' name='tech' size='15' value='".$data['dateDdC']."' maxlength='25'></td>";
echo"<td><input type='text' name='tech' size='15' value='".$data['dateFdC']."' maxlength='25'></td>";
echo"<td><input type='checkbox' name='delete[]' value='".$data['id']."'></td>";
echo"</tr>";
}
mysql_close();
?>
	<td width="" align="right" colspan="3">
 
            <input class="bouton" type="submit" name="exple3" value="Archiver">
 
        </td>
</table>
</form>
le fichier qui récupère les variables:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php
//recup de la variable de suppression
if(isset($_POST['delete']))    $delete=$_POST['delete'];
else      $delete="";
 
if(isset($_POST['client']))    $client=$_POST['client'];
else      $client="";
 
if(isset($_POST['doss']))    $doss=$_POST['doss'];
else      $doss="";
 
if (sizeof($delete)==0)
{
exit;}
else{
 
foreach ($delete as $id)
{
 
echo $delete;
echo $client;
echo $doss;
 
if (sizeof($delete)==0){
header('Location:pageformulaire.php');
exit;}
else{
 
$db = mysql_connect('localhost', 'root', '')
or die('<font color=red>Désolé mais vous ne pouvez voir les infos de la data-base</font>');
mysql_select_db('gestion',$db);
foreach ($delete as $valeur){
//je creer ma requete
$sql="INSERT INTO arch_inter (client, doss)  VALUES ('$client','$doss')";
}
		//on envoie la requete
		$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
}
 
		// on ferme la connexion à mysql
         mysql_close();
}}
En faite, mon script laisse bien passer le nombre de checkbox coché mais pas la valeur des differents champs coché ....

merci de votre aide.
urbalk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2006, 18h45   #2
Expert Confirmé
 
Avatar de Sub0
 
Homme
Inscription : décembre 2002
Messages : 3 468
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 39

Informations forums :
Inscription : décembre 2002
Messages : 3 468
Points : 3 115
Points : 3 115
Envoyer un message via MSN à Sub0 Envoyer un message via Skype™ à Sub0
non rien
Sub0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2006, 18h47   #3
Membre confirmé
 
Développeur Web
Inscription : septembre 2006
Messages : 215
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : septembre 2006
Messages : 215
Points : 246
Points : 246
Salut urbalk

[...]

...j'ai rien dis

un ptit truc pour optimiser un tit peu ton code, au lieu d'utiliser "echo", essai ca...

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
<?php
while($data = mysql_fetch_array($result)) {
//affichage des resultats
	?>
		<tr><td><input type='text' name='tech' size='15' value='<?=$data['tech']?>' maxlength='25'></td>
		<td><input type='text' name='client' size='15' value='<?=$data['client']?>' maxlength='25'></td>
		<td><input type='text' name='doss' size='15' value='<?=$data['doss']?>' maxlength='25'></td>
		...
	<?php
}
?>
ca decharge ton serveur d'une compilation inutile

sahid
sahid est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2006, 18h53   #4
Expert Confirmé
 
Avatar de Sub0
 
Homme
Inscription : décembre 2002
Messages : 3 468
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 39

Informations forums :
Inscription : décembre 2002
Messages : 3 468
Points : 3 115
Points : 3 115
Envoyer un message via MSN à Sub0 Envoyer un message via Skype™ à Sub0
sahid, j'ai fais la même erreur : Ce ne sont pas des cases à cocher, mais des champs de saisie texte.
Mais en tous les cas, il faut des noms différents, c'est vrai.

Citation:
Code :
echo"<td><input type='checkbox' name='delete[]' value='".$data['id']."'></td>";
• La seule valeur que tu peux donner à une checkbox est checked pour la cocher sinon rien pour la décocher :
Code :
1
2
3
echo '<input type="checkbox" name="delete[]"';
if(!empty($data['id'])) echo ' checked';
echo '/>';
On peut aussi écrire :
Code :
echo '<input type="checkbox" name="delete[]"'.(if(!empty($data['id']))?' checked':'').'/>';
• Le nombre de checkbox dépend du nombre d'enregistrement donné par la requête.
Est-ce que count($delete) retourne bien ce nombre ?

• Perso, je verrais plus quelque chose comme ça :
Code :
1
2
3
4
$cnt = count($delete);
if($cnt>0)
  for($x=0;$x<$cnt;$x++)
    if(isset($delete[$x])) echo 'case n°'.$x.' cochée<br/>';
http://www.developpez.net/forums/sho...93#post1345093
Sub0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2006, 19h19   #5
Nouveau Membre du Club
 
Avatar de urbalk
 
Inscription : novembre 2005
Messages : 135
Détails du profil
Informations personnelles :
Localisation : France, Moselle (Lorraine)

Informations forums :
Inscription : novembre 2005
Messages : 135
Points : 38
Points : 38
? comprends pas là !!!
Code :
je sais pas si ton probleme vien de la, mais il ne faudrait pas que tu donnes un nom different à tes checkbox.
je suis en train d'essayer de finir mon bout de script, et je le test au fur et a mesure j'avais prevu de changer le 'name' des checkbox.
Code :
un ptit truc pour optimiser un tit peu ton code, au lieu d'utiliser "echo", essai ca...
merci, je test ca illico.
Non.
Code :
$delete est un tableau ou pas ?
oui
Quand le script s'execute j'ai le retour suivant que je coche une ou plusieurs case
mon but est de recupéré toutes les données dans les champs text
merci.
urbalk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2006, 19h32   #6
Expert Confirmé
 
Avatar de Sub0
 
Homme
Inscription : décembre 2002
Messages : 3 468
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 39

Informations forums :
Inscription : décembre 2002
Messages : 3 468
Points : 3 115
Points : 3 115
Envoyer un message via MSN à Sub0 Envoyer un message via Skype™ à Sub0
Désolé, j'ai reédité mon post car j'avais fai une erreur, j'ai répondu trop vite.
Relis mon post précédent, en particulier :
Citation:
Envoyé par Sub0
• La seule valeur que tu peux donner à une checkbox est checked pour la cocher sinon rien pour la décocher :
Code :
1
2
3
echo '<input type="checkbox" name="delete[]"';
if(!empty($data['id'])) echo ' checked';
echo '/>';
On peut aussi écrire :
Code :
echo '<input type="checkbox" name="delete[]"'.(if(!empty($data['id']))?' checked':'').'/>';
Tu trouveras un exemple ici :
http://www.developpez.net/forums/sho...93#post1345093
Sub0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h34.


 
 
 
 
Partenaires

Hébergement Web