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 :

Requête invalide venant d'une requête SQL correcte [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Par défaut Requête invalide venant d'une requête SQL correcte
    Bonjour à tous,

    Voilà ma requête PHP... pouvez vous me dire en quoi elle est fausse???

    Merci beaucoup de votre aide... car je cale :s

    $sql="SELECT nom, prenom, telephone, datenaissance, nation_personne.nationalite, rue, numero, code_postal, ville, nation_domicile.pays
    FROM personnes as p, personnedomicile as pd, domiciles as d, nation as nation_domicile, nation as nation_personne
    where p.idpersonne=pd.idpersonne, d.iddomicile=pd.iddomicile, d.idnation=nation_domicile.idnation, p.idnation=nation_personne.idnation";


    S'il faut plus d'explication pcq à première vue la structure de la requête serait bonne... dites le moi et je vous expliquerais plus en détails.

    Merci encore

  2. #2
    Membre émérite Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Par défaut
    Hello,

    Il faut que tu fasses des jointures comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $sql="SELECT nom, prenom, telephone, datenaissance, nation_personne.nationalite, rue, numero, code_postal, ville, nation_domicile.pays
    FROM personnes as p
    LEFT JOIN personnedomicile as pd ON p.idpersonne=pd.idpersonne
    LEFT JOIN domiciles as d ON d.iddomicile=pd.iddomicile
    LEFT JOIN nation as nation_domicile ON d.idnation=nation_domicile.idnation
    LEFT JOIN nation as nation_personne ON p.idnation=nation_personne.idnation";
    @+
    Cadou

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Par défaut
    Merci beaucoup d'avoir regardé.

    J'ai donc utilisé les jointures comme tu me les as proposé. Cependant, il m'annonce toujours requête invalide.

    Je te joins ici l'ensemble de mon script : Si tu vois quelques chose qui manque. Parce que moi ça fais déjà 24h que je bloque sur cette requête.

    Merci encore...

    Script:
    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
     
    <html><head><title>Affichage de tous les membres</title></head>
    <body>
    <?php
     
    #utilisateur/serveur/mot de passe
    $db_user = $_SERVER['DB_USER'];
    $db="eheins_$db_user";                                             /*définition de la base de donnée*/
    $db_pass = $_SERVER['DB_PASS'];
    $db_host = 'localhost';
     
    #connexion à MySQL
    $link= mysql_connect($db_host, $db_user, $db_pass);
    if (! $link)
    die("Impossible de se connecter à MySQL");
     
    #sélection de la base de donnée
    mysql_select_db($db, $link)
    or die("Impossible d'ouvrir la base de donnée $db: ".mysql_error());
     
     
     
    #définition requête SQL
    $sql="SELECT nom, prenom, telephone, datenaissance, nation_personne.nationalite, rue, numero, code_postal, ville, nation_domicile.pays
    FROM personnes as p
    LEFT JOIN personnedomicile as pd ON p.idpersonne=pd.idpersonne
    LEFt JOIN domiciles as d ON d.iddomicile=pd.iddomicile
    LEFT JOIN nation as nation_domicile ON d.idnation=nation_domicile.idnation
    LEFT JOIN nation as nation_personne ON p.idnation=nation_personne.idnation";
     
    #exécuter la requête
    $result=mysql_query($sql) 
    or die ("Requête invalide");
     
    #affichage des résultats de la requête
    $num_rows = mysql_num_rows($result);
    print "Affichage des membres<br><br>";
    print "Il y a $num_rows membres.<P>";
     
    print "<table width=900 border=4 >\n";
    print "<tr><td>Nom</td><td>Prenom</td><td>Téléphone</td><td>Date de naissance</td><td>Nationnalité</td><td>Adresse</td><td>Numéro</td><td>Code postal</td><td>Ville</td><td>Pays</td></tr>";
    while ($get_info = mysql_fetch_row($result)){ 
    print "<tr>\n";
    foreach ($get_info as $field) 
    print "\t<td><b><font face=arial size=2/>$field</font></b></td>\n";
    print "</tr>\n";
    }
    print "</table>\n";
     
    mysql_close($link);
    ?>
    <form method="POST" action="pageprincipale.php">
    <input type="submit" value="Interface">
    </form>
    </body>
    </html>
    Voici, un autre essaie de ma part en incluant des variables... ça marche pas

    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
    <html><head><title>Affichage de tous les membres</title></head>
    <body>
    <?php
     
    #utilisateur/serveur/mot de passe
    $db_user = $_SERVER['DB_USER'];
    $db="eheins_$db_user";                                             /*définition de la base de donnée*/
    $db_pass = $_SERVER['DB_PASS'];
    $db_host = 'localhost';
     
    #connexion à MySQL
    $link= mysql_connect($db_host, $db_user, $db_pass);
    if (! $link)
    die("Impossible de se connecter à MySQL");
     
    #sélection de la base de donnée
    mysql_select_db($db, $link)
    or die("Impossible d'ouvrir la base de donnée $db: ".mysql_error());
     
    #Déclaration des variables
    $idpersonne=$_POST['idpersonne'];
    $nom=$_POST['nom'];
    $prenom=$_POST['prenom'];
    $telephone=$_POST['telephone'];
    $datenaissance=$_POST['datenaissance'];
    $idnation=$_POST['idnation'];
    $nationalite=$_POST['nationalite'];
    $rue=$_POST['rue'];
    $numero=$_POST['numero'];
    $code_postal=$_POST['code_postal'];
    $ville=$_POST['ville'];
    $iddomicile=$_POST['iddomicile'];
    $pays=$_POST['pays'];
     
     
    #définition requête SQL
    $sql="SELECT $nom, $prenom, $telephone, $datenaissance, nation_personne.$nationalite, $rue, $numero, $code_postal, $ville, nation_domicile.$pays
    FROM personnes as p
    LEFT JOIN personnedomicile as pd ON p.$idpersonne=pd.$idpersonne
    LEFt JOIN domiciles as d ON d.$iddomicile=pd.$iddomicile
    LEFT JOIN nation as nation_domicile ON d.$idnation=nation_domicile.$idnation
    LEFT JOIN nation as nation_personne ON p.$idnation=nation_personne.$idnation";
     
    #exécuter la requête
    $result=mysql_query($sql) 
    or die ("Requête invalide");
     
    #affichage des résultats de la requête
    $num_rows = mysql_num_rows($result);
    print "Affichage des membres<br><br>";
    print "Il y a $num_rows membres.<P>";
     
    print "<table width=900 border=4 >\n";
    print "<tr><td>Nom</td><td>Prenom</td><td>Téléphone</td><td>Date de naissance</td><td>Nationnalité</td><td>Adresse</td><td>Numéro</td><td>Code postal</td><td>Ville</td><td>Pays</td></tr>";
    while ($get_info = mysql_fetch_row($result)){ 
    print "<tr>\n";
    foreach ($get_info as $field) 
    print "\t<td><b><font face=arial size=2/>$field</font></b></td>\n";
    print "</tr>\n";
    }
    print "</table>\n";
     
    mysql_close($link);
    ?>
    <form method="POST" action="pageprincipale.php">
    <input type="submit" value="Interface">
    </form>
    </body>
    </html>

  4. #4
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mai 2004
    Messages : 44
    Par défaut
    On peut avoir le message d'erreur exact stp?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Par défaut
    voilà le message d'erreur...

    Parse error: syntax error, unexpected T_STRING in /var/web/s072367/public_html/works/affichage_tous_membres.php on line 46

  6. #6
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mai 2004
    Messages : 44
    Par défaut
    Ta version avec variables ne fonctionne pas car tu fais un select sur des colonnes "variables"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // Admettons que dans notre cas $POST['nom'] = 'test'
    $nom = $POST['nom'];
     
    SELECT $nom FROM ...
    Cela veut dire que tu veux sélectionner la colonne test. Ce genre d'utilisation est plus fréquente dans la clause WHERE

    Ensuite pour ta requête invalide, je suppose que tu as un PHPMyAdmin? Essaye ta requête via PHPMyAdmin et dis nous ce qu'il en est.
    Et plutot que de faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    or die('Requete invalide');
    // Fait plutot
    or die (mysql_error());
    // Cela va te permettre d avoir un message d erreur bien plus explicite

    Si cela ne fonctionne toujours pas, peut tu nous donner un idée de ton schéma de BDD

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

Discussions similaires

  1. [AC-2010] Problème à l'exécution d'une requête suppression basée sur une requête sélection
    Par Philippe1975 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 14/06/2013, 22h21
  2. Réponses: 9
    Dernier message: 19/12/2011, 17h11
  3. Réponses: 5
    Dernier message: 18/02/2009, 09h52
  4. Réponses: 1
    Dernier message: 13/02/2009, 10h13
  5. passer d'une requêtes SGL directe en une requête normale
    Par jenniferIUP dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 04/02/2009, 08h26

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