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 :

Erreur sql dans fichier PHP


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 319
    Points : 89
    Points
    89
    Par défaut Erreur sql dans fichier PHP
    Bonjour a tous,

    je suis debutant en PHP et SQL et j ai creer un formulaire via HTML/CSS/PHP j ai cree ma base et ma table et mes champs dans SQL. le formulaire fonctionne nickel.

    Je suis maintenant en train de faire ma page pour afficher les résultats de mon formulaire mais lorsque je lance mon resultats.php voila ce qu'il me dit :
    Parse error: syntax error, unexpected T_VARIABLE in D:\wamp\www\marketing\resultat.php on line 17
    je ne vois pas ou est le probleme je vous liasse mon code PHP en esperant que vous allez m aidez merci beaucoup

    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
    <?php
     
    // Parametres mysql à remplacer par les vôtres
    define('DB_SERVER', 'localhost'); // serveur mysql
    define('DB_SERVER_USERNAME', 'root'); // nom d'utilisateur
    define('DB_SERVER_PASSWORD', ''); // mot de passe
    define('DB_DATABASE', 'marketing'); // nom de la base
     
    // Connexion au serveur mysql
    $connect = mysql_connect(DB_SERVER, DB_SERVER_USERNAME,
    DB_SERVER_PASSWORD)
    or die('Impossible de se connecter : ' . mysql_error());
    // sélection de la base de données
    mysql_select_db(DB_DATABASE, $connect);
     
    $sql = "SELECT * FROM marketing"
    $resultat = mysql_fetch_array($sql);
    echo $resultat ['nom']
     
     
    ?>

  2. #2
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonjour,

    Il manquait un ";" à la fin de la ligne 17, aussi, mysql_fetch_array() prends en paramètre la valeur de retour de mysql_query :

    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
    <?php
    // Parametres mysql à remplacer par les vôtres
    define('DB_SERVER', 'localhost'); // serveur mysql
    define('DB_SERVER_USERNAME', 'root'); // nom d'utilisateur
    define('DB_SERVER_PASSWORD', ''); // mot de passe
    define('DB_DATABASE', 'marketing'); // nom de la base
     
    // Connexion au serveur mysql
    $connect = mysql_connect(DB_SERVER, DB_SERVER_USERNAME,
    DB_SERVER_PASSWORD)
    or die('Impossible de se connecter : ' . mysql_error());
    // sélection de la base de données
    mysql_select_db(DB_DATABASE, $connect);
     
    $sql = mysql_query("SELECT * FROM marketing");
    $resultat = mysql_fetch_array($sql);
    echo $resultat['nom'];
    ?>

  3. #3
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 319
    Points : 89
    Points
    89
    Par défaut aie aie aie
    merci de ta reponse

    mais voila ce qu il met apres rectification ...

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\wamp\www\marketing\resultat.php on line 16

  4. #4
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 319
    Points : 89
    Points
    89
    Par défaut Pour info
    J ai vu que de mettre un @ devant mysql_fetch_array devait arranger le probleme je n ai plus le message d'erreur mais une page blanche ...

    Je suis perdu

    Merci de votre aide

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Bonjour,

    Je suis d'accord avec ThomasR. Mais j'ajouterai un certain nombre de choses.
    Il faut externaliser un certain nombre de lignes dans des fichiers à inclure. Cela évite de recopier le code à chaque fois, et de reprendre tous les fichiers en cas de changement de paramètres :

    Fichier 'config.php' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
      //-- config.php ------------------------------------------ 
      // Parametres mysql à remplacer par les vôtres
      define('DB_SERVER', 'localhost'); // serveur mysql
      define('DB_SERVER_USERNAME', 'root'); // nom d'utilisateur
      define('DB_SERVER_PASSWORD', ''); // mot de passe
      define('DB_DATABASE', 'marketing'); // nom de la base
    ?>
    Fichier 'connexion.php' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
      //-- connexion.php ---------------------------------------
      function connexion()
      {
        // Connexion au serveur mysql
        $connect = mysql_connect(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD)
          or die('Impossible de se connecter au serveur ' . DB_SERVER . ' : <br>' . mysql_error());
        // sélection de la base de données
        mysql_select_db(DB_DATABASE, $connect)
          or die('Impossible de se connecter à la base de données ' . DB_DATABASE . ' : <br>' . mysql_error());
      }
    ?>
    Fichier 'resultat.php' :
    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
    <?php
      include('config.php');
      include('connexion.php');
     
      $connexion = connexion();
     
      $sql = 'SELECT colonne_1, colonne_2, colonne_3, colonne_xxxx
              FROM marketing';
      $resultat = mysql_query($sql, $connexion)
          or die('Problème à l\'exécution de la requête ' . $sql . ' : <br>' . mysql_error());
      while ($ligne = mysql_fetch_array($sql))
      {
        echo $ligne ['nom'] . '<br>';
      }
    ?>
    Il faut faire une boucle après l'exécution de la requête, car il n'y a aucun filtre, et elle est donc sensée retourner plusieurs lignes de résultats.

    Utiliser plutôt les apostrophes que les guillemets pour encadrer une chaîne de caractères ; cela évite à php de la parser pour rechercher un éventuel élément à valoriser.
    Dans une requête, ne pas utiliser '*', nommer les colonnes nécessaires. Si une table comporte 20 colonnes et que seules 5 sont nécessaires, cela sera plus rapide.

    NE PAS UTILISER '@' en cours de développement : cela empêche l'affichage des erreurs mais ne les résout pas.

  6. #6
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 319
    Points : 89
    Points
    89
    Par défaut ouah merci
    pour cette reponse plus qu étoffé à la place des colonne_1 colonne_2 je dois mettre mes champs qui sont dans ma table ?c est bien ca ?

  7. #7
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Yes, mais uniquement les colonnes dont tu as besoin dans la suite de ton code.

  8. #8
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 319
    Points : 89
    Points
    89
    Par défaut je me sens nul j suis desole
    j ai remplace les champs colonne par mes champs qui sont dans ma table comme suit :

    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
    <?php
      include('config.php');
      include('connexion.php');
     
      $connexion = connexion();
     
      $sql = 'SELECT id, civilite, entreprise, nom, prenom, adresse, codepostal, ville, telephone, mail, numeroappels, besoin, resultats, message, datetime
              FROM marketing';
      $resultat = mysql_query($sql, $connexion)
          or die('Problème à l\'exécution de la requête ' . $sql . ' : <br>' . mysql_error());
      while ($ligne = mysql_fetch_array($sql))
      {
        echo $ligne ['id'] . '<br>';
        echo $ligne ['entreprise'] . '<br>';
        echo $ligne ['nom'] . '<br>';
        echo $ligne ['prenom'] . '<br>';
        echo $ligne ['adresse'] . '<br>';
        echo $ligne ['codepostal'] . '<br>';
        echo $ligne ['ville'] . '<br>';
        echo $ligne ['telephone'] . '<br>';
        echo $ligne ['mail'] . '<br>';
        echo $ligne ['numeroappels'] . '<br>';
        echo $ligne ['besoin'] . '<br>';
        echo $ligne ['resultats'] . '<br>';
        echo $ligne ['message'] . '<br>';
        echo $ligne ['datetime'] . '<br>';
      }
    ?>
    et voila l'erreur
    Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in D:\wamp\www\marketing\resultat.php on line 9
    Problème à l'exécution de la requête SELECT id, civilite, entreprise, nom, prenom, adresse, codepostal, ville, telephone, mail, numeroappels, besoin, resultats, message, datetime FROM marketing :
    en tout cas merci pour tous vos efforts ...

  9. #9
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 319
    Points : 89
    Points
    89
    Par défaut je me posais une question
    marketing c est ma base dans cette base il y a une table qui s appelle formulaire qui contient les champs et colonnes cités plus haut

    est ce que je ne dois pas mentionner quelque part ma table ?

    Merci

  10. #10
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Désolé, j'ai oublié quelquechose dans 'connexion.php' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
      //-- connexion.php ---------------------------------------
      function connexion()
      {
        // Connexion au serveur mysql
        $connect = mysql_connect(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD)
          or die('Impossible de se connecter au serveur ' . DB_SERVER . ' : <br>' . mysql_error());
        // sélection de la base de données
        mysql_select_db(DB_DATABASE, $connect)
          or die('Impossible de se connecter à la base de données ' . DB_DATABASE . ' : <br>' . mysql_error());
     
        return $connect;
      }
    ?>
    D'autre part, donne un autre nom à ta colonne 'datetime' autrement, c'est un type de colonne mysql.

  11. #11
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Oui dans la clause FROM,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM nom_de_la_table
    Inutile de mentionner la base de données, la fonction mysql_select_db s'en est déjà chargée .

  12. #12
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 319
    Points : 89
    Points
    89
    Par défaut encore merci
    j ai enleve la colonne datetime et cette fois le message d'erreur change (je vais tous les connaitre ) voila ce qu il me dit
    roblème à l'exécution de la requête SELECT id, civilite, entreprise, nom, prenom, adresse, codepostal, ville, telephone, mail, numeroappels, besoin, resultats, message FROM marketing :
    Table 'marketing.marketing' doesn't exist
    avec ce code ...
    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
    <?php
      include('config.php');
      include('connexion.php');
     
      $connexion = connexion();
     
      $sql = 'SELECT id, civilite, entreprise, nom, prenom, adresse, codepostal, ville, telephone, mail, numeroappels, besoin, resultats, message 
              FROM marketing';
      $resultat = mysql_query($sql, $connexion)
          or die('Problème à l\'exécution de la requête ' . $sql . ' : <br>' . mysql_error());
      while ($ligne = mysql_fetch_array($sql))
      {
        echo $ligne ['id'] . '<br>';
        echo $ligne ['entreprise'] . '<br>';
        echo $ligne ['nom'] . '<br>';
        echo $ligne ['prenom'] . '<br>';
        echo $ligne ['adresse'] . '<br>';
        echo $ligne ['codepostal'] . '<br>';
        echo $ligne ['ville'] . '<br>';
        echo $ligne ['telephone'] . '<br>';
        echo $ligne ['mail'] . '<br>';
        echo $ligne ['numeroappels'] . '<br>';
        echo $ligne ['besoin'] . '<br>';
        echo $ligne ['resultats'] . '<br>';
        echo $ligne ['message'] . '<br>';
     
      }
    ?>
    Je sens qu'on approche ...

  13. #13
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Es-tu certain d'avoir une table 'marketing' ?
    Si oui, peut-être que :
    bdd => 'marketing'
    table => 'marketing'
    ne conviennent pas.

  14. #14
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 319
    Points : 89
    Points
    89
    Par défaut
    ma base de données ets marketing et ma table s appelle formulaire mais quand je fais
    $sql = 'SELECT civilite, entreprise, nom, prenom, adresse, codepostal, ville, telephone, mail, numeroappels, besoin, resultats, message
    FROM formulaire';
    il me met le message suivant :
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\wamp\www\marketing\resultat.php on line 11

  15. #15
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Desfois j'ai l'impression d'écrire dans le vent :

    je cite :
    marketing c est ma base dans cette base il y a une table qui s appelle formulaire qui contient les champs et colonnes cités plus haut

    est ce que je ne dois pas mentionner quelque part ma table ?
    Merci de lire ma réponse ci-dessus.

  16. #16
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 319
    Points : 89
    Points
    89
    Par défaut
    apparemment il y aurait un probleme à ce niveau :
    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
    <?php
      include('config.php');
      include('connexion.php');
      
      $connexion = connexion();
      
      $sql = 'SELECT civilite, entreprise, nom, prenom, adresse, codepostal, ville, telephone, mail, numeroappels, besoin, resultats, message 
              FROM formulaire';
      $resultat = mysql_query($sql, $connexion)
          or die('Problème à l\'exécution de la requête ' . $sql . ' : <br>' . mysql_error());
      while ($ligne = mysql_fetch_array($sql))
      {
      
        echo $ligne ['civilite'] . '<br>';
        echo $ligne ['entreprise'] . '<br>';
        echo $ligne ['nom'] . '<br>';
        echo $ligne ['prenom'] . '<br>';
        echo $ligne ['adresse'] . '<br>';
        echo $ligne ['codepostal'] . '<br>';
        echo $ligne ['ville'] . '<br>';
        echo $ligne ['telephone'] . '<br>';
        echo $ligne ['mail'] . '<br>';
        echo $ligne ['numeroappels'] . '<br>';
        echo $ligne ['besoin'] . '<br>';
        echo $ligne ['resultats'] . '<br>';
        echo $ligne ['message'] . '<br>';
      
      }
    ?>

  17. #17
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 319
    Points : 89
    Points
    89
    Par défaut solution trouvé
    dans la boucle while il faut demander la e resultat de la requete et pas la requete (j ai pas trouve ca tout seul je vous l accorde) while ($ligne = mysql_fetch_array($resultat))

    en tout cas milles mercis pour tout vos efforts mes resultats de formulaire s affiche reste plus qu a mettre en page tout ca mais ca ce st une autre histoire

    Bonne soirée :-)

Discussions similaires

  1. [MySQL] Requete sql dans fichier php
    Par chrisha dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 19/06/2014, 09h21
  2. Réponses: 13
    Dernier message: 23/09/2011, 18h24
  3. Accès SQL dans fichier excel erreur sur une ligne
    Par troubleshooting dans le forum Excel
    Réponses: 3
    Dernier message: 17/11/2009, 14h46
  4. [MySQL] comment recupérer l'erreur sql dans PHP
    Par hammag dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 29/04/2009, 17h50
  5. [SQL] Erreur SQL dans php
    Par joker vb dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 03/05/2007, 11h37

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