Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 6 sur 6
  1. #1
    Membre habitué
    Inscrit en
    janvier 2011
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : janvier 2011
    Messages : 425
    Points : 100
    Points
    100

    Par défaut if considéré mal reconnu

    Hello

    J'ai un problème avec le code suivant :


    Code php :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    $db = mysql_connect('localhost', 'root', ''); 
    mysql_select_db('avion',$db); // on se connecte dans phpmyadmin à la base avion qui contient les infos
     
    $sql = "SELECT * FROM CLIENTS WHERE pseudo='".mysql_real_escape_string($pseudo)."' AND mdp='".mysql_real_escape_string($mdp)."'"; // ici on cherche que le pseudo et le mot de passe sont bien dans la base pour se connecter
     
    $req = mysql_query($sql) or die ('ERREUR '.mysql_error());
     
    $data = mysql_fetch_array($req); 
     
    echo "<p>Bonjour ".$data['gentile']." ".$data['prenom']." ".strtoupper($data['nom']); // gentile affiche si une personne est madame ou monsieur , on affiche également le prenom et le nom en majuscule
     
    echo "Vous habitez ".$data['num_voie']." ".$data['type_voie']." ".$data['nom_voie']; // ici on affiche l'adresse le numéro de porte dans la rue + le nom et le type de voie postale , exemple : 15 Boulevard de Dijon
     
    // ici avec num_bloc je suppose qu'une personne habite dans un bloc donné , par exemple : bloc d'appartement 17 . Il faut donc que je vérifie si $data['num_bloc'] n'est pas une chaine vide , si c'est le cas je ne souhaite pas afficher se champs , je renvoie une chaine vide 
     
    if (strlen($data['num_bloc'])=0) 
    { 
    $num_bloc=" ";
    }
    else
    {
    $num_bloc="Bloc d'appartement n°".$data['num_bloc'];
    }
     
    // ici avec num_porte meme principe , par exemple : porte 24 . Il faut donc que je vérifie si $data['num_porte'] n'est pas une chaine vide , si c'est le cas je ne souhaite pas afficher se champs , je renvoie une chaine vide 
     
    if (strlen($data['num_bloc'])=0)
    { 
    $num_porte=" ";
    }
    else
    {
    $num_porte="Porte n°".$data['num_porte'];
    }
     
    // au final je souhaite avoir une phrase du style : Vous habiter 15 Boulevard de Dijon , Bloc d'appartement 17  , porte 24 
     
    // problème 1 : php considère mon if comme une ligne de code ou j'affecte quelque chose , je ne vois pas d'ou se que j'ai oublié ? C'est pas == au lieu de = ?
     
    // problème 2 : strlen($machaine) est vide , si elle vide j'affiche rien , si elle est remplie j'affiche $machainebis
     
    // merci de me tuyauter ;)

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro Vincent
    Inscrit en
    juillet 2005
    Messages
    21 391
    Détails du profil
    Informations personnelles :
    Nom : Homme Vincent

    Informations forums :
    Inscription : juillet 2005
    Messages : 21 391
    Points : 31 166
    Points
    31 166

    Par défaut

    Ca aurait été bien de nous décrire le problème mais bon
    Code :
    if (strlen($data['num_bloc'])===0)

  3. #3
    Membre habitué
    Inscrit en
    janvier 2011
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : janvier 2011
    Messages : 425
    Points : 100
    Points
    100

    Par défaut

    Merci

    Par contre je viens de tomber sur cette ligne d'erreur :

    Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in C:\wamp\www\site web\monespaceclient.php on line 158
    pour le premier if .

    Apparemment une erreur de variable , la je sèche

    Ca aurait été bien de nous décrire le problème mais bon
    Selon ce qui est trouver dans le if , j'affiche une ou plusieurs partie de l'adresse . Problème php ne reconnait pas le ligne du if et ce qu'il doit y faire.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro Vincent
    Inscrit en
    juillet 2005
    Messages
    21 391
    Détails du profil
    Informations personnelles :
    Nom : Homme Vincent

    Informations forums :
    Inscription : juillet 2005
    Messages : 21 391
    Points : 31 166
    Points
    31 166

    Par défaut

    Le premier et le deuxième if ce ne seraient pas les mêmes ?

  5. #5
    Membre Expert
    Homme Profil pro
    Étudiant
    Inscrit en
    avril 2012
    Messages
    764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2012
    Messages : 764
    Points : 1 374
    Points
    1 374

    Par défaut

    Bonsoir,

    plusieurs choses,

    les fonctions mysql_ sont obsolètes, il est préférable de passer au API mysqli_ ou PDO.

    ensuite,

    mysql_select_db('avion',$db); // on se connecte dans phpmyadmin à la base avion qui contient les infos
    tu ne te connecte pas à PHPMyAdmin mais à MySQL qui sont deux choses totalement différentes,

    PHPMyAdmin est une interface web qui se connecte à MySQL pour pouvoir gérer tes bases de données (ajouter une base de donnée, ajouter une table, ...),

    alors que MySQL est le serveur de base de données.

    $data = mysql_fetch_array($req);
    ici tu utilise la fonction mysql_fetch_array() seulement imagine que t'a requête ne revoie pas de résultat, ton script plante car $req n'est pas une ressource exploitable par la fonction mysql_fetch_array().

    il faut dans ce cas utiliser les structure de contrôle if(), ou while() :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    //si ta requête ne renverra qu'un seul résultat OBLIGATOIREMENT
    //Comme par exemple pour récupérer les informations d'un utilisateur qui vient de se connecter
    if( $data = mysql_fetch_array($req) ){
        //Traitement du résultat de la requête
    }else{
        echo 'erreur aucune données n\'existe';
    }
     
    //Si ta requête risque de remonter plusieurs résultats
    //Comme par exemple récupérer toutes les pages appartenant à la catégorie toto
    while( $data = mysql_fetch_array($req) ){
        //Traitement des résultats
    }
    ensuite,

    if (strlen($data['num_bloc'])=0)
    {
    $num_bloc=" ";
    }
    else
    {
    $num_bloc="Bloc d'appartement n°".$data['num_bloc'];
    }

    if (strlen($data['num_bloc'])=0)
    {
    $num_porte=" ";
    }
    else
    {
    $num_porte="Porte n°".$data['num_porte'];
    }
    ici deux fois le même test (taille de la chaîne de caractère $data['num_bloc']),

    tu pourrait regrouper alors tes deux traitements :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    //Utilisation de la fonction empty() qui test si un variable n'est pas vide
    if ( !empty($data['num_bloc']) { 
        $num_bloc=" ";
        $num_porte=" ";
    }else{
        $num_bloc="Bloc d'appartement n°".$data['num_bloc'];
        $num_porte="Porte n°".$data['num_porte'];
    }
    La fonction empty().

    Il te suffit alors d'utiliser les variables $num_bloc et $num_porte.

  6. #6
    Membre habitué
    Inscrit en
    janvier 2011
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : janvier 2011
    Messages : 425
    Points : 100
    Points
    100

    Par défaut

    Hello

    J'ai bien pris en compte vos codes

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •