Problème de syntaxe elseif/else

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 : Problème de syntaxe elseif/else

par iptima » 01 oct. 2006, 14:30

Merci Cyrano pour ces explications limpides. :lol:

Cordialement,

I.

par Cyrano » 01 oct. 2006, 14:28

Je n'ai pas fait une protection de données mais une concaténation propre : on sépare convenablement ce qui est du PHP de ce qui est une chaine de caractères sans mélanger, ce qui revient à indiquer à PHP : traite ce qui est du PHP et envoie le reste tel quel. Ta syntaxe est valide, mais force PHP à parser les chaines pour en extraire ce qui est du PHP au passage. Là, on donne de l'oxygène à l'interpréteur en ne le faisant travailler QUE sur ce qui est du PHP.

Ça ne te dispense nullement de protéger tes données avec effectivement une fonction telle que mysql_real_escape_string() :)

par iptima » 01 oct. 2006, 14:18

Bonjour,

Merci à Albat et à Cyrano pour leurs réponses rapides.

Concernant la réponse particulièrement précise de Cyrano, elle me conseille de protéger mes données pour éviter les injections Sql, si j'ai suivi. Pour ma part, je protège déjà mes données avec mysql_real_escape_string : n'est-ce pas suffisant ?

Encore merci.

I.

par Cyrano » 01 oct. 2006, 12:24

Parce que tu ne dois pas mettre de condition à vérifier dans un esle contrairement à un elseif.

J'ajouterais que ton code proprement écrit devrait davantage ressembler à ceci :
<?php
$sql = "SELECT date_modification ".
       "FROM cherc_fr ".
       "WHERE (prenom = '". $chprenom ."' ".
       "AND nom = '". $chnom ."' ".
       "AND ville = '". $chville ."')";
$result = mysql_query($sql);
if (mysql_num_rows($result) == 0)
{
    echo "Aucune ligne trouvée, rien à afficher.";
}
else
{
    while (false != ($row = mysql_fetch_assoc($result)))
    {
        echo $row["date_modification"];
    }
}
?>

par albat » 01 oct. 2006, 12:22

Cela me paraît tout à fait normal. ;)
//
else ($row = mysql_fetch_assoc($result))
Après un else, tu ne peux avoir qu'une (série d') instruction(s).
En général, on ouvre même une accolade pour placer à l'intérieur de celle-ci
les instructions que l'on souhaite exécuter dans le cas de figure envisagé.

Ici, après ton else, tu as placé une condition (= un test)
mais sans utiliser la syntaxe liée aux tests : le if.

Il te faut donc corriger cette ligne en :
//
elseif ($row = mysql_fetch_assoc($result))
// ou
else { if ($row = mysql_fetch_assoc($result))
       // ...
     }

Problème de syntaxe elseif/else

par iptima » 01 oct. 2006, 12:17

Bonjour,

Je m'adresse à vous, car je suis perplexe.

Voici mon code Php :

$sql = "SELECT date_modification FROM cherc_fr WHERE (prenom = '$chprenom' && nom = '$chnom' && ville = '$chville')";
$result = mysql_query($sql);
if (mysql_num_rows($result) == 0) {
echo "Aucune ligne trouvée, rien à afficher.";
}
elseif ($row = mysql_fetch_assoc($result)) {
echo $row["date_modification"];
 }}
Ce code fonctionne.

En revanche, si je veux remplacer elseif par else, Php me signale une erreur. Exemple, je tape :
// mêmes requêtes Sql
if (mysql_num_rows($result) == 0) {
echo "Aucune ligne trouvée, rien à afficher.";
}
else ($row = mysql_fetch_assoc($result)) {
echo $row["date_modification"];
 }}
L'interpréteur me renvoie le message d'erreur
Parse error: parse error, unexpected '{'
sur la ligne où j'ai placé mon else.

Si je supprime l'accolade au niveau du else, j'ai un problème avec mon echo.

Merci pour votre aide (plusieurs paires d'yeux valent mieux qu'une).

Cordialement,

I.