Problème formulaire

Résolu/Fermé
turkish78 Messages postés 7 Date d'inscription jeudi 24 septembre 2015 Statut Membre Dernière intervention 16 octobre 2015 - 5 oct. 2015 à 16:34
DelNC Messages postés 2234 Date d'inscription samedi 25 octobre 2014 Statut Membre Dernière intervention 22 février 2020 - 11 oct. 2015 à 12:25
Bonjour,

Je débute en PHP et j'ai toujours un message d'erreur quand mes checkbox ne sont pas cochés : undefined variable, et lorsque tout est coché, il n' y a pas de problème et j'ai toute les valeurs en base de données.

Merci d'avance de votre aide

Voici mon code

<?php
require_once("inc/init.inc.php");
var_dump($_FILES);
echo '</br>';
echo '</br>';
echo '</br>';
var_dump($_POST);
echo '</br>';

extract($_POST);

if(!empty($_POST['submit'])){
	$mysqli->query("INSERT INTO competences_et_materiel(theorique_ulm, S1, S2, S3, S4, engagement_S3, engagement_S1, engagement_DGAC, chassis, type_gopro, type_nex, gh4_5d_equiv) VALUES('$theorique_ulm', '$S1', '$S2', '$S3', '$S4', '$engagement_S3', '$engagement_S1', '$engagement_DGAC', '$chassis', '$type_gopro', '$type_nex', '$gh4_5d_equiv')");
}


/*-------------------------------------- copie théorique --------------------------------------------*/
if(!empty($_FILES)){
	$file_name = $_FILES['copie_theorique']['name'];    
	$file_extension = strrchr($file_name, ".");
	
	$file_tmp_name = $_FILES['copie_theorique']['tmp_name']; 
	$file_dest = 'documents/copie_theorique/'.$file_name;
	
	$extensions_autorisees = array('.pdf', '.PDF');
	
	if(in_array($file_extension, $extensions_autorisees)){
		if(move_uploaded_file($file_tmp_name, $file_dest)){
			$fichier_bdd = RACINE_SITE."documents/copie_theorique/$file_name";
			$mysqli->query("INSERT INTO competences_docs(copie_theorique) VALUES('$fichier_bdd')");
			echo 'Fichier envoyé avec succès';
		}else{
			echo "Une erreur est survenue lors de l'envoi du fichier";
		}
	}else{
		echo 'Seul les fichiers PDF sont autorisés'; 
	}

echo '</br>';
/*----------------------------------- copie certificat MAP --------------------------------------------*/

	$file_name = $_FILES['copie_certificat_map']['name'];    
	$file_extension = strrchr($file_name, ".");
	
	$file_tmp_name = $_FILES['copie_certificat_map']['tmp_name']; 
	$file_dest = 'documents/copie_certificat_map/'.$file_name;
	
	$extensions_autorisees = array('.pdf', '.PDF');
	
	if(in_array($file_extension, $extensions_autorisees)){
		if(move_uploaded_file($file_tmp_name, $file_dest)){
			$fichier_bdd = RACINE_SITE."documents/copie_certificat_map/$file_name";
			$mysqli->query("INSERT INTO competences_docs(copie_certificat_map) VALUES('$fichier_bdd')");
			echo 'Fichier envoyé avec succès';
		}else{
			echo "Une erreur est survenue lors de l'envoi du fichier";
		}
	}else{
		echo 'Seul les fichiers PDF sont autorisés'; 
	}

echo '</br>';
/*-------------------------------- copie certificat type --------------------------------------------*/ 

	$file_name = $_FILES['certificat_type']['name'];    
	$file_extension = strrchr($file_name, ".");
	
	$file_tmp_name = $_FILES['certificat_type']['tmp_name']; 
	$file_dest = 'documents/certificat_type/'.$file_name;
	
	$extensions_autorisees = array('.pdf', '.PDF');
	
	if(in_array($file_extension, $extensions_autorisees)){
		if(move_uploaded_file($file_tmp_name, $file_dest)){
			$fichier_bdd = RACINE_SITE."documents/certificat_type/$file_name";
			$mysqli->query("INSERT INTO competences_docs(certificat_type) VALUES('$fichier_bdd')");
			echo 'Fichier envoyé avec succès';
		}else{
			echo "Une erreur est survenue lors de l'envoi du fichier";
		}
	}else{
		echo 'Seul les fichiers PDF sont autorisés'; 
	}

echo '</br>';
/*-------------------------------- copie charte engagement --------------------------------------------*/

	$file_name = $_FILES['charte_engagement']['name'];    
	$file_extension = strrchr($file_name, ".");
	
	$file_tmp_name = $_FILES['charte_engagement']['tmp_name']; 
	$file_dest = 'documents/charte_engagement/'.$file_name;
	
	$extensions_autorisees = array('.pdf', '.PDF');
	
	if(in_array($file_extension, $extensions_autorisees)){
		if(move_uploaded_file($file_tmp_name, $file_dest)){
			$fichier_bdd = RACINE_SITE."documents/charte_engagement/$file_name";
			$mysqli->query("INSERT INTO competences_docs(charte_engagement) VALUES('$fichier_bdd')");
			echo 'Fichier envoyé avec succès';
		}else{
			echo "Une erreur est survenue lors de l'envoi du fichier";
		}
	}else{
		echo 'Seul les fichiers PDF sont autorisés'; 
	}
}
?>


<!doctype [/contents/498-html-langage html]>
<head>
	<meta charset="utf-8">
	<title>Info et notes</title>
	<link rel="stylesheet" href="style.css">
	<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" rel="stylesheet">
	<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
</head>
<body>
<div id="contenu">
<form method="post" class="form-horizontal well" enctype="multipart/form-data" action="">
	<h3>Infos et note</h3>
	<label for="theorique_ulm">Théorique ULM :</label>
		<input type="radio" name="theorique_ulm" value="pilote" <?php if(isset($_POST['theorique_ulm']) && $_POST['theorique_ulm'] =="pilote") {echo 'checked';} elseif(!isset($_POST['theorique_ulm'])) {echo 'checked';} ?> /> <label>Théorique pilote</label>
		<input type="radio" name="theorique_ulm" value="instructeur" <?php if(isset($_POST['theorique_ulm']) && $_POST['theorique_ulm'] == "instructeur") {echo 'checked';}?> /> <label>Théorique instructeur</label>
	</br>
	</br>
	<label for="homologation">Homologation :</label>
		<input type="checkbox" name="S1" value="ok" /> S1
		<input type="checkbox" name="S2" value="ok" /> S2
		<input type="checkbox" name="S3" value="ok" /> S3
		<input type="checkbox" name="S4" value="ok" /> S4
	</br>
	</br>
		<input type="checkbox" name="engagement_S3" value="ok" /> <label>Engagement "demande systématique d'autorisation en S3"</label>
	</br>
	</br>
		<input type="checkbox" name="engagement_S1" value="ok" /> <label>Engagement "déclaration de vol en S1"</label>
	</br>
	</br>
		<input type="checkbox" name="engagement_DGAC" value="ok" /> <label>Engagement "utilisation exclusive d'aéronef homologué DGAC"</label>
	</br>
	</br>
	<label for="chassis">Chassis :</label>	
		<input class="" type="text" id="chassis" name="chassis" value="<?php if(isset($chassis)){echo $chassis;} ?>" />
	</br>	
	</br>	
	<label for="commande">Commande :</label>
		<input type="radio" name="commande" value="unique" <?php if(isset($_POST['commande']) && $_POST['commande'] =="unique") {echo 'checked';} elseif(!isset($_POST['commande'])) {echo 'checked';} ?> /> <label>Unique pilote cadreur</label>
		<input type="radio" name="commande" value="double" <?php if(isset($_POST['commande']) && $_POST['commande'] == "double") {echo 'checked';}?> /> <label>Double pilote cadreur</label>
	</br>
	</br>
	<label for="capteur">Capteur :</label>	
		<input type="checkbox" id="type_gopro" name="type_gopro" value="ok" /> <label>Type GoPro</label>
		<input type="checkbox" id="type_nex" name="type_nex" value="ok" /> <label>Type Nex</label>
		<input type="checkbox" id="gh4_5d_equiv" name="gh4_5d_equiv" value="ok" /> <label>GH4 - 5D - Equiv</label>
		</br>
		</br>
		
<!-------------------------------------- copie théorique -------------------------------------------->
			<div class="form-group">
                <label for="copie_t" class="col-lg-2 control-label">Joindre une copie du théorique</label>
                    <div class="col-lg-10">
                        <input type="file" class="form-control" name="copie_theorique">
						<span><?php  ?></span>
                    </div>
            </div>

<!-------------------------- copie certificat de dépot MAP ------------------------------------->		 	<div class="form-group">
                                <label for="copie_certificat_map" class="col-lg-2 control-label">Joindre une copie du certificat de dépot de MAP</label>
                                <div class="col-lg-10">
                                    <input type="file" class="form-control" id="copie_certificat_map" name="copie_certificat_map"  value="">
                                </div>
                            </div>
                     
<!-------------------------- copie certificat de type ------------------------------------->		    	<div class="form-group">
                                <label for="certificat_type" class="col-lg-2 control-label">Joindre une copie du certificat de type</label>
                                <div class="col-lg-10">
                                    <input type="file" class="form-control" id="certificat_type" name="certificat_type"  value="">
                                </div>
                            </div>
                       
<!-------------------------- charte d'engagement signée ------------------------------------->				
				<div class="form-group">
                    <label for="charte_engagement" class="col-lg-2 control-label">Joindre la charte d'engagement signée</label>
                        <div class="col-lg-10">
                            <input type="file" class="form-control" id="charte_engagement" name="charte_engagement"  value="">
                        </div>
                </div>                           
				
<!--------------------------------------------------------------------------------------------->
							
		<div class="form-group">
        <div class="col-lg-10 col-lg-offset-2">
            <button type="submit" value="submit" name="submit" class="btn btn-primary">Sauvegarder</button>
        </div>
    </div>

</form>

</body>
</html>


et voici les messages d'erreurs

2 réponses

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
6 oct. 2015 à 09:31
Salut,

Il s'agit du comportement normal des checkbox : la paramètre get ou post de la checkbox n'est envoyé que si elle est cochée. Il faut donc vérifier que le paramètre existe avant de l'utiliser :
$S1 = !empty($_POST['S1']) ? $_POST['S1'] : '';


Bonne journée
0
DelNC Messages postés 2234 Date d'inscription samedi 25 octobre 2014 Statut Membre Dernière intervention 22 février 2020 2 002
7 oct. 2015 à 12:33
Bonjour,

pour les checkbox, il faut faire attention à donner à chaque case un id différent, sinon, c'est la première valeur qui sera prise par défaut.
<table border=2>
<tr>
<td >
<input type="checkbox" name="checkbox1" value="Baseball" />
</td>
<td>   Baseball
</td>
</tr>
<tr>
<td>
<input type="checkbox" name="checkbox2" value="Basketball" />
</td>
<td>
  Basketball
</td>
</tr>
<tr>
<td>
<input type="checkbox" name="checkbox3" value="Beachvolley" />
</td>
<td>
  Beachvolley
</td>
</tr>
</tr> </h2>
</table>



Pour récupérer les données, il faut toutes les mettre dans la page où elles ont été envoyées
<?php
if (isset($_REQUEST["checkbox1"])) {
$checkbox1 = trim($_REQUEST["checkbox1"]);
}//end if
else {$checkbox1 = "";
}//end else

if (isset($_REQUEST["checkbox2"])) {
$checkbox2 = trim($_REQUEST["checkbox2"]);
}//end if
else {$checkbox2 = "";
}//end else

if (isset($_REQUEST["checkbox3"])) {
$checkbox3 = trim($_REQUEST["checkbox3"]);
}//end if
else {$checkbox3 = "";
}//end else
?>
0
turkish78 Messages postés 7 Date d'inscription jeudi 24 septembre 2015 Statut Membre Dernière intervention 16 octobre 2015
9 oct. 2015 à 11:05
merci!!! ca ma rche nickel!!
0
DelNC Messages postés 2234 Date d'inscription samedi 25 octobre 2014 Statut Membre Dernière intervention 22 février 2020 2 002 > turkish78 Messages postés 7 Date d'inscription jeudi 24 septembre 2015 Statut Membre Dernière intervention 16 octobre 2015
11 oct. 2015 à 12:25
De rien :)
0