Erreur case à cocher en php-mysql

Résolu/Fermé
lauraM - 19 juin 2008 à 10:36
 lauraM - 25 juin 2008 à 18:04
Bonjour,
je fais actuellement un formulaire en php-mysql.
J'ai un problème au niveau de mes case à cocher c'est-à-dire lorsque je clique sur enregistrer (envoi des données à la base de données) une erreur s'affiche telle que :
Notice: Undefined variable: contrat in C:\Documents and Settings\Administrateur\Mes documents\site essai\traitement.php on line 93
Cette erreur s'affiche pour mes cinq cases à cocher donc en espèrant que vous puissiez m'aider je vous laisse une partie de mon code.
Code du formulaire :
<html><head></head><body>
<form method="post" action="traitement.php">
<input type="checkbox" name="NC" value="Non-Conformité">Non-Conformité
<input type="checkbox" name="HM" value="Hors maintenance">Hors Maintenance
<input type="checkbox" name="Comptabilisé" value="Comptabilisé">Comptabilisé
<input type="checkbox" name="Facturé" value="Facturé">Facturé
</form>
</body></html>

Code du traitement.php :
<?php
if (isset($_POST['Contrat']))
{
$contrat=$_POST['Contrat'];
}
if (isset($_POST['NC']))
{
$nc=$_POST['NC'];
}
if (isset($_POST['HM']))
{
$hm=$_POST['HM'];
}
if (isset($_POST['Comptabilisé']))
{
$comptabilise=$_POST['Comptabilisé'];
}
if (isset($_POST['Facturé']))
{
$facture=$_POST['Facturé'];
}
$servername='localhost';
$username='root';
$password='';
$connexion=mysql_connect($servername,$username,$password) or die('Erreur de connexion '.mysql_error());
mysql_select_db("ficheintervention", $connexion) or die('Erreur de selection '.mysql_error());
$sql5= "insert into intervention values ('', '".$contrat."', '".$nc."', '".$hm."', '".$comptabilise."', '".$facture."')";
$res5=mysql_query($sql5) or die ('Exécution de la requête impossible sql5 :'.mysql_error());
mysql_close();
}
?>

Merci d'avance pour votre aide.

38 réponses

Bonjour,
Merci d'avoir pris du temps pour m'aider.
J'ai donc testé ce que vous m'aviez recommandé.
Malheureusement que je coche la case ou non il me l'inscrit coché dans la base de données. De plus quand je coche les cases une erreur s'affiche mais l'enregistrement passe comme même.
Voici l'erreur :

Notice: Undefined variable: infos in C:\Documents and Settings\Administrateur\Mes documents\site essai\traitement.php on line 19
Warning: Invalid argument supplied for foreach() in C:\Documents and Settings\Administrateur\Mes documents\site essai\traitement.php on line 19

La ligne 19 correspond à cette partie du code :

...
foreach($infos as $info){
...

Voilà et je me demandais si le deuxième $info sans s à la fin ne devait pas justement en avoir un.
Merci de votre aide précieuse.
0
Sri Lumpa Messages postés 177 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 1 juin 2010 69
25 juin 2008 à 11:04
Non en fait c'est moi qui aie fait une erreur, désolé :s

Le foreach doit être
foreach($_POST['infos'] as $info)
0
Merci clem285, j'ai effectué ce que tu ma proposé en adaptant mes variables.
Je n'ai aucunes erreurs. Les enregistrements passent que les cases soient cochées ou non.
Le souci c'est que même si je ne coche pas les cases il me les met cochées dans la base de données.
Je crois que je m'en sortirais jamais lol.
Croyez vous que le problème pourrait venir d'ailleurs?
Auriez-vous une idée ?
0
clem285 Messages postés 280 Date d'inscription samedi 29 septembre 2007 Statut Membre Dernière intervention 22 octobre 2021 83
25 juin 2008 à 10:54
regarde dans la base de donnée si la valeur par défaut n'est pas 1
le problème peut venir de là.
de plus ne serait-il pas plus simple de changer le type dans la base en le passant de bit à varchar ?
cela permettrait de pouvoir enregistrer les mots correspondant aux case à cocher ( plus simple pour refaire sortir les valeurs et pas besoin de passer par une variable intermédiaire du genre : si machin = 1 alors machin = youpi )
sinon vive les stages :p
0
Sri Lumpa Messages postés 177 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 1 juin 2010 69 > clem285 Messages postés 280 Date d'inscription samedi 29 septembre 2007 Statut Membre Dernière intervention 22 octobre 2021
25 juin 2008 à 11:07
Le problème c'est que si elle se met à modifier la structure de la base, faut modifier tout ce qui l'utilise... Selon ce qu'elle fait, ça peut prendre plus de temps de tout réadapter que de corriger ça.

Par contre l'idée que la valeur par défaut du champs soit "1" est probablement la source du problème ^^.
0
Effectivement dans ma base de données mon type est à bit(1) donc je suppose qu'il met 1 par défaut. Ensuite le problème si je change le type c'est que comme j'ai déjà beaucoup de données dans ma base de données et que les cases à cocher ont déjà comme valeur un petit carré qui signifit coché il serait embêtant pour moi d'avoir des valeurs différentes. Enfin une sorte de coupure dans ma base de donnée, j'espère que je suis assez clair sinon dite le moi.
Donc j'aimerai savoir si je change le type en varchar, comme vous me le proposez, si j'aurais toujours les mêmes valeurs actuelles c'est-à-dire les petits carrés ou si j'aurais des 1 et 0.
Merci beaucoup ca m'avance sur le problème. Et oui vive les stages lol.
0
Sri Lumpa Messages postés 177 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 1 juin 2010 69
25 juin 2008 à 11:11
Non, il me semble que le fait qu'il soit marqué bit(1) signifie que ton champs est de type bit (un 0 ou un 1) et qu'il est de taille 1. Oui je sais c'est hyper-redondant comme info.
Si tu as une vision de ta table avec PhPMyAdmin ou tout autre gestionnaire de base de données avec une interface graphique, tu dois avoir un moyen de vérifier dans la structure de la base la valeur par défaut.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ba j'ai voulu enlever le 1 qui est dans (taille/valeurs) mais il me pose une erreur comme quoi ce n'est pas un nombre si je ne veux rien mettre. De plus le type est VARCHAR quand je veux modifier des choses d'une case à cocher. Alors que sur la structure c'est bit(1).
Que dois-je faire?
0
En fait quand je veux modifier les attributs de mon champ j'ai un attribut qui s'appelle défaut. Et dans cet attribut la valeur est : Null.
C'est ca dont vous parliez?
0
Sri Lumpa Messages postés 177 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 1 juin 2010 69
25 juin 2008 à 11:21
Normal qu'il te sorte une erreur quand tu veux modifier la taille de ce champs, ce n'est pas permis de le laisser vide...

Le VARCHAR correspond à quel champs tu dis ?
(PS : je ne sais pas si tu as vu, je n'aurais pas du mettre le message à cet endroit : j'avais fait une petite erreur dans la dernière solution que je t'avais proposée, il faut remplacer dans le foreach $infos par $_POST['infos'].)
0
Sri Lumpa Messages postés 177 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 1 juin 2010 69
25 juin 2008 à 11:22
OK, donc par défaut, la valeur est NULL... ça nous arrange pas ça :s. Juste avant de faire la requete, fais un echo de toutes les variables que tu vas insérer histoire de vérifier quelles sont les valeurs que tu transmets.
0
J'ai modifier le code à l'endroit ou vous m'aviez dit qu'il y avait une erreur.
Donc ensuite j'ai refait un test et j'ai vu que quand je cochais les cases plusieurs erreurs apparaissaient plusieurs fois. En clair le code a un problème.
Si j'essai de mettre 1 au lieu de Null dans ma base de donnée croyez vous que ca pourrait fonctionner?
0
Je pense que ca serait plus facile si je met les cases à cocher en VARCHAR et que je laisse Null par défaut non?
Ca changerai mon code. Pouvez vous m'aider et me dire ce que vous en pensez?
0
Quand vous cochez votre case dans votre formulaire qu'est ce qui s'affiche habituellement dans votre base de données si ce n'est pas les valeurs car moi j'ai des petits carrés et c'est pas top!
Quel caractère avez-vous? Moi j'aimerai bien mettre les valeurs de mes checkbox ms quel requête faut-il faire pour changer le caractères par la valeur.
0
Sri Lumpa Messages postés 177 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 1 juin 2010 69
25 juin 2008 à 14:51
Quand je coche une case de ma checkbox s'affiche la valeur contenue dans l'attribut "valeur" de la balise HTML correspondante à la checkbox.
0
moi j'ai un petit carré à cause de la migration sql et jsais pas d'où sort ce caractère! En tout cas il me pose problème. Quelqu'un serait comment modifier une migration sql.
Est ce que le type TINYINT est bien le type d'un booleen en mysql???
0
Sri Lumpa Messages postés 177 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 1 juin 2010 69
25 juin 2008 à 15:32
Là je suis désolé mais j'avoue que je reste sec, je ne sais plus comment t'aider.... :s
0
Et bien en fait là je suis en train d'essayer de refaire la mifration SQL et je voudrais juste savoir quel est le type dans mysql pour un booleen. Est ce que c'est bien TINYINT ???
MERCI
0
J'ai essayé la requête proposé par clem285 mais ca ne marche pas. Mysql me dit qu'il y a une erreur de syntaxe.
Moi en fait ce que j'ai comme vakleur dans ma base de données c'est ca : 
Donc c'est ca que je voudrais changer par un 'oui' par exemple et la je pourrais mieux y arriver avec mes cases à cocher je pense.
0
C'est bon pour la requête je me suis trompé. Je vous tiens au courant. MERCI encore de toute votre aide.
0
Comment dois-je marquer le POSt en résolu ? Désolé je suis nouvelle ici
0