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 28/01/2008, 16h47   #1
Invité de passage
 
Inscription : décembre 2007
Messages : 9
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 9
Points : 4
Points : 4
Par défaut [SQL] Récupération de la valeur d'un CheckBox

Bonjour,

Je vais essayer d'être le plus clair possible dans ce problème qui (me) semble complexe.

J'ai un script PHP qui gènère du code html pour afficher des photos dans mon CMS. Le nom des photos et leur 'identité' est stocké dans une base de données. En dessous de chaque photo se trouve un CheckBox pour pouvoir par la suite choisir de publier ou non la photo sur le site.

Voici le script qui génère le code html (je n'ai pas mis ici les requêtes SQL):

Code :
1
2
3
4
5
echo "\t<div class=\"checktoff\">\n<center><div><img src=\"/v2/photos/img_photo/{$photo['nom']}\" height=\"100\" alt=\"\" /></center>\n";
			echo "<form name=\"selphoto\" method=\"POST\" action=\"\">\n";
			echo "<center><input type=\"checkbox\" name=\"cb{$photo['id']}\" value=\"ok\" ></center>\n";
			echo "</form>\n";
			echo "</div>\n";
A une autre place sur ma page j'ai un bouton "Sauver" qui permet, quand on le presse, de parcourir tous les CheckBox et d'enregistré la valeur ("ok") qui correspond a la photo dans la base de données.

Script du bouton:

Code :
1
2
3
4
5
6
7
8
echo "<form name=\"selphoto\" method=\"POST\" action=\"\">\n";
		echo "<p>\n";
		echo "Sauver les modifications";
		echo "</p>\n";
		echo "<p>\n";
		echo "<input type=\"submit\" name=\"sauver\" value=\"Sauver\">\n";
		echo "</p>\n";
		echo "</form>\n";
La "<form>" du bouton à le même nom que la "<form>" des CheckBox. De ce côté ca devrait donc jouer...

Ensuite le bout de script qui foire. La ligne du if($_POST['$cbval']... ne fonctionne pas comme elle devrait. Ca parait compliqué mais je dois faire ça pour savoir quelle CheckBox correspond à quelle photo. C'est pour cette raison que je dois faire une requête pour avoir les id des photos qui sont les memes que les noms des checkbox!!

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//Si on presse le bouton sauver
if(isset($_POST['sauver'])){
	//Reqête qui permet d'avoir a disposition les id des photos qui correspondent aux nom des checkbox
	$q_vis=mysql_query("SELECT * FROM `image` WHERE `parent` = {$_GET['gallery']}");
	while($zt = mysql_fetch_array($q_vis)){
		//Concaténation pour avoir les noms des checkbox
		$cbval = "cb".$zt['id'];
		if($_POST['$cbval'] == "ok"){
			$bVisi = 1;
		}else{
			$bVisi = 0;
		}
		//Insertion de la valeur dans la db
	mysql_query("UPDATE `image` SET `visibility` ={$bVisi}  WHERE `id` ={$zt['id']}");
	}
}
Tout fonctionne sauf que le if ne va jamais dans $bVisi = 1;. J'ai donc toujours dans ma base de données la valeur 0 dans le champ visibility.

Vous me sortirier une sacré épine du pied si vous pouvier m'aider!!

P.S: J'ai essayer avec un tableau pour les noms des checkboxs, mais ça ne correspond pas vraiment a mon application puisque je dois savoir à quelle photo appartient le checkbox.
VoteForMe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2008, 16h52   #2
Membre expérimenté
 
Inscription : août 2005
Messages : 515
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 515
Points : 557
Points : 557
Bonjour,
c'est normal ça :

Parce que PHP ne vérifie pas les variables avec des guillemets simple, seulement en double et pis, c'est franchement pas utile de l'entourer alors qu'il y a pas de texte a insérer.

Cordialement,
DaRiaN.
DaRiaN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2008, 17h11   #3
Invité de passage
 
Inscription : décembre 2007
Messages : 9
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 9
Points : 4
Points : 4
Merci pour la réponse rapide.

J'ai corrigé mais ça ne fonctionne pas quand même.
VoteForMe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2008, 17h26   #4
Membre expérimenté
 
Inscription : août 2005
Messages : 515
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 515
Points : 557
Points : 557
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
<?php
 
  if (isset($_POST['sauver']))
  {
 
    // echo '<pre>';
    // print_r($_POST);
    // exit('</pre>');	  
 
    $dummy = $_GET['gallery'];
 
    $q_vis = mysql_query('SELECT * FROM `image` WHERE `parent` = "'.$dummy.'"');
 
    while ($zt = mysql_fetch_array($q_vis))
    {
 
      $cbval = 'cb'.$zt['id'];
 
      if ($_POST[$cbval] == 'ok') $bVisi = 1;
      else $bVisi = 0;
 
      mysql_query('UPDATE `image` SET `visibility` = '.$bVisi.'  WHERE `id` = '.$zt['id']);
 
    }
 
  }
 
?>
Il faudrait regarder ce que contient le tableau, decommentez les trois lignes de ma version modifiée de votre script pour visualiser le tableau $_POST et ainsi vérifier que vous avez bien des checkbox dans la liste et que leur valeur est bien égale à "ok".

D'habitude, quand je travaille avec des checkbox, je fais plutôt un if (isset($_POST['checkbox1']))... mais bon.
DaRiaN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2008, 17h39   #5
Invité de passage
 
Inscription : décembre 2007
Messages : 9
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 9
Points : 4
Points : 4
En décommentant les lignes j'obtient ça

Array
(
[sauver] => Sauver
)

Ca voudrait dire que je ne transmet pas les valeurs des checkbox (via POST).
L'erreur se siturait donc à une autre place...
VoteForMe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2008, 17h44   #6
Membre expérimenté
 
Inscription : août 2005
Messages : 515
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 515
Points : 557
Points : 557
Ah, l'erreur était de croire que de donner le même nom à votre balise form pouvait coupler les deux contenus. Non, tout doit être dans une même et unique balise form, sinon c'est deux formulaires séparés.
DaRiaN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2008, 17h57   #7
Invité de passage
 
Inscription : décembre 2007
Messages : 9
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 9
Points : 4
Points : 4
Effectivement!

En tout cas merci de m'avoir aidé.
VoteForMe 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 12h47.


 
 
 
 
Partenaires

Hébergement Web