Page 1 sur 2
ou est l'erreur ?
Posté : 10 août 2006, 11:34
par AnT.
Bjr,
je suis dans un script qui rentre des heures dans une BD, mais il y a un big que je n'arrive pas à identifier
le code est
switch($moment)
{
case 'Ar1' :
$requete1 = "UPDATE table1 SET 'date'='$lejour' WHERE `nom` like '$nom'";
$execution = mysql_db_query("mabase", $requete1);
$requete2 = "UPDATE table1 SET arrive1='$lheure' WHERE `nom` like '$nom'";
$execution = mysql_db_query("mabase", $requete2);
case 'Ar2' :
$requete1 = "UPDATE table1 SET 'date'='$lejour' WHERE `nom` like '$nom'";
$execution = mysql_db_query("mabase", $requete1);
$requete2 = "UPDATE table1 SET arrive1='$lheure' WHERE `nom` like '$nom'";
$execution = mysql_db_query("ma base", $requete2);
case 'Dp1'
$requete1 = "UPDATE table1 SET 'date'='$lejour' WHERE `nom` like '$nom'";
$execution = mysql_db_query("mabase", $requete1);
etc...
Ce que je ne comprend pas c'est que le Case 'Ar1' ne provoque pas d'erreur alors que le case 'ar2' qui est pourtant identique provoque une erreur. Idem pour le case 'dp1'
Qqun aurais une pise pour comptrendre ce qui ne marche pas ?
Merci
AnT.
Posté : 10 août 2006, 11:41
par zeus
C'est plutôt à toi de nous donner des pistes
Qu'est ce qui te fait dire que ça ne marche pas ? Est-ce que tu as un message d'erreur ? Si ce sont les requetes qui ne marchent pas, est-ce que tu les as affichées puis vérifiées ?
Posté : 10 août 2006, 11:46
par Invité
Désolé, le msg d'erreur est :
Code : Tout sélectionner
Parse error: syntax error, unexpected T_VARIABLE in /.../php/arrivee.php on line 33
typiquement, c'est un ";" oublié en fin de ligne, mais j'ai pas l'impression que ce soit ca.
Posté : 10 août 2006, 11:48
par Tictac
C'est quoi cette ligne 33 ?
Posté : 10 août 2006, 11:56
par @rthur
Bonjour,
Il manquerai pas un "deux point" là:
Posté : 10 août 2006, 11:57
par AnT.
case 'Ar1' :
$requete1 = "UPDATE table1 SET 'date'='$lejour' WHERE `nom` like '$nom'";
$execution = mysql_db_query("mabase", $requete1);
$requete2 = "UPDATE table1 SET arrive1='$lheure' WHERE `nom` like '$nom'";
$execution = mysql_db_query("mabase", $requete2);
case 'Ar2' :
$requete1 = "UPDATE table1 SET 'date'='$lejour' WHERE `nom` like '$nom'"; // <- c'est ici la ligne 33
$execution = mysql_db_query("mabase", $requete1);
$requete2 = "UPDATE table1 SET arrive1='$lheure' WHERE `nom` like '$nom'";
$execution = mysql_db_query("ma base", $requete2);
Posté : 10 août 2006, 12:00
par zeus
2 conseils :
- ajoute des break à la fin de chaque case. Le déroulement ne s'arrete pas au prochain case

- affiche les requetes générées. J'ai dans l'idée que tu as un ' dans une de tes variables

Posté : 10 août 2006, 12:00
par albat
Il manquait le : signalé par @rthur,
mais aussi un break; à la fin de chaque case.
Posté : 10 août 2006, 12:03
par AnT.
lorsque je fais le test suivant :
case 'Ar1' :
$requete1 = "UPDATE table1 SET 'date'='$lejour' WHERE `nom` like '$nom'";
$execution = mysql_db_query("mabase", $requete1);
$requete2 = "UPDATE table1 SET arrive1='$lheure' WHERE `nom` like '$nom'";
$execution = mysql_db_query("mabase", $requete2);
case 'Ar2' :
echo $nom // <- modif ici en ligne 33
j'ai l'erreur suivante :
Code : Tout sélectionner
Parse error: syntax error, unexpected T_ECHO in /mnt/.../php/arrivee.php on line 33
ce qui me fait dire que j'ai pas du fermer un truc dans le paquet précédent, mais je trouve pas où.
---
Bonjour,
Il manquerai pas un "deux point" là:
Code:
case 'Dp1'
Si, merci, c'est corrigé, mais ca marche tjs pas ... on cherche

Posté : 10 août 2006, 12:06
par albat
- Faudra aussi m'expliquer la différence entre les cas 'Ar1' et 'Ar2' ;
les requêtes exécutées me semblent identiques.
- date étant un mot réservé, il est interdit de l'utiliser pour nommer un champ.
- Le comparateur LIKE fonctionne avec le caractère générique %.
- Sors les variables de tes chaînes de caractères.
// après avoir renommé date en champ_date et complété le LIKE...
$requete1 = "UPDATE table1 SET 'date'='$lejour' WHERE `nom` like '$nom'"; //pas bien !
$requete1 = "UPDATE table1 SET champ_date='".$lejour."' WHERE nom LIKE '%".$nom."%'"; // bien !
Posté : 10 août 2006, 12:08
par albat
case 'Ar2' :
echo $nom // <- modif ici en ligne 33
Code : Tout sélectionner
Parse error: syntax error, unexpected T_ECHO in /mnt/.../php/arrivee.php on line 33
echo $nom; // avec un ; à la fin
Posté : 10 août 2006, 12:25
par AnT.
- Faudra aussi m'expliquer la différence entre les cas 'Ar1' et 'Ar2' ;
les requêtes exécutées me semblent identiques.
Justement, elles le sont, mais le 2e provoque 1 erreur et pas la 1ere.
maintenant j'ai :
switch($moment)
{
case 'Ar1' :
$requete1 = "UPDATE table1 SET ladate='".$lejour."' WHERE nom LIKE '%".$nom."%'";
$execution = mysql_query($requete1);
$requete2 = "UPDATE table1 SET arrive1='".$lheure."' WHERE nom LIKE '%".$nom."%'";
$execution = mysql_query($requete2);
break;
case 'Ar2' :
echo "toto"; // <- c'est là la ligne 34
break;
et la réponse est :
Code : Tout sélectionner
Parse error: syntax error, unexpected T_ECHO in /mnt/---/php/arrivee.php on line 34
j'ai encore du oublier de fermer un truc, mais ou ?
Posté : 10 août 2006, 12:57
par polo
bonjour,
En effet tu a oublier un petit quelque chose
<?php switch($moment)
{
case 'Ar1' :
$requete1 = "UPDATE table1 SET ladate='".$lejour."' WHERE nom LIKE '%".$nom."%'";
$execution = mysql_query($requete1);
$requete2 = "UPDATE table1 SET arrive1='".$lheure."' WHERE nom LIKE '%".$nom."%'";
$execution = mysql_query($requete2);
break;
case 'Ar2' :
echo "toto"; // <- c'est là la ligne 34
break;
} // tu a oublié de fermer l'accolade
?>
En espérant t'avoir aidé

Posté : 10 août 2006, 13:51
par AnT.
Je continue mes tests
lors que je n'ai plus que
switch($moment)
{
case 'Ar1' :
echo "toto";
break;
case 'Ar2' :
echo "mama"; // <- c'est là la ligne 37
break;
}
et ben j'ai encore :
Code : Tout sélectionner
Parse error: syntax error, unexpected T_ECHO in /mnt/.../php/arrivee.php on line 37
là j'y pige plus rien.
Ou c'est qu'elle est pas bonne ma syntaxe case ?
Posté : 10 août 2006, 13:58
par albat
L'erreur vient peut-être d'une ligne antérieure au switch().
Il faudrait vérifier tout ton code...