checkbox php mysql form

Mammouth du PHP | 702 Messages

26 mars 2012, 08:31

Bonjour à tous, j'ai ce formulaire ci, qui me renvoit certaines données à insérer dans ma bdd.
  <form  name="add-client" method="post" action="add-client2.php">
              <table width="100%" border="0" cellspacing="0" cellpadding="0">
                <tr>
                  <td width="59%"><p align="left">CODE CLIENT: </p></td>
                  <td colspan="3">
                  <input name="code_client" type="text" size="10" maxlength="4" /></td>
                </tr>
                <tr>
                  <td>PERSONNE MORALE</td>
                  <td colspan="3"><input type="checkbox" name="personne_morale"  /></td>
                </tr>
                <tr>
                  <td>PERSONNE PHYSIQUE:</td>
                  <td width="7%"><input type="checkbox" name="personne_physique"  /></td>
                  <td width="32%">PARTICULIER <br />
                  ARTISAN</td>
                  <td width="2%"><input type="checkbox" name="particulier"  />
                    <br />
                  <input type="checkbox" name="artisan"  /></td>
                </tr>
                <tr>
                  <td>&nbsp;</td>
                  <td colspan="3">&nbsp;</td>
                </tr>
                <tr>
                  <td colspan="4" align="center"><strong><img src="images/images.jpg" width="41" height="29" />RENSEIGNEMENTS LEGAUX</strong></td>
                </tr>
                <tr>
                  <td>FORME JURIDIQUE:</td>
                  <td colspan="3"><input name="forme_juridique" type="text"  /></td>
                </tr>
                <tr>
                  <td>NOM COMMERCIAL:</td>
                  <td colspan="3"><input name="nom_commercial" type="text" id="nom_commercial"  /></td>
                </tr>
                <tr>
                  <td><p align="left">RAISON SOCIALE:</p></td>
                  <td colspan="3"><input name="raison_sociale" type="text" id="raison_sociale"  /></td>
                </tr>
                <tr>
                  <td><p align="left">CAPITAL SOCIAL:</p></td>
                  <td colspan="3"><input name="capital_social" type="text" id="capital_social"  /></td>
                </tr>
                <tr>
                  <td>SIRET:</td>
                  <td colspan="3"><input name="siret" type="text" id="siret"  /></td>
                </tr>
                <tr>
                  <td>CODE APE (NAF):</td>
                  <td colspan="3"><input name="code_ape" type="text" id="code_ape"  /></td>
                </tr>
                <tr>
                  <td>N&deg; TVA INTRA:</td>
                  <td colspan="3"><input name="tva_intra" type="text" id="tva_intra"  /></td>
                </tr>
                <tr>
                  <td>&nbsp;</td>
                  <td colspan="3">&nbsp;</td>
                </tr>
                <tr>
                  <td colspan="4" align="center"><strong><img src="images/activity.jpg" width="35" height="35" />DIVERS</strong></td>
                </tr>
                <tr>
                  <td>IBAN:</td>
                  <td colspan="3"><input name="iban" type="text" id="iban"  /></td>
                </tr>
                <tr>
                  <td>SWIFT:</td>
                  <td colspan="3"><input name="swift" type="text" id="swift"  /></td>
                </tr>
                <tr>
                  <td>COMPTE GENERAL:</td>
                  <td colspan="3"><input name="cpte_general" type="text" id="cpte_general"  /></td>
                </tr>
                <tr>
                  <td>COMPTE TIERS:</td>
                  <td colspan="3"><input name="cpte_tiers" type="text" id="cpte_tiers"  /></td>
                </tr>
                <tr>
                  <td>NOTE:</td>
                  <td colspan="3"><select name="note">
                    <option value="0">0</option>
                    <option value="0.5">0.5</option>
                    <option value="1">1</option>
                    <option value="1.5">1.5</option>
                    <option value="2">2</option>
                    <option value="2.5">2.5</option>
                    <option value="3">3</option>
                    <option value="3.5">3.5</option>
                    <option value="4">4</option>
                    <option value="4.5">4.5</option>
                    <option value="5">5</option>
                  </select></td>
                </tr>
                <tr>
                  <td colspan="4"><p align="center"><strong><img src="images/reference.jpg" width="35" height="35" />CORRESPONDANCE</strong></p></td>
                </tr>
                <tr>
                  <td>NOMBRE DE D'ADRESSE(S):</td>
                  <td colspan="3"><select name="tiers
                 " id="select">
                    <option value="1">1</option>
                    <option value="2">2</option>
                    <option value="3">3</option>
                    <option value="4">4</option>
                    <option value="5">5</option>
                  </select></td>
                </tr>
                <tr>
                  <td>NOMBRE DE TIERS:</td>
                  <td colspan="3"><select name="adresse" id="tiers
                 ">
                    <option value="1">1</option>
                    <option value="2">2</option>
                    <option value="3">3</option>
                    <option value="4">4</option>
                    <option value="5">5</option>
                  </select></td>
                </tr>
                <tr>
                  <td>&nbsp;</td>
                  <td colspan="3">&nbsp;</td>
                </tr>
                <tr>
                  <td>&nbsp;</td>
                  <td colspan="3">&nbsp;</td>
                </tr>
                <tr>
                  <td>&nbsp;</td>
                  <td colspan="3" align="right"><input type="image" src="images/arrow.png" width="52" height="43" /></td>
                </tr>
              </table>
            </form>


Le soucis c'est que j'ai des undefined var au niveau des checkbox qui ne sont pas cochées.

voici la page d'insertion.
<?php
$sql = 'INSERT INTO client SET  `code_client` = "'.mysql_real_escape_string($_POST['code_client']).'", `personne_morale`="'.mysql_real_escape_string($_POST['personne_morale']).'" , `personne_physique` ="'.mysql_real_escape_string($_POST['personne_physique']).'" , `artisan` ="'.mysql_real_escape_string($_POST['artisan']).'" , `particulier`  ="'.mysql_real_escape_string($_POST['particulier']).'" , `forme_juridique`  ="'.mysql_real_escape_string($_POST['forme_juridique']).'" , `nom_commercial`  ="'.mysql_real_escape_string($_POST['nom_commercial']).'" , `adresse2-5`  ="'.mysql_real_escape_string($_POST['raison_sociale']).'" , `capital_social`  ="'.mysql_real_escape_string($_POST['capital_social']).'" , `siret`  ="'.mysql_real_escape_string($_POST['siret']).'" , `pays5`  ="'.mysql_real_escape_string($_POST['code_ape']).'" , `tva_intra`  ="'.mysql_real_escape_string($_POST['tva_intra']).'" , `iban`  ="'.mysql_real_escape_string($_POST['iban']).'" , `swift`  ="'.mysql_real_escape_string($_POST['swift']).'" , `cpte_general`  ="'.mysql_real_escape_string($_POST['cpte_general']).'", `cpte_tiers`  ="'.mysql_real_escape_string($_POST['cpte_tiers']).'", `note`  ="'.mysql_real_escape_string($_POST['note']).'"' ;
                    


mysql_query($sql) or die(__LINE__.mysql_error().$sql);

echo "<h2><p align='center' />données insérées avec succès </h2><br /> <br /> <br /> <br / ><br /><A href=\"javascript:window.close('_blank');\">Vous pouvez fermer cette fenêtre <img src='images/close.png' /></A> </p> ";
?>

D'avance merci pour votre aide.

Cdt.

Mammouth du PHP | 702 Messages

26 mars 2012, 09:22

j'ai essayé avec du javascript

Code : Tout sélectionner

<<input type="checkbox" name="artisan" value="non" onclick="this.value=(this.value==non)?oui:non" />
cela n'a pas fonctionné je ne sais pas pourquoi. j'ai donc rajouté un input de type hidden et cela fonctionne bien. Merci pour votre aide :)
<input type="hidden" name="personne" value="0" />
<input type="checkbox" name="personne" value="1" />

ViPHP
xTG
ViPHP | 7331 Messages

26 mars 2012, 09:28

Bah il faut tester l'existence de la variable.
On ne balance jamais des données utilisateurs ainsi directement dans une requête !
Toujours vérifier les données, toujours !
if( !isSet($_POST['maCheckbox']) ){
  $maCheckbox = "non";
}else{
  if( !in_array($_POST['maCheckbox'], array('oui', 'non')) )
    $maCheckbox = "non";
  else
    $maCheckbox = $_POST['maCheckbox'];
}

Mammouth du PHP | 702 Messages

26 mars 2012, 09:45

mais un input type text ou textaerea vide renvoit bien une chaine de caracteres vides? par consequent la variable is not empty?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

26 mars 2012, 09:53

pour les textatre et texte (password etc ) oui mais les checkbox sont différentes. Elle n'existe que si elles sont cochées.

Donc si pas cochée => undefined index !

ensuite c'est aussi une bonne pratique pour tous les champs car tu ne peux pas être certain que les gens arrivent sur cette page ont posté un formulaire, ni même si le formulaire est complet ;)


@+
Il en faut peu pour être heureux ......