Ajouter chekbox dans un formulaire

Fermé
BillyBB - 29 janv. 2021 à 11:03
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 - 29 janv. 2021 à 13:51
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 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
29 janv. 2021 à 11:15
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
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
j'ai juste un problème avec mes 2 boutons actuDPO et impaye :/
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > BillyBB
29 janv. 2021 à 12:09
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 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
29 janv. 2021 à 13:34
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 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > BillyBB
29 janv. 2021 à 13:51
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