ou est l'erreur ?

AnT.
Invité n'ayant pas de compte PHPfrance

10 août 2006, 11:34

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.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

10 août 2006, 11:41

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 ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Invité
Invité n'ayant pas de compte PHPfrance

10 août 2006, 11:46

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.

Eléphant du PHP | 353 Messages

10 août 2006, 11:48

C'est quoi cette ligne 33 ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

10 août 2006, 11:56

Bonjour,

Il manquerai pas un "deux point" là:

Code : Tout sélectionner

case 'Dp1'
Quand tout le reste a échoué, lisez le mode d'emploi...

AnT.
Invité n'ayant pas de compte PHPfrance

10 août 2006, 11:57

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); 

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

10 août 2006, 12:00

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 ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

10 août 2006, 12:00

Il manquait le : signalé par @rthur,
mais aussi un break; à la fin de chaque case.

AnT.
Invité n'ayant pas de compte PHPfrance

10 août 2006, 12:03

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 ;-)

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

10 août 2006, 12:06

  1. Faudra aussi m'expliquer la différence entre les cas 'Ar1' et 'Ar2' ;
    les requêtes exécutées me semblent identiques.
  2. date étant un mot réservé, il est interdit de l'utiliser pour nommer un champ.
  3. Le comparateur LIKE fonctionne avec le caractère générique %.
  4. 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 ! 

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

10 août 2006, 12:08

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

AnT.
Invité n'ayant pas de compte PHPfrance

10 août 2006, 12:25

  1. 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 ?

Eléphant du PHP | 216 Messages

10 août 2006, 12:57

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é :D
Le PHP c'est bien, surtout quand ça marche ;) mon site
Hébergement gratuit et sans pub => Image

AnT.
Invité n'ayant pas de compte PHPfrance

10 août 2006, 13:51

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 ?

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

10 août 2006, 13:58

L'erreur vient peut-être d'une ligne antérieure au switch().
Il faudrait vérifier tout ton code...