Ajouter chekbox dans un formulaire

BillyBB -  
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

je m'entraîne en tant que jeune développeur à faire des petites choses et la en ce moment j'essaye de faire une gestion client. Malheureusement pour ajouter client je viens de rajouter 2 chekbox (impaye et actuDPO) et par rapport à ce que j'ai écris, l'ajout client fonctionne seulement si mes 2 boutons sont cochés :/ J'aimerai donc savoir exactement quoi écrire par rapport àmes 2 chekbox, sinon tout le reste fonctionne niquel.

Voici mon AjoutReq.php qui permet de coder mon ajout des clients :
<?php 
include('pdo.php');

$stmt = $pdo->prepare('SELECT * from clients WHERE codeClient = :codeClient');
$stmt->bindValue(':codeClient', $_POST['codeClient'], PDO::PARAM_STR);
$stmt->execute();
$userExist=$stmt->fetch();

if(empty($userExist))
{	
	$req = $pdo->prepare("
		INSERT INTO clients(codeClient,numCompte,typeClient,statut,nom,adresse1,adresse2,codePostal,ville,pays,numTelephone,numPortable,numAutre,numAutre2,mail,mail2,distanceKM,infosDivers,impaye, actuDPO,dateCreation)
		VALUES (:codeClient,:numCompte,:typeClient,:statut,:nom,:adresse1,:adresse2,:codePostal,:ville,:pays,:numTelephone,:numPortable,:numAutre,:numAutre2,:mail,:mail2,:distanceKM,:infosDivers,:impaye,:actuDPO,:dateCreation)",
		array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
		
	$req->execute(
		array(
			':codeClient'=>strtoupper($_POST['codeClient']),
			':numCompte'=>$_POST['numCompte'],
			':typeClient'=>$_POST['typeClient'],
			':statut'=>$_POST['statut'],
			':nom'=>strtoupper($_POST['nom']),
			':adresse1'=>strtoupper($_POST['adresse1']),
			':adresse2'=>strtoupper($_POST['adresse2']),
			':codePostal'=>$_POST['codePostal'],
			':ville'=>strtoupper($_POST['ville']),
			':pays'=>strtoupper($_POST['pays']),
			':numTelephone'=>$_POST['numTelephone'],
			':numPortable'=>$_POST['numPortable'],
			':numAutre'=>$_POST['numAutre'],
			':numAutre2'=>$_POST['numAutre2'],
			':mail'=>$_POST['mail'],
			':mail2'=>$_POST['mail2'],
			':distanceKM'=>$_POST['distanceKM'],
			':infosDivers'=>$_POST['infosDivers'],
			':impaye'=>$_POST['impaye'],
			':actuDPO'=>$_POST['actuDPO'],
            ':dateCreation'=>date('y-m-d'),
		
		));
		
	$req->closeCursor();
	header('Location:clientList.php');
}

else
{
	header('Location:ajouterClient.php?error=codeclient');
}


?>


et voici mes lignes de codes en html avec les deux chekbox :
<div class="form-group col-md-2" style="text-align:center">
				
					<label for="impaye">Impayé</label><br>
					<input style="width: 50%; height: 1.7em;" type="checkbox" name="impaye" value="oui" id="impaye" <?php if($client["impaye"] == "oui"){ ?>checked<?php } ?>>
				
				</div>
				<div class="form-group col-md-2" style="text-align:center">
				
					<label for="actuDPO">Actu DPO</label><br>
					<input style="width: 50%; height: 1.7em;" type="checkbox" name="actuDPO" value="oui" id="actuDPO" <?php if($client["actuDPO"] == "oui"){ ?>checked<?php } ?>>
			</div>


Si quelqu'un pourrait m'aider ce serais vraiment cool merci ahah :)
A voir également:

1 réponse

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

Quelques conseils à lire ( et à appliquer )
- https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
et
- https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

par exemple,
pour ta première requête
$stmt = $pdo->prepare('SELECT * from clients WHERE codeClient = :codeClient');
$stmt->bindValue(':codeClient', $_POST['codeClient'], PDO::PARAM_STR);
$stmt->execute();
$userExist=$stmt->fetch();

Il serait préférable d'écrire

//récupération PROPRE des variables AVANT de les utiliser
$codeClient = !empty($_POST['codeClient']) ? $_POST['codeClient'] : NULL;

if($codeClient ){
  //préparation de la requête
  $sql = 'SELECT * from clients WHERE codeClient = :codeClient';

  //exécution de la requête dans un bloc TRY/CATCH pour voir les éventuelles erreurs..
  try{
    $stmt = $pdo->prepare($sql);
    $stmt->bindValue(':codeClient', $codeClient , PDO::PARAM_STR);
    $stmt->execute();
    $userExist=$stmt->fetch();
    
  }catch(Exception $e){
     echo "Erreur " . $e->getMessage();
  }

}

( code à reproduire pour ta seconde requête (et tes futurs codes... )
0
BillyBB
 
Merci pour ta réponse !

Mais je ne comprend pas en quoi la gestion des erreurs pourrait m'aider par rapport à mon problème :/ et tu me dis qu'il est préférable d'écrire ma requête comme tu me l'as présenter ci dessus et j'en tiendrais compte pour mes futurs requête merci :) mais je pense que actuellement si je change ma requête par la tienne, ça sera la même chose et j'aurais le même problème que maintenant :/
0
BillyBB
 
j'ai juste un problème avec mes 2 boutons actuDPO et impaye :/
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > BillyBB
 
Le fait de changer le code ( la récupération PROPRE des variables AVANT de les utiliser... et de placer CHAQUE requête dans un bloc TRY/CATCH ) devrait te permettre d'obtenir certainement un message d'erreur t'indiquant où se trouve le souci...

( tu as certainement mis, dans ta bdd, le fait que tu n'autorisais pas une valeur NULL sur un de tes champs.... )
0
BillyBB > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
J'ai essayé de remplacer ma requête par la tienne et j'ai toujours le même problème, le client ne s'enregistre seulement si les deux chekbox sont cochées :/
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > BillyBB
 
Ce n'est pas que la requête qu'il faut changer ... mais TOUTES tes requêtes.
Moi je ne t'ai donné qu'un exemple ... à toi de modifier les autres...
0