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 :

Problème d'insertion des donne récupère ds la BDD [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 192
    Points : 65
    Points
    65
    Par défaut Problème d'insertion des donne récupère ds la BDD
    slt tt le monde
    je suis débutante au PHP et j'ai trouve un site "PHP pour débutants" je suis c exercices mais j'ai un pb avec l'un d'eux

    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
    :
    <?php
    // On commence par récupérer les champs 
     
    if(isset($_POST['nom'])) $nom=$_POST['nom'];
    else       $nom=""; 
     
    if(isset($_POST['prenom'])) $prenom=$_POST['prenom'];
    else      $prenom ="";
     
    if(isset($_POST['email'])) $email=$_POST['email'];
    else      $email="";
     
    if(isset($_POST['icq'])) $icq=$_POST['icq'];
    else       $icq="";
     
    if(isset($_POST['titre'])) $titre=$_POST['titre'];
    else       $titre="";
     
    if(isset($_POST['url'])) $url=$_POST['url'];
    else       $url="";
     
    // On vérifie si les champs sont vides 
     
    if(empty($nom) OR empty($prenom) OR empty($titre) OR empty($url))
              {
              echo '<font color="red"> Attention , seul le champ <b>ICQ</b> peut reste vide !</font>';
              }
     
    // Aucun champ n'est vide, on peut enregistrer dans la table 
         else 
             {
      $db=mysql_connect('localhost','root','');
      mysql_select_db('mysql',$db);
     
    //on regarde si l'URL existe deja
    $req=mysql_query("SELECT id FROM infos_tbl WHERE url='$url' ");
     
    // compte le nbr de result
    $res=mysql_num_rows($req);
     
    if($res!=0) //url existe on affiche un msg d'erreur
        {
            echo'<font color="red"> desole mais cette URL existe deja ds notre BDD.</font>';
         }
    else  // URL n existe pas
           {
    $req1=mysql_query("INSERT INTO infos_tbl(nom,prenom) VALUES('$nom','$prenom')");
      echo 'vos infos ont ete ajoutees';
     
    mysql_close();
     
             }
    ?>
    et voila le warnning que j'ai ds la BDD "PRIMARY and INDEX keys should not both be set for column `id`"

    le probleme c qd je rempli les champs et j'execute apres normalement y a insertion de ces champs ds ma base de donnees mais je ne trouve rien ,je ne trouve pas ou est le pb ,
    merci de m'aider

  2. #2
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut


    Le message d'erreur est explicite, c'est dans la structure de ta BDD qu'il y a un problème (sur les clés).
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Une clef primaire est déjà un index. Il est donc inutile de définir un index sur cette clef.
    Ensuite, si tu as une erreur, donne la requête précise qui pose problème (INSERT ou SELECT).
    Suis aussi la syntaxe suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql='...'; // ta requête
    $result=mysql_query($sql) or die('Erreur SQL.<br />Message d\'erreur : '.mysql_error().'<br />Requête : '.$sql);
    Et poste les messages d'erreur obtenus.

  4. #4
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 192
    Points : 65
    Points
    65
    Par défaut
    voila la requette avec la quel j'ai cree ma table
    code:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CREATE TABLE infos_tbl (id INT (11) not null AUTO_INCREMENT, 
    nom VARCHAR (35) not null , prenom VARCHAR (35) not null ,
    email VARCHAR (70) not null , icq INT (11) null , titre VARCHAR (70) not null , 
    url VARCHAR (255) not null , PRIMARY KEY (id), INDEX (id), UNIQUE (id))

    j'ai suprime les 2 derniers "index et unique " mais j'ai tj le meme pb les information ne s'ajoute pas a la table
    mnt j'ai cette erreur sql
    erreur:
    Erreur SQL.
    Message d'erreur : Erreur de syntaxe près de 'Resource id #3' à la ligne 1
    Requête : Resource id #3
    merci encore

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Poste le code (y compris la requête sql) qui ta amené à cette erreur.

  6. #6
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 192
    Points : 65
    Points
    65
    Par défaut
    je suis entraine de refaire tt l'exmple voila la requette de creation de table

    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
     
    <?php
    $db=mysql_connect('localhost','root','') or die('Erreur de connexion '.mysql_error());
    mysql_select_db('mysql',$db)  or die('Erreur de selection '.mysql_error()); 
     
    $sql=(" CREATE TABLE info_tbl (id INT (11) not NULL AUTO_INCREMENT, nom VARCHAR (35) not 
    
    NULL , prenom VARCHAR (35) not NULL , email VARCHAR (70) not NULL , icq INT(11) NULL , titre 
    
    VARCHAR (70) not NULL , url VARCHAR (255) not NULL , PRIMARY KEY (id) , INDEX (id) ,UNIQUE  
    
    (id))");
     
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
     
    echo' la table a ete creer';
    ?>
    la table a ete cree mais j'ai tj le warning ds la base de donne PHPMYAdnim

    PRIMARY and INDEX keys should not both be set for column `id`

    voila le 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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    <?php
    // On commence par récupérer les champs 
     
    if(isset($_POST['nom'])) $nom=$_POST['nom'];
    else       $nom=""; 
     
    if(isset($_POST['prenom'])) $prenom=$_POST['prenom'];
    else      $prenom ="";
     
    if(isset($_POST['email'])) $email=$_POST['email'];
    else      $email="";
     
    if(isset($_POST['icq'])) $icq=$_POST['icq'];
    else       $icq="";
     
    if(isset($_POST['titre'])) $titre=$_POST['titre'];
    else       $titre="";
     
    if(isset($_POST['url'])) $url=$_POST['url'];
    else       $url="";
     
    // On vérifie si les champs sont vides 
     
    if(empty($nom) OR empty($prenom) OR empty($titre) OR empty($url))
              {
              echo '<font color="red"> Attention , seul le champ <b>ICQ</b> peut reste vide !</font>';
              }
     
    // Aucun champ n'est vide, on peut enregistrer dans la table 
         else 
             {
      $db=mysql_connect('localhost','root','');
      mysql_select_db('mysql',$db);
     
    //on regarde si l'URL existe deja
     
    $req=mysql_query("SELECT id FROM info_tbl WHERE url='$url' ");
     
    // compte le nbr de result
    $res=mysql_num_rows($req);
     
    if($res!=0) //url existe on affiche un msg d'erreur
        {
            echo'<font color="red"> desole mais cette URL existe deja ds notre BDD.</font>';
         }
    else {
     
     $req1=mysql_query("INSERT INTO info_tbl(nom,prenom) VALUES('$nom','$prenom')");
      echo 'vos infos ont ete ajoutees';
     
    mysql_close();
     
    }         }
    ?>
    voila l'erreur que j'obtien quand j'execute ce code
    Erreur SQL.
    Message d'erreur : Erreur de syntaxe près de 'Resource id #3' à la ligne 1
    Requête : Resource id #3

  7. #7
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 192
    Points : 65
    Points
    65
    Par défaut
    c bon j'ai trouve mon erreur merci a tous

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    1) Supprime les commandes suivantes dans ta création de table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INDEX (id), UNIQUE (id)
    En effet, je t'ai déjà dit qu'une clef primaire est déjà un index et unique. Il ne faut donc pas lui affecter d'index et de contrainte d'unicité.
    2) Poste la requête qui te donne l'erreur citée. Rien dans ton code ne permet d'afficher ces messages.

  9. #9
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Citation Envoyé par makaphrodite
    c bon j'ai trouve mon erreur merci a tout
    Dans ce cas, poste l'explication pour que cela puisse servir à tout le monde.

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

Discussions similaires

  1. Problème d'insertion des données depuis Forms 10g
    Par monthaldo dans le forum Forms
    Réponses: 5
    Dernier message: 15/03/2010, 12h59
  2. Problème d'insertion des données
    Par fabpan dans le forum SQL*Loader
    Réponses: 1
    Dernier message: 30/06/2009, 17h24
  3. nouveau problême d'insertion des données dans la base de données
    Par tchimou dans le forum Bases de données
    Réponses: 6
    Dernier message: 27/03/2007, 15h32
  4. [MySQL] Problème à l'insertion des données en BDD
    Par carelha dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/11/2006, 14h31
  5. [VB6]problème d'insertion des donneés dans une base d'Access2003
    Par lanbok dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/05/2006, 12h17

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