IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[SQL]Variable qui ne renvoie pas le résultat mais la requête:


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2018
    Messages : 13
    Par défaut [SQL]Variable qui ne renvoie pas le résultat mais la requête:
    Bonjour,

    désolé si le titre est pas évident, mais j'ai du mal à expliquer moi-même le souci...

    J'ai lancé la ligne suivant dans mon code:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
                $userperso = "SELECT n.iduser, n.nom, n.prenom, n.sexe, n.datedenaissance, n.rn, n.etatcivil, n.adresserue FROM rh n WHERE n.iduser=".$login_session."";
     
    /*******************************************************
    Affichage des informations personnelles de l'utilisateur
    ********************************************************/
     
            echo $userperso; 
     
    ?>

    Mon souci, c'est qu'au lieu de me renvoyer le résultat (la valeur de iduser, nom, prenom etc pour le user dont le iduser est = au login de session (variable définie ailleurs), ce couillon ne me renvoie que ceci comme résultat:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT n.iduser, n.nom, n.prenom, n.sexe, n.datedenaissance, n.rn, n.etatcivil, n.adresserue FROM rh n WHERE n.iduser="Utilisateurtest"

    L'utilisateur est bon à la fin, mais pourquoi il ne m'affiche pas le résultat (la valeur de userperso en gros) ???

    Merci d'avance et surtout si vous n'y comprenez rien, c'est normal

    PS: si je lance la requête suivante directement sur le serveur, j'ai toutes les réponses voulues:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT n.iduser, n.nom, n.prenom, n.sexe, n.datedenaissance, n.rn, n.etatcivil, n.adresserue FROM rh n WHERE n.iduser="Utilisateurtest"

    donc, le souci ne vient pas de la requête, mais du passage de la valeur entre la requête et la variable je pense... ?

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 623
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Vous alimentez une variable "$userperso " avec une chaine de caractères qui est le texte d'une requête, puis vous demandez l'affichage (echo) du contenu de cette variable.
    Il est donc tout à fait normal que vous obteniez le texte de cette requête...

    Celà étant, votre question n'a rien à voir avec le SGBD SQL Server, il faut la poser dans le forum PHP

  3. #3
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2018
    Messages : 13
    Par défaut
    Bonjour,

    avez-vous bien lu le PS complet ? en fait, si je lance cette requête directement sur le serveur WAMP dans l'onglet SQL je n'ai aucun souci, le hic, c'est qu'ici, il ne me renvoie pas le résultat escompté...

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1- escartefigue a parfaitement raison.

    2- Vous ne savez pas lancer/exécuter une requête en PHP ?
    • avec PDO ?
    • avec mysqli ?

  5. #5
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2018
    Messages : 13
    Par défaut
    je ne dis pas qu'il a tort, juste que le souci c'est de comprendre pourquoi il me renvoie la requête au lieu du résultat de cette dernière, j'y arrive très bien sur d'autres pages et pas avec celle-ci...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $req2 = "SELECT n.idcir_col, n.numero, n.datedepublication, n.datededebut, n.datedefin, n.description FROM cir_col n WHERE n.destinataire ".$dest." AND n.datedepublication IS NOT NULL AND n.datededebut < CURDATE() AND ( datedefin > CURDATE() OR datedefin IS NULL )";
    $res2 = mysqli_query($db, $req2) or die ("La requête à échoué");
    $nbr_row = $res2->num_rows ;
    Fonctionne par exemple très bien...

    PS: je viens de tester en adaptant un peu...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
            <?php
            $userperso = "SELECT n.iduser, n.nom, n.prenom, n.sexe, n.datedenaissance, n.rn, n.etatcivil, n.adresserue FROM rh n WHERE n.iduser=".$login_session."";
            $result = mysqli_query($db,$userperso) or die('Turlututu');
            $userpersoinfo = mysqli_fetch_array($result);
    /*******************************************************
    Affichage des informations personnelles de l'utilisateur
    ********************************************************/
            echo $userpersoinfo; 
            ?>
    Maintenant il me renvoie un Turlututu....

  6. #6
    Invité
    Invité(e)
    Par défaut
    Il manque le script de connexion à la base de données ($db).

    Style procédural:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $db = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db');

  7. #7
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2018
    Messages : 13
    Par défaut
    il est dans le fichier config.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
       define('DB_SERVER', 'localhost');
       define('DB_USERNAME', 'root');
       define('DB_PASSWORD', '*******');
       define('DB_DATABASE', 'privateserver');
       $db = mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE);
       mysqli_set_charset($db,"utf8");
    ?>

  8. #8
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2018
    Messages : 13
    Par défaut
    Personne n'a une idée ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        <div class="sousmenu">
            <?php
            $userperso = "SELECT n.iduser, n.nom, n.prenom, n.sexe, n.datedenaissance, n.rn, n.etatcivil, n.adresserue FROM rh n WHERE n.iduser ".$login_session."";
            $result = mysqli_query($db,$userperso) or die('Turlututu');
            $userpersoinfo = mysqli_fetch_array($result);
    /*******************************************************
    Affichage des informations personnelles de l'utilisateur
    ********************************************************/
            echo $userpersoinfo; 
            ?>
        </div>
    pour l'instant, il me retourne turlututu, donc je pense qu'il ne fait pas la requête, mais pourquoi ??

    PS: après avoir testé en direct sur le serveur via la requête suivante, ça me renvoie bien les infos:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT n.iduser, n.nom, n.prenom, n.sexe, n.datedenaissance, n.rn, n.etatcivil, n.adresserue FROM rh n WHERE n.iduser="vendlion001"
    par contre, lorsque je recopie celle-ci (donc, en remplaçant le .$login_session.) j'ai l'erreur suivante qui survient, je ne sais pas si ça vous parle:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ( ! ) Parse error: syntax error, unexpected 'vendlion001' (T_STRING) in C:\wamp64\www\auhnt\grh\infoperso.php on line 20

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Je t'ai dis pourquoi... mais tu es tellement plein de "certitudes"...

    1- Où et comment est inclus le fichier config.php ?

    2- Ensuite, il faut boucler sur les résultats obtenus.

    As-tu fais quelques recherches (syntaxe mysqli,...) ?

  10. #10
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2018
    Messages : 13
    Par défaut
    détrompes-toi, je ne suis qu'un modeste autodidacte plein de doutes...

    il est dans le fichier session.php et est appelé au début de session...

    note qu'en changeant le contenu du $userperso comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT n.iduser, n.nom, n.prenom, n.sexe, n.datedenaissance, n.rn, n.etatcivil, n.adresserue FROM rh n WHERE n.iduser='.$login_session.'"
    en gros, en remplaçant les "" par des '', je n'ai plus le message turlututu, mais il ne m'affiche toujours pas de résultat... mais bon, je progresse tel le petit scarabée que je suis, lentement, mais sûrement, enfin, j'espère

  11. #11
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2018
    Messages : 13
    Par défaut
    Ok, je pense que je vais plutôt prendre le problème à l'envers et vous expliquer ce que je cherche à faire, ce sera probablement plus facile pour vous tous.

    Donc, j'ai une table rh contenant les informations de mes utilisateurs, de cette table, j'aimerai afficher les infos suivantes "nom, prénom, id, etc" dans un tableau sur une page.
    Pour ce faire, j'ai voulu tout d'abord tenter la facilité, à savoir, entrer une variable contenant la requête reprise plus haut, et afficher le contenu de cette variable "$userinfoperso".

    Si quelqu'un pouvait me guider sur le chemin à suivre pour arriver à bon port ?

    Merci d'avance, et bonne journée ! tous !

    L.

  12. #12
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Bon. Vu ton 1er message, on peut supposer que ton niveau en PHP / mysqli est proche du zéro absolu...
    Je vais donc essayer d'écrire/expliquer ce code pour toi.

    Il faut utiliser une requête préparée mysqli (voir le style procédural).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?php
    // on crée une requête préparée
    $sql = "SELECT n.iduser, n.nom, n.prenom, n.sexe, n.datedenaissance, n.rn, n.etatcivil, n.adresserue 
       FROM rh n 
       WHERE n.iduser = ?";
     
    $stmt = mysqli_prepare($db, $sql);
     
        /* Lecture des marqueurs */
        mysqli_stmt_bind_param($stmt, "i", $login_session); // "i" : numérique ("integer")
     
        /* Exécution de la requête */
        mysqli_stmt_execute($stmt);
     
        /* Lecture des variables résultantes */
        mysqli_stmt_bind_result($stmt, $iduser, $nom, $prenom, $sexe, $datedenaissance, $rn, $etatcivil, $adresserue);
     
        /* Récupération des valeurs */
        mysqli_stmt_fetch($stmt); // une seule ligne de résultat
     
    	// AFFICHAGE (A ADAPTER à ton besoin)
    ?>
    	<p>Nom/Prénom : <?php echo $nom.' '.$prenom; ?></p>
    	<p>Sexe : <?php echo $sexe; ?></p>
    	<p>Date de naissance : <?php echo $datedenaissance; ?></p>
    	.....
     
    <?php
        /* Fermeture du traitement */
        mysqli_stmt_close($stmt);

  13. #13
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2018
    Messages : 13
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    <!DOCTYPE html>
    <?php 
    	require '../includes/session.php';
    	require '../includes/lienactif.php';
        require '../includes/controle.php'; 
    ?>
    <html>
    <head>
    	<title>Gestion des ressources humaines</title>
        <meta charset="utf-8">
        <link rel="stylesheet" type="text/css" href="../style/style.css" media="all">
    </head>
    <body>
    	<?php
    		include '../includes/en-tete.php';
    		include '../includes/menu.php';
    	?>
        <div class="sousmenu">
    <?php
    // Creation de la connection
     
    $conn = new mysqli(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
    // Check de la connection
    if ($conn->connect_error) 
    {
        die("Connection failed: " . $conn->connect_error);
    } 
     
    $sql = "SELECT n.iduser, n.nom, n.prenom, n.sexe, n.datedenaissance, n.rn, n.etatcivil, n.adresserue, n.adressenum, n.adressebte, n.adressecp, n.adresseville, n.adressepays, n.persotel, n.persogsm, n.persomail, n.persoiban, n.persobic, n.contactnom, n.contactprenom, n.contacttel, n.contactgsm, n.contactlien, n.contactrmq, n.proidadrresse, n.protel, n.progsm, n.promail, n.protype, n.profontcion, n.promatricule, n.vehiculemarque, n.vehiculemodele, n.vehiculeplaque FROM rh n WHERE iduser='$login_session'";
    $result = $conn->query($sql);
     
    if ($result = $result->num_rows > 0) 
     
        {  
        // affichage des infos pour chaque champ
            while($row = $result->fetch_assoc()) 
            {
     
            echo "
            iduser: " .$row["iduser"]. " <br> 
            Nom: " .$row["nom"]. " <br>
            Prénom:" .$row["prenom"]. " <br> 
            Sexe:" .$row["sexe"]. " <br> 
            Date de naissance:" .$row["datedenaissance"]. " <br>
            Registre national:" .$row["rn"]. " <br> 
            État civil:" .$row["etatcivil"]. " <br> 
            Rue:" .$row["adresserue"]. " <br> 
            Numéro:" .$row["adressenum"]. " <br> 
            Boite:" .$row["adressebte"]. " <br> 
            Code postal:" .$row["adressecp"]. " <br> 
            Ville:" .$row["adresseville"]. " <br> 
            Pays:" .$row["adressepays"]. " <br> 
            Téléphone perso:" .$row["persotel"]. " <br> 
            Gsm perso:" .$row["persogsm"]. " <br> 
            Mail perso:" .$row["persomail"]. " <br> 
            Iban perso:" .$row["persoiban"]. " <br> 
            Bic perso:" .$row["persobic"]. " <br> 
            Nom de la personne de contact:" .$row["contactnom"]. " <br>
            Prenom de la personne de contact:" .$row["contactprenom"]. " <br> 
            Téléphone de la personne de contact:" .$row["contacttel"]. " <br> 
            Gsm de la personne de contact:" .$row["contactgsm"]. " <br> 
            Lien de la personne de contact:" .$row["contactlien"]. " <br> 
            Remarque:" .$row["contactrmq"]. " <br> 
            Adrresse pro:" .$row["proidadrresse"]. " <br> 
            Tel pro:" .$row["protel"]. " <br> 
            Gsm pro:" .$row["progsm"]. " <br> 
            Mail pro:" .$row["promail"]. " <br> 
            Type pro:" .$row["protype"]. " <br> 
            Fontcion pro:" .$row["profontcion"]. " <br> 
            Matricule:" .$row["promatricule"]. " <br> 
            Marque du vehicule:" .$row["vehiculemarque"]. " <br> 
            Modèle du vehicule:" .$row["vehiculemodele"]. " <br> 
            Plaque du vehicule:" .$row["vehiculeplaque"]. " <br> ";
            }
        } 
        else 
    {
    echo "0 results";
    }
    $conn->close();
    ?>
    </body>
    </html>
    Voici où j'en suis actuellement grâce à ton aide, j'avance lentement, mais j'avance, c'est le principal, next erreur maintenant, il me renvoie :

    ( ! ) Fatal error: Uncaught Error: Call to a member function fetch_assoc() on boolean in C:\wamp64\www\auhnt\grh\infoperso.php on line 36
    Pour info, quand je lance la requête SELECT dans SQL en direct, aucun souci pour obtenir mes colonnes....une idée?
    Voici ce que j'obtient lorsque je lance un print_r($result);

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysqli_result Object ( [current_field] => 0 [field_count] => 34 [lengths] => [num_rows] => 1 [type] => 0 )
    Merci d'avance,

  14. #14
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Par défaut
    le type de la variable $result est passé de query à boolean.

    remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if ($result = $result->num_rows > 0)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if ( $result->num_rows > 0)

  15. #15
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2018
    Messages : 13
    Par défaut
    C'était bien ça, on peut fermer, merci encore armel18 pour ton aide, à force d'avoir la tronche dans le code, je voyais pas mon erreur...


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

Discussions similaires

  1. Requete qui ne renvoie pas de résultat
    Par bruno782 dans le forum Requêtes
    Réponses: 6
    Dernier message: 01/08/2019, 13h39
  2. Fonction Aggr qui ne renvoie pas les résultats attendus
    Par christelle_s dans le forum QlikView
    Réponses: 1
    Dernier message: 21/11/2013, 14h07
  3. requete SQL incomplète qui ne renvoie pas le résultat attendu
    Par ballantine's dans le forum Langage SQL
    Réponses: 14
    Dernier message: 07/10/2010, 07h23
  4. [MySQL] Une requête update qui ne renvoie pas d'erreur mais qui n'update pas
    Par Marc22 dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 16/06/2010, 17h59
  5. Fonction récursive qui ne renvoie pas le résultat
    Par mathieugamin dans le forum Langage
    Réponses: 4
    Dernier message: 05/11/2007, 10h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo