L'instruction switch ?
Hors ligneSalva Le 07/01/2007 à 00:20 Profil de Salva Configuration de Salva

Bonjour,

J'ai lu dans les tutoriaux le chapitre sur l'insctruction switch mais j'ai besoin de l'utiliser avec une requête SQL dans un formulaire.

Voilà ce que je veux faire.

J'ai des cases à cocher C dont les valeur sont des noms de ville
Par exemple
Madrid
Paris
Londre

J'ai aussi des champs textes qui contiennent d'autre chose mais que je n'évalue pas.

Le but étant de créer dans une base de donnée autant d'enregistrement qu'il y a de ville de coché.

J'ais mis le code suivant : (ne rigolais pas !!!)







<?php
mysql_select_db
($database_connexion, $connexion);
$query_Recordset1 = "SELECT * FROM simvu";
$Recordset1 = mysql_query($query_Recordset1, $connexion) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
$HTTP_POST_VARS['simvu']=="ok";
switch(
$C)
{
case 'Madrid' :
$sql="INSERT INTO simvu VALUES ('NULL', '$date', '$om', '$selec', '$encomb', '$C')";
mysql_query($sql)
or die('Erreur SQL !'.$sql.'
'
.mysql_error()); 
case 
'Paris' :
$sql="INSERT INTO simvu VALUES ('NULL', '$date', '$om', '$selec', '$encomb', '$C')";
mysql_query($sql)
or die('Erreur SQL !'.$sql.'
'
.mysql_error()); 
case 
'Londres' :
$sql="INSERT INTO simvu VALUES ('NULL', '$date', '$om', '$selec', '$encomb', '$C')";
mysql_query($sql)
or die('Erreur SQL !'.$sql.'
'
.mysql_error());
break;
}
?>



JE n'ai pas d'erreur sur ma page ni au chargement ni lors de l'envoi du formulaire.
Par contre rien ne s'inscrit dans la DB

Merci de votre aide.

Salutations.
Hors ligneAnthony Le 07/01/2007 à 19:06 Profil de Anthony Configuration de Anthony

Admin
Salut,

il faut faire case 'Madrid': et non case Madrid, en gros vu que ce sont des chaînes de caractères, il faut les entourer de guillemets.

Pense également à éviter le SELECT *, mets le nom des champs que tu souhaites sélectionner, même si tu souhaites les sélectionner tous.

a +
--

Hors ligneSalva Le 07/01/2007 à 19:57 Profil de Salva Configuration de Salva

Salut,

Effectivement ca marche mieux, mais c'est pas encore ca !!!

Lorsque je coche les trois case, dans la BD il n'y a que l'enregistrement avec la derniere ville que se crée !!!
SI je ne coche que l'une ou l'autre des 2 premiéres cases, il n'y a rien qui s'inscrit dans la BD.



Merci encore de ton aide.

@+
Hors ligneAnthony Le 07/01/2007 à 20:38 Profil de Anthony Configuration de Anthony

Admin
Normal, faut passer par des conditions if séparées dans ce cas :)
--

Hors ligneSalva Le 07/01/2007 à 22:07 Profil de Salva Configuration de Salva

Salut,

Bon ben, je suis pas plus doué pour le If que pour le Switch

J'ai essayé ca mais sans succès






<?php

if($HTTP_POST_VARS['simvu']=="ok" AND C1=='Londres')
{
$sql="INSERT INTO simvu VALUES ('NULL', '$date', '$om', '$selec', '$encomb', '$C1')";
mysql_query($sql)
or die('Erreur SQL !'.$sql.'
'
.mysql_error()); 
}
if(
$HTTP_POST_VARS['simvu']=="ok" AND C2=='Madrid')
{
$sql="INSERT INTO simvu VALUES ('NULL', '$date', '$om', '$selec', '$encomb', '$C2')";
mysql_query($sql)
or die('Erreur SQL !'.$sql.'
'
.mysql_error()); 
}
if(
$HTTP_POST_VARS['simvu']=="ok" AND C3=='Paris')
{
$sql="INSERT INTO simvu VALUES ('NULL', '$date', '$om', '$selec', '$encomb', '$C3')";
mysql_query($sql)
or die('Erreur SQL !'.$sql.'
'
.mysql_error()); 
}


?>



Arff, Je suis définitivement nullisime

Hors ligneAnthony Le 08/01/2007 à 18:26 Profil de Anthony Configuration de Anthony

Admin
Tes conditions ressemblent à ça : if($HTTP_POST_VARS['simvu']=="ok" AND C1=='Londres')

seulement C1 là c'est incorrect comme syntaxe, sauf si C1 est une constante ce qui n'est pas le cas. donc $C1 :)
--

Hors ligneSalva Le 08/01/2007 à 18:52 Profil de Salva Configuration de Salva

Salut,

Merci pour ta patience infinie ...

J'ai donc fait les modif et maintenant ca me pose le même problème qu'avec le switch.

L'enregistrement n'est créé que pour la derniére case coché. C'est comme si le code pour C1 et C2 n'existait pas.

Je comprend rien. Ca m'ennerve parce que je pense que c'est tout con à faire comme truc.



Pour info mes cases à coché se nomme C1, C2 et C3. Mais la je l'ai ai renommé $C1, $C2 et $C3

@+
Hors ligneAnthony Le 08/01/2007 à 19:55 Profil de Anthony Configuration de Anthony

Admin
Regarde la section PHP sur les formulaires, et surtout sur les cases à cocher, tu verras qu'on utilise isset() pour vérifier si des cases sont cochées ou non.

a +
--

Hors ligneSalva Le 09/01/2007 à 23:58 Profil de Salva Configuration de Salva

Salut,

Affectivement avec isset, ca marche mieux

Il me reste deux petit truc à régler.

Lorsque je coche des cases et que j'envoi le formulaire, j'envoi les données vers la base et je reviens sur la même page et les cases ne sont plus coché. Ca s'est bon mais si à ce moment j'actualise ma page dans le navigateur, le formulaire renvoi les valeurs précédente même si aucune case n'est coché.

l'autre truc c'est sur ma page qui reprend les informations dans la BD et qui les affiches en fonction des dates demandées.
Si j'envoi le formulaire sans renseigner la date, j'affiche sur ma page un texte parceque dans ma Bd j'ai créé un enregistrement avec le champ date vide. La c'est normal. Mais si je renseigne une date qui ne correspond à aucun enregistrement je voudrais que ca m'affiche le même texte et j'ai pas envie biensur de renseigner les 365 jours de l'année !!! je renseigne que les dates qui me servent.

Mais là je sais pas faire.

Merci

@+
Vous avez résolu votre problème avec VIC ? Faites-le savoir sur les réseaux sociaux !
Vulgarisation-informatique.com
Cours en informatique & tutoriels