Page 1 sur 1

problemes sur les variables checkbox

Posté : 02 mai 2005, 22:38
par Invité
Bonsoir à tous, j'ai un message d'erreur si je choisi de ne pas envoyer une de mes variables dans ma bdd en postant mon formulaire. Pourriez vous me conseiller svp.


fichier formulaire d'envoi
<form name="form" method="post" action="insertion.php" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="100000">
<input type="file" name="img">
<br><br>
<input type="checkbox" name="clim" value="Oui"> Climatisation
<br>
<input type="checkbox" name="clim_auto" value="Oui"> Climatisation automatique<br>
<input type="submit" name="submitFile" value="Envoyer " />
</form>



fichier insertion.php
<?
$destination_dir = 'photo/';
$file_max_size = 100000;
$authorized_extensions = array('jpg', 'gif');

if (isSet($_POST['submitFile'])) {
if (isSet($_FILES) && is_array($_FILES)) {
if ($_FILES['img']['error'] == UPLOAD_ERR_OK) {
if ($_FILES['img']['size'] <= $file_max_size) {
$lastPos = strRChr($_FILES['img']['name'], ".");
if ($lastPos !== false && in_array(strToLower(subStr($lastPos, 1)), $authorized_extensions)) {
$destination_file = time().formatFileName($_FILES['img']['name']);

if (move_uploaded_file($_FILES['img']['tmp_name'],
$destination_dir.DIRECTORY_SEPARATOR.$destination_file)) {
echo 'Fichier valide et uploadé correctement.';
} else {
echo 'Le fichier n\'a pas été uploadé correctement !';
}
} else {
echo 'Mauvaise extension !';
}
} else {
echo 'Fichier trop volumineux !';
}
}
}
} else {
echo 'Pas de fichier recu';
}
}


$clim = $_POST['clim'];
$clim_auto = $_POST['clim_auto'];
$destination_lect = 'photo/';

$db_link = @mysql_connect($sql_serveur,$sql_user,$sql_passwd);
if(!$db_link) {echo "Connexion impossible à la base de données <b>$sql_bdd</b> sur le serveur <b>$sql_server</b><br>Vérifiez les paramètres du fichier"; exit;}
$result=mysql_db_query($sql_bdd,"INSERT INTO entrer VALUES ('','$destination_lect$destination_file','$clim','$clim_auto',now(),'$heure')",$db_link) or die(mysql_error());
$id= mysql_insert_id();
mysql_close($db_link);
?>

Si je n'envoie pas la variable img il me met
undefined variable: destination_file
Si je choisie de ne pas envoyer l'un des checkbox donc l'une des variables correspondantes, il me met
undefined index: clim
ou bien
undefined index: clim_auto

Merci pour votre aide.

Posté : 02 mai 2005, 22:54
par Cyrano
Ok, à première vue, il y a plusisurs problèmes.
Pour els variables $clim et $clim_auto, elles ne sont pas initialisées. Il faut d'abord les récupérer :
if (isset($_POST['submitFile']))
{
    $clim = $_POST['clim'];
    $clim_auto = $_POST['clim_auto'];
// .... etc...
Ensuite, S'il n'y a pas de fichier sélectionné, il y aura des variables indéfinies lors de l'exécution de la requête puisqu'en vérifiant :
 if (isset($_FILES) && is_array($_FILES))
La réponse sera FALSE et par conséquent, on initialisera pas ces variables.

Personnellement, je traiterais le problème en deux phase :
-1- traitement du fichier s'il existe : insertion ds infos sur le fichier dans la base
-2- Si l'étape 1 s'est bien déroulée, traitement des informations $clim et $clim_auto

Comme ça, pas d'erreur et on rentre pas de données si le fichier n'est pas là, mais on a nos variables correctement initialisées.

Posté : 02 mai 2005, 23:18
par olivia
Bonsoir Cyrano, je viens d'essayer avec isset mais sans aucun resultat, toujours les mêmes msg d'erreurs.

Posté : 02 mai 2005, 23:23
par Cyrano
Bonsoir Cyrano, je viens d'essayer avec isset mais sans aucun resultat, toujours les mêmes msg d'erreurs.
Attends une seconde: essayé quoi avec isset() ??
Au besoin, montre moi tes modifications que je puisse suivre.

Posté : 02 mai 2005, 23:46
par olivia
j'ai essayé l'exemple que tu as mis plus haut.
En lisant le tuto, je voie isset() verifit si la variable est definie. Quand je l'envoie elle est deja defini dans mon fichier de reception par $_POST mais elle est vide si je n'ai pas coché ma case dans le formulaire.
C'est la qu'il me met
undefinited index: clim
Il n'y aurait pas un moyen de signaler au serveur acceptation de variable vide.
Merci Cyrano

Posté : 02 mai 2005, 23:58
par Cyrano
if(isset($_POST['clim']))
{
    $clim = $_POST['clim'];
}
else
{
    $clim = "";
}
comme ça, $clim sera toujours défini: valeur ou chaine vide, mais existante.

Posté : 03 mai 2005, 00:13
par olivia
Grand merci pour ton aide Cyrano, ca marche trés bien.
Olivia

Posté : 03 mai 2005, 00:36
par Cyrano
:)