Case à cocher !

Eléphant du PHP | 424 Messages

29 janv. 2006, 17:14

Bonjour à tous !

Je galére depuis deux semaines avec ce truc merci pour votre aide ...

J'ai une table garanties composée comme suit :

id N° type franchise
1 32 Vol 30
2 32 Incendie 40
3 66 BDG 0

Je cré un tableau avec des cases à cocher et je souhaite que quand le type est dans ma base elle soit cochée. Mes cases à cocher sont de type :

<input type=checkbox name='id_garanties[]' value='DEFENSE / RECOURS'>

Merci pour votre aide je galére trop...
Youpi Youpi Yo !

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

29 janv. 2006, 19:19

Salut,

pour cocher d'office une checkbox :

Code : Tout sélectionner

<input type="checkbox" name="cb1" checked="checked">
donc il suffit de faire un test au moment où tu construis tes cases à cocher et d'insérer le code pour la cocher

Tu peux t'inspirer de ça :
Pré-positionner une liste déroulante
C'est le même principe

Eléphant du PHP | 424 Messages

30 janv. 2006, 14:57

Salut,

pour cocher d'office une checkbox :

Code : Tout sélectionner

<input type="checkbox" name="cb1" checked="checked">
donc il suffit de faire un test au moment où tu construis tes cases à cocher et d'insérer le code pour la cocher
Mais si la case est cochée d'office je dois donc faire un test pour la décocher ?? non ?

Le probleme c'est que je n'ai pas pu me débrouilles avec le lien que tu m'a donné... Peux tu m'aider ??? :oops:

Merciiiiiiiii
Youpi Youpi Yo !

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

30 janv. 2006, 15:31

Mais si la case est cochée d'office je dois donc faire un test pour la décocher ?? non ?
Non, tu ne la coches que si c'ets ce à quoi elle correspon se trouve dans la table

Donc pour chaque case, tu fais ton test, et si il est bon tu metle code pour la cocher par défaut.

Eléphant du PHP | 424 Messages

30 janv. 2006, 16:04

Bon ok ! j'ai compris la manipe.... c'est deja ca.

Maintenant je ne sais pas du tout comment faire cette vérification.

Je débute dans le php.. merci pour votre aide. :D
Youpi Youpi Yo !

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

30 janv. 2006, 17:22

Montre nous déjà comment tu affiches ces cases

Eléphant du PHP | 424 Messages

30 janv. 2006, 17:32

Alors pour afficher mes cases je procéde comme ceci :

<input name='id_garanties[]' type=checkbox value='DEFENSE / RECOURS' checked>

<input name='id_garanties[]' type=checkbox value='RESPONSABILITE CIVILE' checked>


cette case est cochée par défault... merci pour votre aide !! :D
Youpi Youpi Yo !

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

30 janv. 2006, 17:38

oui ça je me doute bien, c'est le code HTML d'une checkbox...

Mais tu ne les affiche pas dynamiquement ? C'est du HTML en dur ?

Si tu dois comparer avec ce qui est dans la table, tu fais une requête, tu récupères les données, et ensuite pour chaque valeur de checkbox qui se trouve dans ces résultats, tu la coches.

Eléphant du PHP | 424 Messages

30 janv. 2006, 17:44

HA pardon !

alors j'ai fais un truc de ce genre. Mais évidemment ca ne fonctionne pas :?

 if ($row_garanties['valeur'] != "RESPONSABILITE CIVILE") {echo "checked=\"checked\"";}
Merciii
Youpi Youpi Yo !

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

30 janv. 2006, 17:57

Est-ce qu'on peut avoir le bloc de code complet ? :lol:

Récupération des valeurs, création des cases à cocher, tests...

ligne par ligne on avance pas

Mais c'est le principe en gros, sauf que tu as mis un "différent" (!=) alors que tu souhaites cocher les cases quand les valeurs sont dans la base, ce serait donc plutôt "égal" (=) non ?

Eléphant du PHP | 424 Messages

30 janv. 2006, 17:59

je t'envoi le code :
<?php 
$numero_contrat = $_POST["numero_contrat"];
$sql="DELETE FROM garanties WHERE num_contrat='$numero_contrat'";
mysql_query($sql) or die(mysql_error());

//Reception des données nécéssaires 
$id_garantie = $_POST["id_garanties"]; //une liste de cases à cocher 
$franchises = $_POST["franchises"]; //une liste d'input's idexés par id_garantie 
$numero_contrat = $_POST["numero_contrat"]; //un input 
//Parcourir la liste des garanties cochées 
if ($id_garanties && count($id_garanties) >0) { 
   foreach ($id_garanties as $id_garantie) 
      if ($id_garantie){ 
             //trouver la franchise de cette garantie 
             $une_franchise = $franchises[$id_garantie]; 
			 
             //On a tout : l'id, le numero_contrat, l'id franchise et le montant franchise 
            //On peut lancer un INSERT dans la table garanties 
           $SQL = "INSERT INTO garanties (num_contrat,garanties,franchise) VALUES ('$numero_contrat', '$id_garantie', '$une_franchise')"; 
            
           //Exécuter cette requête 
           mysql_query ($SQL); 
		   
      } //Au suivant 
	  

} else echo ""; //cas de non garanties 

?> 



<input name='id_garanties[]'type=checkbox value='RESPONSABILITE CIVILE'
              <?php if ($row_garanties['valeur'] = "RESPONSABILITE CIVILE") {echo "checked=\"checked\"";}  ?>>
Youpi Youpi Yo !

Eléphant du PHP | 424 Messages

31 janv. 2006, 09:44

Bon je reviens avec mes cases à cocher. :D

Alors j'ai fait ca mais j'ai une erreur :
  <? 
  if (isset($_GET['numero_contrat']))
                {
                 $num_contrat = $_GET['numero_contrat'];
				 }
				  else
				 {
				 $num_contrat = 18;
				  }
				
	$retour = mysql_query("SELECT * FROM garanties WHERE num_contrat = $numero_contrat");
while ($donnees = mysql_fetch_array($retour))
{
echo $donnees['garanties'];
}
	?>
Voici maintenant l'erreur :

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/html/Intranet/garanties.php on line 349

Merci pour votre aide
Youpi Youpi Yo !

Eléphanteau du PHP | 32 Messages

31 janv. 2006, 15:45

donne la ligne exacte de l'erreur (la ligne 349).
et puis ce qui precede, ça pourrai aider.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

31 janv. 2006, 22:53

décompose la requete puis affiche cette même requete générée avec echo pour verifier qu'elle est bien construite. Et aussi ajouter un message d'erreur:
$sql="SELECT * FROM garanties WHERE num_contrat = $numero_contrat";

echo '<p>'.$sql.'</p>';

mysql_query($sql) or die('Erreur SQL! <br />'.$sql.'<br />'.mysql_error());
à quoi correspond $numero_contrat ?

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute