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 :

Accès à la base de données


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 11
    Par défaut Accès à la base de données
    Bonjour,

    voila je dois développer un projet pour mon lycée mais je suis bloquée depuis plusieurs jours maintenant. C'est pourquoi j'en appel a votre aide.


    J'ai créé la page php suivante:
    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
    <?php
     
    $nom=$_POST["nom"];
    $passwd=$_POST["passwd"];
     
    $db = mysql_connect("localhost", $nom, $passwd); 
    mysql_select_db("boulangerie",$db);
     
    $n_client=$_POST["n_client"];
    $raison_sociale=$_POST["raison_sociale"];
    $adresse=$_POST["adresse"];
    $ville=$_POST["ville"];
    $code_postal=$_POST["code_postal"];
    $telephone=$_POST["telephone"];
    $code_categorie=$_POST["code_categorie"];
     
    $reponse = mysql_query("SELECT n_client FROM Clients WHERE n_client='".$n_client."'");
     
    $nb=mysql_num_rows ($reponse);
    if($nb!=0)
    {
    echo "Ce numero client est deja attribué.";
    }
     
    else {
    $reponse2 = mysql_query("INSERT INTO `boulangerie`.`Clients`(`n_client`,`raison_sociale`,`adresse`,`ville`,`code_postal`,`telephone`,`code_categorie`)
    VALUES('$n_client','$raison_sociale','$adresse','$ville',`$code_postal`,`$telephone`,`$code_categorie`);");
     
    echo"Votre ajout a été effectué." ;
    }
     
    mysql_close(); 
    ?>

    Mais voici la réponse qui m'est retournée :
    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/www/pti/ajoutclient.php on line 32
    Votre ajout a été effectué.



    Merci de votre aide.

  2. #2
    Membre Expert Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Par défaut
    Bonjour et bienvenue sur le forum.

    Tout d'abord pour que ton code soit lisible par tous essaye de le mettre dans une balise code (le # dans l'éditeur).
    Ensuite pour avoir une erreur plus précise essaye de construire tes requetes de la façon suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $sql="select * from table";
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    ça te permettra d'avoir l'erreur SQL précise.
    Sinon à quelle ligne correspond la ligne 32? Si c'est celle du INSERT ça peut venir du fait que tu es des ` au lieu de ' dans tes VALUES.

  3. #3
    Membre chevronné Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Par défaut
    Bonsoir,

    A prioris, le problème vient des apostrophes dans la seconde requète.
    Tu utilises ` au lieu de '.

    Pour être sûr, il faut que tu éxécutes tes commandes SQL de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $sql = "SELECT ... ";
    mysql_query($sql) or die("ERR : " . mysql_error() . "<br />SQL = ". $sql;
    Ca affichera le message d'erreur SQL et la commande exacte qui vient d'être éxécutée.

    Gillou.

    [Édit]
    j'ai été devancé

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 11
    Par défaut
    voila je viens de modifier mon 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
    29
    30
    31
    32
    33
    34
    <?php
    $nom=$_POST["nom"];
    $passwd=$_POST["passwd"];
     
    $db = mysql_connect("localhost", $nom, $passwd); 
    mysql_select_db("boulangerie",$db);
     
    $n_client=$_POST["n_client"];
    $raison_sociale=$_POST["raison_sociale"];
    $adresse=$_POST["adresse"];
    $ville=$_POST["ville"];
    $code_postal=$_POST["code_postal"];
    $telephone=$_POST["telephone"];
    $code_categorie=$_POST["code_categorie"];
     
    $reponse = "SELECT n_client FROM Clients WHERE n_client='".$n_client."'";
    mysql_query($reponse) or die("ERR : " . mysql_error() . "<br />SQL = ". $reponse);
     
    $nb=mysql_num_rows ($reponse);
    if($nb!=0)
    {
    echo "Ce numero client est deja attribué.";
    }
     
    else {
    $reponse2 = "INSERT INTO boulangerie.Clients(n_client,raison_sociale,adresse,ville,code_postal,telephone,code_categorie)
    VALUES($n_client,$raison_sociale,$adresse,$ville,$code_postal,$telephone,$code_categorie)";
    mysql_query($reponse2) or die("ERR : " . mysql_error() . "<br />SQL = ". $reponse2);
     
    echo"Votre ajout a été effectué." ;
    }
     
    mysql_close(); 
    ?>
    et voici la reponse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ERR : No database selected
    SQL = SELECT n_client FROM Clients WHERE n_client='1'

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    vérifie que ta connexion se produit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $db = mysql_connect("localhost", $nom, $passwd) or die("Impossible de se connecter : " . mysql_error());
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre Expert Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Par défaut
    Apparemment la base boulangerie n'existe pas. Ajoute un die également sur la ligne du mysql_select_db.

  7. #7
    Membre éclairé Avatar de rems033
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 513
    Par défaut
    En effet, le problème vient du fait que "boulangerie" n'est pas une base de données...
    Vérifie l'orthographe de ta base de données

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 11
    Par défaut
    J'ai verifié si la table boulangerie existait bien est en effet elle existe.
    Mais je viens de trouver le problème sauf je n'arrive pas a le corriger.

    Je vous explique, voici mon 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
    29
    30
    31
    32
    <?php
    $nom=$_POST["nom"];
    $passwd=$_POST["passwd"];
    $nomserver="localhost";
     
    // on se connecte à MySQL 
    $bde = mysql_connect("$nomserver", "$nom", "$passwd") or die ("Impossible de se connecter"); 
    // on sélectionne la base 
    mysql_select_db("boulangerie") or die ("Impossible d'accèder a la base");
    // on crée la requête SQL 
    $n_client=$_POST["n_client"];
    $raison_sociale=$_POST["raison_sociale"];
    $adresse=$_POST["adresse"];
    $ville=$_POST["ville"];
    $code_postal=$_POST["code_postal"];
    $telephone=$_POST["telephone"];
    $code_categorie=$_POST["code_categorie"];
     
    $reponse = mysql_query("SELECT n_client FROM Clients WHERE n_client='".$n_client."'");
    $nb=mysql_num_rows ($reponse);
     
    if($nb!=0)
    {
    echo "Ce numero client est deja attribué.";
    }
    else {
    $reponse2 = mysql_query("INSERT INTO boulangerie.Clients (n_client,raison_sociale,adresse,ville,code_postal,telephone,code_categorie)
    VALUES('$n_client','$raison_sociale','$adresse','$ville','$code_postal','$telephone','$code_categorie')");
    echo"Votre ajout a été effectué." ;
    }
    mysql_close(); 
    ?>
    Le problème vient de la connection a la base de données depuis les variables
    En effet lorsque je remplace cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $bde = mysql_connect("$nomserver", "$nom", "$passwd") or die ("Impossible de se connecter");
    par cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $bde = mysql_connect("localhost", "root", "mdp") or die ("Impossible de se connecter");
    ma requete fonctionne parfaitement.

    Sauf que j'ai créer des utilisateurs qui ont chacun des droits d'accès differents aux tables de la base "boulangerie". J'ai egalement permis a ces utilisateurs de s'identifier dans ma page html mais lorsque je veux utiliser ces valeurs (identifiant et mot de passe) dans mes variables cela ne marche pas et je ne peut donc pas me connecter a la base. Alors que si je me connecte avec leurs identifiant directement dans la page php cela marche.

    Par exemple si je met le code suivant il n'y a aucun soucis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $bde = mysql_connect("localhost", "directeur", "mdp") or die ("Impossible de se connecter");
    Je voudrais donc pouvoir me connecter a la base de données grace a la saisie des identifiants sur la page html et je souhaiterait egalement que ma page php retourne un message d'erreur si l'utilisateur n'a pas de droit d'accès sur une table qu'il essaie de modifier. Par exemple, mon comptable n'a pas de droit d'accès a la table clients et s'il essaie d'ajouter une nouvelle ligne a cette table je voudrait que la page php lui retourne un message lui informant qu'il n'est pas autorisé.

    Merci de votre aide.

  9. #9
    Membre éclairé Avatar de rems033
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 513
    Par défaut
    tu as essayé d'afficher les variables du POST à l'écran pour voir si elles sont correct ? essaye de mettre des caractères avnt et après pour voir si des espaces ne se seraient pas glissés...

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 11
    Par défaut
    lorsque je fait un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "$nomserver $nom  $passwd";
    il y a juste "localhost" qui apparait a l'ecran, le nom et le mot de passe ne s'affiche pas.

  11. #11
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    donc affiche le code de ta page formulaire.

  12. #12
    Membre éclairé Avatar de rems033
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 513
    Par défaut
    donc problème de variable et comme dit maitrepylos, fait péter le code de ton formulaire pour voir d'ou vient le problème...

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 11
    Par défaut
    voici le code de mon formulaire
    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
    <html>
    <head>
    <title>Modification Table Clients</title>
    <h1><center>Modification Table Clients</center></h1>
    </head>
    <body><br><br><br>
     
    Veuillez vous identifiez: <br><br>
    Nom Utilisateur &nbsp &nbsp <INPUT type="text" id=nom name="nom" size="15"> &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp
    Mot de passe &nbsp &nbsp <INPUT type="text" id=passwd name="passwd" size="15">
    <br><br><br><br>
    <form method="post" action="ajoutclient.php">
    <table border="0" CELLSPACING=2 CELLPADDING=5 >
    <tr>
    <td>Champ</td>
    <td>Valeur</td>
    </tr>
    <tr>
    <td>N° Client</td>
    <td><INPUT type="text" id=n_client name="n_client" size="20"></td>
    </tr>
    <tr>
    <td>Raison Sociale</td>
    <td><INPUT type="text" id=raison_sociale name="raison_sociale" size="20"></td>
    </tr>
    <tr>
    <td>Adresse</td>
    <td><INPUT type="text" id=adresse name="adresse" size="20"></td>
    </tr>
    <tr>
    <td>Ville</td>
    <td><INPUT type="text" id=ville name="ville" size="20"></td>
    </tr>
    <tr>
    <td>Code Postal</td>
    <td><INPUT type="text" id=code_postal name="code_postal" size="20"></td>
    </tr>
    <tr>
    <td>Telephone</td>
    <td><INPUT type="text" id=telephone name="telephone" size="20"></td>
    </tr>
    <tr>
    <td>Code Categorie</td>
    <td><INPUT type="text" id=code_categorie name="code_categorie" size="20"></td>
    </tr>
    </table>
    <br><INPUT type="submit" value="Valider" id=Valider name=Valider onClick="butclick();">
    </form>
    <br><br><br><br>
    <a href="acceuil.html">revenir a la page d'acceuil</a>
    </body>
    </html>

  14. #14
    Membre éclairé Avatar de rems033
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 513
    Par défaut
    Ouais beinh c'est sûr que ca va pas fonctionner....
    Si tes champs <input> ne font pas partie du formulaire

    essaye ca plutot :
    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
    <html>
    <head>
    <title>Modification Table Clients</title>
    <h1><center>Modification Table Clients</center></h1>
    </head>
    <body><br><br><br>
     
    Veuillez vous identifiez: <br><br>
    <form method="post" action="ajoutclient.php">
    Nom Utilisateur &nbsp &nbsp <INPUT type="text" id=nom name="nom" size="15"> &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp
    Mot de passe &nbsp &nbsp <INPUT type="text" id=passwd name="passwd" size="15">
    <br><br><br><br>
    <table border="0" CELLSPACING=2 CELLPADDING=5 >
    <tr>
    <td>Champ</td>
    <td>Valeur</td>
    </tr>
    <tr>
    <td>N° Client</td>
    <td><INPUT type="text" id=n_client name="n_client" size="20"></td>
    </tr>
    <tr>
    <td>Raison Sociale</td>
    <td><INPUT type="text" id=raison_sociale name="raison_sociale" size="20"></td>
    </tr>
    <tr>
    <td>Adresse</td>
    <td><INPUT type="text" id=adresse name="adresse" size="20"></td>
    </tr>
    <tr>
    <td>Ville</td>
    <td><INPUT type="text" id=ville name="ville" size="20"></td>
    </tr>
    <tr>
    <td>Code Postal</td>
    <td><INPUT type="text" id=code_postal name="code_postal" size="20"></td>
    </tr>
    <tr>
    <td>Telephone</td>
    <td><INPUT type="text" id=telephone name="telephone" size="20"></td>
    </tr>
    <tr>
    <td>Code Categorie</td>
    <td><INPUT type="text" id=code_categorie name="code_categorie" size="20"></td>
    </tr>
    </table>
    <br><INPUT type="submit" value="Valider" id=Valider name=Valider onClick="butclick();">
    </form>
    <br><br><br><br>
    <a href="acceuil.html">revenir a la page d'acceuil</a>
    </body>
    </html>
    Ca devrait tourner nickel !

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 11
    Par défaut
    je viens d'essayer mais ca ne marche toujours pas. La page php m'indique toujours qu'il est impossible d'accèder a la base.

  16. #16
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    que fais la fonction 'butclick()' ?

  17. #17
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 11
    Par défaut
    Je ne sais plus pourquoi je l'avais mise mais cette fonction ne me sert a rien.

  18. #18
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    ben vire là et réessaye

  19. #19
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 11
    Par défaut
    j'ai essayé et toujours le meme probleme...

  20. #20
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo "$nomserver $nom  $passwd";
    donne quoi ?

Discussions similaires

  1. [C#] Accés à une base de données AS400
    Par Green Hornet dans le forum Accès aux données
    Réponses: 8
    Dernier message: 14/11/2011, 11h26
  2. Accès à une base de données ACCESS
    Par Invité dans le forum C++Builder
    Réponses: 3
    Dernier message: 07/01/2005, 08h23
  3. Accès aux bases de données Access
    Par xela dans le forum C++Builder
    Réponses: 3
    Dernier message: 15/12/2004, 09h07
  4. [JDBC]acces à une base de données mysql
    Par sehaba dans le forum JDBC
    Réponses: 13
    Dernier message: 07/12/2004, 00h39
  5. Réponses: 2
    Dernier message: 01/10/2004, 15h13

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