problemes sur les variables checkbox

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : problemes sur les variables checkbox

par Cyrano » 03 mai 2005, 00:36

:)

par olivia » 03 mai 2005, 00:13

Grand merci pour ton aide Cyrano, ca marche trés bien.
Olivia

par Cyrano » 02 mai 2005, 23:58

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

par olivia » 02 mai 2005, 23:46

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

par Cyrano » 02 mai 2005, 23:23

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.

par olivia » 02 mai 2005, 23:18

Bonsoir Cyrano, je viens d'essayer avec isset mais sans aucun resultat, toujours les mêmes msg d'erreurs.

par Cyrano » 02 mai 2005, 22:54

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.

problemes sur les variables checkbox

par Invité » 02 mai 2005, 22:38

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.