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 :

Insert into n'insert pas.. [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Blood bowl, Heroclix, Krosmaster et JDR
    Inscrit en
    Juillet 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Blood bowl, Heroclix, Krosmaster et JDR
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2014
    Messages : 10
    Points : 1
    Points
    1
    Par défaut Insert into n'insert pas..
    Bonjour,

    Je fais un site intranet dynamique et j'ai besoin pour cela d’insérer dans une base les champs remplis par l'utilisateur.
    J'ouvre une première table pour la vérification du mot de passe puis une 2e pour intégrer les données,
    Malheureusement l'intégration ne se fait pas...

    Etant grand débutant, j'ai fait comme j'ai pu pour faire le code que voici:

    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
     session_start();
    try{
        $bdd=new PDO('mysql:host=localhost;dbname=name','root','admin');
    }
    catch (Exception $e){
            die('Erreur : ' . $e->getMessage());
    }
    $reponse = $bdd->query('SELECT * FROM connexion');
    $donnees = $reponse->fetch();
    {
    }
    $reponse->closeCursor(); // Termine le traitement de la requête
    ?>
    <!DOCTYPE html>
    <html lang="en">
        <head>
            <meta charset="utf-8" />
            <title>test</title>
        </head>
    <body>
        <?php
    if ($_SESSION['mdp']==$donnees['motdepasse'])  {  
         $donnees="";  
         $fichier=$_SESSION['fichier'];
         $notedu=$_SESSION['notedu'];
         $nomdudoc=$_SESSION['nomdudocument'];  
         echo $fichier,' ',$notedu,' ',$nomdudoc;
         $ok = $bdd->exec("INSERT INTO notedeservice (pdf,notedu,nomdudoc) VALUES('$fichier', '$notedu','$nomdudoc')");
         mysql_close(); 
    }
    ?>   
    </body></html>
    Merci d'avance

  2. #2
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Ta requête SELECT retourne tout le contenu de la table.
    S'il s'agit d'une authentification, tu veux retourner les informations du login qui a été saisie, donc il te faut la clause WHERE adéquate.

    Également pourquoi tu utilises une session ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Blood bowl, Heroclix, Krosmaster et JDR
    Inscrit en
    Juillet 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Blood bowl, Heroclix, Krosmaster et JDR
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2014
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    La première table ne contient actuellement qu'une seule ligne, c'est pour cela que je prends tout le contenu.
    Pour la session, si je ne l'utilise pas rien ne s'affiche...

    Pour info j'utilise webmatrix

  4. #4
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu n'as qu'un seul utilisateur ?
    Que ce soit oui ou non c'est une mauvaise idée de lire toute la table : le jour ou tu voudras ajouter un deuxieme utilisateur, tu devras rechanger ton code.

    Pour les sessions, comment en es-tu arrivé la ?
    Je suppose que tes données viennent d'un formulaire au départ.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Blood bowl, Heroclix, Krosmaster et JDR
    Inscrit en
    Juillet 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Blood bowl, Heroclix, Krosmaster et JDR
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2014
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Ok je vais mettre un petit "where" dans ma sélection.
    J'ai intégré la session en cherchant une solution à mon problème sur le net, par hasard... Ce n'est pas une bonne chose ?
    Mes données viennent d'un formulaire effectivement.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Blood bowl, Heroclix, Krosmaster et JDR
    Inscrit en
    Juillet 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Blood bowl, Heroclix, Krosmaster et JDR
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2014
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Mise à jour faite, ça ne résout pas le problème malheureusement.

    Je cherche dans mon coin mais si quelqu'un a une idée je suis preneur.

    Merci d'avance

  7. #7
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Oublie donc cette histoire de session PHP.
    En supposant que tu as une colonne "login" et que le formulaire a pour cible ce 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
     
    <!DOCTYPE html>
    <html lang="en">
        <head>
            <meta charset="utf-8" />
            <title>test</title>
        </head>
    <body>
    <?php
    $bdd=new PDO('mysql:host=localhost;dbname=name','root','admin');
     
    $sth= $bdd->prepare('SELECT motdepasse FROM connexion WHERE login = :login');
    $sth->execute(array(':login'=>$_POST['login']));
    $row = $sth->fetch();
    if ($_POST['mdp'] == $donnees['motdepasse'])  {  
         $sth = $bdd->prepare('INSERT INTO notedeservice (pdf,notedu,nomdudoc) VALUES(:fichier, :notedu, :nomdudoc)');
         $sth->execute(array(':fichier'=>$_POST['fichier'], ':notedu'=>$_POST['notedu'], ':nomdudoc'=>$_POST['nomdudocument']));
    }
    ?>   
    </body></html>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Oublie donc cette histoire de session PHP.
    Je ne suis pas tout à fait d'accord !

    Il semble que fizzle ait utilisé les sessions car il travaille sur 2 pages (sauf erreur de compréhension de ma part) :
    - la 1ère est son formulaire,
    - la 2nde traite les données saisies.
    - Il a donc fort justement utilisé $_SESSION, car s'il détecte une anomalie lors du traitement, il retournera à la page 1 mais aura perdu sa saisie.

    Il y a plusieurs techniques pour le traitement des FORM, la methode qu'on voit le + souvent étant celle avec le formulaire qui boucle sur lui-même.
    Quand c'est un petit formulaire ça va, mais pour des données + complexes ça devient vite le BINZ !

    Tout dépend de ce que veut faire notre ami développeur ?... Qu'il n'hésite pas à préciser !...

  9. #9
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Quand c'est un petit formulaire ça va, mais pour des données + complexes ça devient vite le BINZ !
    Je ne vois pas en quoi ajouter une couche de sessions simplifie la chose.

    Bref dans notre résolution ici, commençons par simplifier justement.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Oui d'accord pour la simplification !
    Mais il semble que fizzle soit parti sur une solution à 2 pages ! (sauf erreur d'interprétation de ma part)
    Donc quand il retourne sur page1, il a perdu sa saisie, ce qui explique à mon sens l'utilisation d'une SESSION !

    Sortir des sentiers battus, n'est pas forcément une mauvaise chose...

    Cdlt

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Blood bowl, Heroclix, Krosmaster et JDR
    Inscrit en
    Juillet 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Blood bowl, Heroclix, Krosmaster et JDR
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2014
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Pour tout dire voici comment s'articulent mes pages:
    Page 1: login et mdp
    Page 2: Formulaire
    Page 3: Vérification des données entrées (affichage du formulaire sur une ligne) car je ne veux pas que les secrétaires puissent supprimer le contenu de la base.
    Je préfère montrer le résultat avant l'intégration dans la base.
    Si le résultat n'est pas probant, possibilité de revenir sur la page 2
    Page 4: Insert into

    De la page 2 à 4 il y a une vérification de mot de passe

  12. #12
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Bonjour.

    Donc c'est bien ce que je pensais : il y a page2 (the FORM) et page3 (qui exploite les données saisies)...

    Mais alors, dans l'architecture que vous avez décrite, ça coince où ?...

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Blood bowl, Heroclix, Krosmaster et JDR
    Inscrit en
    Juillet 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Blood bowl, Heroclix, Krosmaster et JDR
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2014
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    L'insertion dans la base ne se fait pas :/

  14. #14
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Donc dans la phase 4 !... (celle où vous 'attaquez' les tables connexion et notedeservice)
    On est revenu au point de départ, sauf qu'on comprend mieux !...

    D'abord, Il faudrait voir le code corrigé, puisque sabotage vous a suggéré d'ajouter une clause where.
    Ensuite, je vous propose d'essayer de débugger votre page, en procédant pas à pas :
    - tester la connexion,
    - tester le SELECT avec la clause WHERE,
    - et enfin tester l'INSERT...
    Il faut vous arranger pour faire un echo à chaque étape !

    PS : Hélas, je n'y entends rien à la syntaxe PDO... Ce qui ne m'empêche pas de sévir (ou de servir) sur les forums...

  15. #15
    Nouveau Candidat au Club
    Homme Profil pro
    Blood bowl, Heroclix, Krosmaster et JDR
    Inscrit en
    Juillet 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Blood bowl, Heroclix, Krosmaster et JDR
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2014
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    C'est l'insert qui ne fonctionne pas mais je ne vois pas pourquoi.
    Je viens d'essayer avec wamp, même problème.
    J'ai utilisé sans résultat ce code ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    try{
    $query="insert into...";
    $result=$bdd ->prepare($query);
    $result ->execute();
    } catch (Exception $e) {
    }

  16. #16
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Bonjour.

    C'est bien vous avez avancé. Hélas comme je vous le disais je ne suis pas "PDO"...
    - Avez-vous un message erreur SQL ?
    - Avez-vous consulté le fichier MYSQL.log dans le sous-dossier log de WAMP ?

  17. #17
    Nouveau Candidat au Club
    Homme Profil pro
    Blood bowl, Heroclix, Krosmaster et JDR
    Inscrit en
    Juillet 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Blood bowl, Heroclix, Krosmaster et JDR
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2014
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Non pas de message d'erreur.
    Et non, rien dans le fichier MySQL.log (qui a été créé à l'occasion car inexistant avant)

    On peut le faire sans PDO non ?!

  18. #18
    Nouveau Candidat au Club
    Homme Profil pro
    Blood bowl, Heroclix, Krosmaster et JDR
    Inscrit en
    Juillet 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Blood bowl, Heroclix, Krosmaster et JDR
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2014
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    J'ai essayé cette methode également sans résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $d = array("$fichier", "$notedu","$nomdudoc");
    $req = $bdd->prepare('INSERT INTO notedeservice (pdf,notedu,nomdudoc) VALUES(?,?,?)');
    $req->execute($d);

  19. #19
    Nouveau Candidat au Club
    Homme Profil pro
    Blood bowl, Heroclix, Krosmaster et JDR
    Inscrit en
    Juillet 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Blood bowl, Heroclix, Krosmaster et JDR
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2014
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Erreur trouvée !

    La table contient une 4e colonne qui doit s'incrémenter automatiquement, de ce fait je ne l'avais mis dans mon insert.

  20. #20
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Bien vu !
    Oui effectivement, c'est l'id qui est défini en 'AUTO-INCREMENT'... (Je n'y avais pas pensé, en fait dès que je vois du PDO je le lis pas...)
    Parfait, et bon développement.

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

Discussions similaires

  1. [AC-97] last insert into - dernier insert into
    Par coyote90 dans le forum VBA Access
    Réponses: 7
    Dernier message: 04/02/2011, 19h59
  2. [MySQL] requête INSERT INTO ne fonctionne pas
    Par quiky dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 23/10/2009, 14h41
  3. [MySQL] pourquoi insert into ne fonctionne pas
    Par Philcmoi dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 05/10/2009, 13h38
  4. [SQL] requete INSERT INTO ne marche pas
    Par mimagyc dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 07/08/2007, 11h48
  5. [WD11] Insert Into ne fonctionne pas
    Par IdrilElendil dans le forum WinDev
    Réponses: 4
    Dernier message: 04/04/2007, 15h03

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