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 :

Connexion base mysql par php


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 17
    Par défaut Connexion base mysql par php
    onjour a tous,
    je viens ici pour lancer un help d'urgence, cela fait une journée que je tourne en rond je suis en train de développer un site intranet en php pour gérer la gestion d'un café. je suis en phase de test.
    J'ai donc crée une base de donnée ( crée phpmyadmin ) avec une table seulement et trois entrées. j'ai fait une petite page php pour tester et la sa bug la base de donnée ne se connecte on dirait...
    Je vous laisse la page php et le fichier sql
    si quelqu'un peut m'aider .... je vous en remercie d'avance ....

    La base sql se trouve sur le pc et ne marchera qu'en local ....
    il me met un message d'erreur
    Fatal error: Call to a member function mysql_query() on a non-object in C:\Program Files\EasyPHP 2.0b1\www\gestion cafe\stocks.php on line 22
    Je dois faire l'amalgame entre programmation objet et procéduriale,
    pouvez m'expliquer comment faire pour utiliser PDO avec mysql ?
    QUe dois je changer dans mon code ?


    Page 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
    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
    <html>
    <body>
     
     
    <div class="centre">
     
    <h3>Ajouter un produit</h3>
     
     
     
    <?php
          if(isset($_POST["produit"]) && ($_POST["prix"])){
                $produit = $_POST["produit"];
                $nombre = $_POST["nombre"];
                $prix = $_POST["prix"];
     
     
                $connexion = mysql_connect("localhost","root","");
                $db = mysql_select_db("bddcafe", $connexion) or die(mysql_error());
     
     
                $res= $db->mysql_query("INSERT INTO gestionstocks
                            VALUES ($produit, $produit, $nombre, $prix)");
                echo " le produit a été référencé ";
     
     
                }
     
          ?>
     
    <form action="stocks.php" method="post">
     
     
     
    Produit sans alcool a référencer :
    <input name="produit"/><br/><br />
    Nombre :
    <input name="nombre"/><br/><br />
     
    Prix HT :
    <input name="prix"/><br/><br />
     
    <input type="submit" value="Validez"/>
     
    </form> </div>
    </body>
     
    </html>
    FICHIER SQL
    Code SQL : 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
    -- phpMyAdmin SQL Dump
    -- version 2.9.1.1
    -- <a href="http://www.phpmyadmin.net" target="_blank">http://www.phpmyadmin.net</a>
    -- 
    -- Serveur: localhost
    -- Généré le : Vendredi 28 Février 2003 à 21:17
    -- Version du serveur: 5.0.27
    -- Version de PHP: 5.2.0
    -- 
    -- Base de données: `bddcafe`
    -- 
     
    -- --------------------------------------------------------
     
    -- 
    -- Structure de la table `gestionstocks`
    -- 
     
    CREATE TABLE `gestionstocks` (
    `produit5` varchar(40) default NULL,
    `produit19` varchar(40) default NULL,
    `nombre` decimal(6,0) default NULL,
    `prix` decimal(4,0) NOT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
     
    -- 
    -- Contenu de la table `gestionstocks`
    -- 
     
    INSERT INTO `gestionstocks` (`produit5`, `produit19`, `nombre`, `prix`) VALUES
    ('Coca Cola Light ', '', 6, 2),
    (NULL, 'Malibu Orange', 3, 8),
    ('Joker Orange', NULL, 2, 1);

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Bonjour,

    c'est parce que tu mélanges la forme objet (dispo uniquement pour mysqli, je crois) et la forme traditionnelle.
    ligne 22, fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $res= mysql_query("INSERT INTO gestionstocks
    VALUES ($produit, $produit, $nombre, $prix)");

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 17
    Par défaut
    j'ai bien fait cela merci

    mais il ne me l'ajoute pas dans la base de données ....
    et en plus il ne met qu'un produit dans la table produit5 alors qu'il y en a deux

    $res= mysql_query("INSERT INTO gestionstocks
    VALUES ($produit, $produit, $nombre, $prix)");
    echo " le produit a été référencé <br>";

    $requete= mysql_query("SELECT produit5 FROM gestionstocks");
    $pouet= mysql_fetch_row($requete);
    echo "produit : ".$pouet['produit5'];;

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Je regarde ça, mais peux-tu reéditer tes messages et utiliser les balises (le # dans l'éditeur), car c'est illisible ?

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    L'insertion marche sans problème, regarde directement dans la base via phpmyadmin si tu l'as.
    regarde avec ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $requete= mysql_query("SELECT produit5 FROM gestionstocks");
    while($pouet= mysql_fetch_row($requete))
               print_r($pouet);

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 17
    Par défaut
    désolé j'ai changé pour passer avec le pdo j'ai plus l'habitude, j'ai rajouté les apostrophes mais cela ne sajoute toujours pas, je reposte le fichier php avec pdo avec sqlite si vous pouvez y regarder deux minutes. J'ai mis une requete pour voir si cela s'ajouter a la base de donnée mais la requete bug avec Call to a member function fetchAll() on a non-object


    Merci

    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>
    <body>
     
     
      <div class="centre">
     
    <h3>Ajouter un produit</h3>
     
     
     
          <?php
          if(isset($_POST["produit"]) && ($_POST["prix"])){
                $produit = $_POST["produit"];
                $nombre = $_POST["nombre"];
                $prix = $_POST["prix"];
     
                try {
                    $db=new PDO('sqlite:cafedessports.sql') ;
                }     catch (PDOException $e) {
                echo "Echec de la connexion";
                exit();
                }    
     
     
                $res= $db->query("INSERT INTO gestionstocks VALUES ('$produit', '$produit', $nombre, $prix)");
                echo " le produit a été référencé <br>";
     
                $requete = $db->query("SELECT produit5 FROM gestionstocks");
                $requete->fetchAll();
                echo $requete;
     
                }
     
          ?>
     
         <form action="stockspdo.php" method="post">
     
     
     
         Produit sans alcool a référencer : 
            <input name="produit"/><br/><br />
            Nombre  : 
            <input name="nombre"/><br/><br />
     
            Prix HT : 
            <input name="prix"/><br/><br />
     
            <input type="submit" value="Validez"/>
     
         </form> </div>  
    </body>
     
    </html>

  7. #7
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    1- Pitié, utilise la balise [CODE] , le # à droite là où tu saisis le texte !!!!!
    2- regarde si ça te donne des résultats :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $requete = $db->query("SELECT * FROM gestionstocks");
    $row =$requete->fetchAll();
    var_dump($row);
    Regarde si tu y vois le contenu de produit5

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 17
    Par défaut
    désolé pour hier, je ferais plus attention
    J'ai essayé avec ce que tu m'as donné, toujours rien et le même message d'erreur Call to a member function fetchAll() on a non-object in C:\Program Files\EasyPHP 2.0b1\www\gestion cafe\stockspdo.php on line 30

    cela commence à m'enbeter sévère....
    Toujours rien qui s'actualise dans la base de données...

  9. #9
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Etrange
    Le même code fonctionne chez moi, avec mysql certes et non sqlite.
    J'ai tout : insertion, lecture de la base.
    Mets cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $requete = $db->query("SELECT * FROM gestionstocks");
    foreach ($requete as $row) {
      print_r($row);
    Si ça ne donne rien, mets ça à la place:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if($requete instanceof PDOStatement)
        echo "la requête est un objet valide";
    else
        echo "la requete n'est pas un objet valide";
    Et dis-moi le résultat.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 17
    Par défaut
    Warning: Invalid argument supplied for foreach() in C:\Program Files\EasyPHP 2.0b1\www\gestion cafe\stockspdo.php on line 29 , cela me met sa dans un premier temps et pour le deuxieme temps cela me met la requete n'est pas un objet valide. Est ce que c'est cela que vient l'erreur ? Comment je peux resoudre cela ? Peut on utiliser mysql avec pdo ? Peut tu me dire comment stp ?
    En tout cas merci de ton soutien , cela fait plaisir d'avoir à faire à un pro ....

  11. #11
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    edit : je modifie le message: j'avais pas compris que stockpdo.php est le fichier en cours !!

    PDO est bien sur disponible pour mysql. Il suffit par exemple de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $dsn = 'mysql:dbname=mabase;host=localhost';
    $user = 'moi';
    $password='secret';
    $db=new PDO($dsn, $user, $password) ;
    Quant à ce script, voici les changements à faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $res= $db->query("INSERT INTO gestionstocks VALUES ('$produit', '$produit', $nombre, $prix);");
    et ensuite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $requete = $db->query("SELECT produit5 FROM gestionstocks");
                $requete->fetchAll();
    var_dump($requete);
    Si cela marche, le problème pendant tout ce temps est dû à un oubli du délimiteur ";" dans la requête !

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 17
    Par défaut
    j'ai suivi tes instructions, je pense qu'on avance mais il reste cette erreur la

    Call to a member function fetchAll() on a non-object in C:\Program Files\EasyPHP 2.0b1\www\gestion cafe\stockspdo.php on line 32


    j'espere que tu vas pouvoir me sortir de cette galere
    encore merci d'avance

  13. #13
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Si tu as phpmyadmin (ou tout autre accès direct à la base), peux-tu au moins vérifier si des données sont insérées ou pas ?
    Et vérifons :
    - la table gestionstocks a-t-elle bien 4 champs ?
    - lance uniquement ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    try {
    $res= $db->query("INSERT INTO gestionstocks VALUES ('$produit', '$produit', $nombre, $prix);");
          var_dump($res);
    }
    catch(PDOException $e) {
      $e->getMEssage();
    }
    et mets ici le contenu de $res. ou, le cas échéant, le message d'erreur. Puis,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    try {
      $requete = $db->query("SELECT * FROM gestionstocks");
    }
    catch(PDOException $e) {
      $e->getMessage();
    }
    Et regarde les messages.
    En plus, je suis sûr que c'est un truc tout bête !

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 17
    Par défaut
    alors avec le premier try on obtient bool ( false )
    et avec le deuxieme rien du tout ...

    rien ne s'update dans la bdd j'ai regardé via sqlite manager et regardé le fichier texte de la bdd.

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 17
    Par défaut
    et toujours le meme message Call to a member function fetchAll() on a non-object in C:\Program Files\EasyPHP 2.0b1\www\gestion cafe\stockspdo.php on line 32

  16. #16
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Alors, le problème est dans la requête INSERT INTO et pas dans SELECT.
    On avance !
    Je regarde...

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 17
    Par défaut
    je compte vraiment que sur toi , sur ce coup jme sens deprimé carrément

  18. #18
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Le problème, c'est que je m'étais focalisé sur la requête SELECT, et pas INSERT !
    Bon, essaie cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $res = $db->query("INSERT INTO gestionstocks VALUES(".$produit.",".$produit.",".$nombre.",".$prix.")";
    var_dump($res);

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 17
    Par défaut
    toujours pas .... si tu veux je peux t'envoyer le fichier php et la bdd ( que je viens de refaire au cas où c'etait la bdd qui merdouillé ) ( entre temps j'ai modifié le nom des champs ) avec ces fichiers tu visualiseras bien tout . tu m'envoie ton mail en MP ?

Discussions similaires

  1. Réponses: 7
    Dernier message: 22/04/2015, 07h57
  2. [MySQL] Connexion à base mysql via php
    Par zigomato dans le forum PHP & Base de données
    Réponses: 21
    Dernier message: 08/04/2015, 17h50
  3. [MySQL] Connexion à la base MySQL avec PHP
    Par randriamanana dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 05/01/2007, 12h06
  4. Réponses: 2
    Dernier message: 26/03/2006, 18h24
  5. [VB.NET][MySQL]ID insertion dans une base MySQL par ODBC
    Par leSeb dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/03/2006, 10h58

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