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 :

Insertion des données [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Février 2012
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2012
    Messages : 404
    Par défaut Insertion des données
    je suis en train d'insérer les informations d'un utilisateur a la base de données mais lorsque j’exécute toujours il existe un problème dans la requête qui est exécuté dans mysqli_query().
    le message d'erreur est: " erreur d'insertion des informations d'utilisateur"
    j'en sais pas ou il existe le problème .

    code 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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    <?php
    include("db.php");
    session_start();
     
    //récupération de l'id_user
    $n=mysqli_query($c,"SELECT idUser FROM utilisateur");
    while($r=mysqli_fetch_array($n)){
     $id_user=$r['idUser'];
    }
     
    mysqli_free_result($n);
    $dateN ="";
     
    if(isset($_POST['bn'])){
    //traitement sur le formulaire
    if(isset($_POST['nom']) && isset($_POST['prenom']) & isset($_POST['annees']) && isset($_POST['mois'])
    	&& isset($_POST['mois']) && isset($_POST['jours'])&& isset($_POST['site']) && isset($_POST['login'])
    	&& isset($_POST['password']) ){ 
    $n=$_POST['nom'];
     
    $p=$_POST['prenom'];
     
    $an=$_POST['annees'];
     
    $m=$_POST['mois'];
     
    $j=$_POST['jours'];
     
    $s=$_POST['site'];
     
    $lo=$_POST['login'];
     
    $pass=$_POST['password'];
     
    //$php=$_POST['ph'];
    /*$C=$_POST['c'];
    $cpp=$_POST['cpp'];
    $java=$_POST['java'];
    $autre=$_POST['au'];*/
    if(isset($_POST['categorie'])){
    $categ=array(";",$_POST['categorie']);
    }
     
    	if(empty($n) || empty($p) || empty($j) || empty($m) || empty($an) || empty($s) || empty($lo)
    		|| empty($pass) || empty($categ) || empty($lo)){
     
              echo "<center><strong><font style='color:red;'>il faut remplir tous les champs !!</font><strong></center>";
    	}else{
     
     
             $dateN =$an.'-'.$m.'-'.$j;
     
    $v=mysqli_query($c,"INSERT INTO utilisateur (nom,prenon,dateNaissance,siteWeb,login,password) VALUES ('$n','$p','$dateN','$s','$lo','$pass')") or die("erreur d'insertion des informations d'utilisateur".mysqli_connect_error());
     
     
     
    foreach ($categorie as $value) {
    mysqli_query($c,"INSERT INTO utilisateurcategorie (idCategorie) VALUES('$value') ") or die("erreur d'insertion des catégorie".mysqli_connect_error());
    }
    header("location:liste_utilisateurs.php?id='.$id_user");
     
     
    	}
    }
    }
    ?>
    le code html:
    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
     
    <html>
    <head>
    	<title>exercice3</title>
    	<meta charset="utf-8">
    </head>
    <body>
     
     
     
    <center>
    <img src="user.png" width="50px" height="50px" />bonjour
    <br/>
    vous etes sur la page d'inscription
    <br/>
     
    <p>toute personne qui veut s'incrire <strong>doit remplir</strong> le formulaire suivant:
     
     
    <form method="POST" enctype="multipart/form-data">
    <table cellspacing="30%" cellpadding="20%" bgcolor="#CCCCCC" border="2" >
    <tr>
    <td colspan="20"><center> <font size="5" color="red"><strong>Formulaire d'incription</strong>
    </font>
    </center>
    </td>
    </tr>
     
    <tr>
    <td colspan="12">Nom</td>
    <td><input type="text" name="nom"/></td>
    </tr>
     
     
    <tr>
    <td colspan="12">Prémon</td>
    <td><input type="text" name="prenom"/></td>
    </tr>
     
    <tr>
    <td colspan="12">Date de naissance</td>
    <td> jours <input type="text" name="jours" /> mois <input type="text" name="mois"/> 
    <br/><br/> année <input type="text" name="annees"/> </td>
    </tr>
     
    <tr>
    <td colspan="12">Situation familiale</td>
    <td><INPUT type="radio" name="choix" value="Célébataire"> Célébataire
    <INPUT type="radio" name="choix" value="marié"> Marié
    <INPUT type="radio" name="choix" value="divorcé"> Divorcé</td>
    </tr>
     
    <tr>
    <td colspan="12">Site web</td>
    <td><input type="text" name="site" value="http://" /></td>
    </tr>
     
    <tr>
    <td colspan="12">Login</td>
    <td><input type="text" name="login"/></td>
    </tr>
     
    <tr>
    <td colspan="12">Password</td>
    <td><input type="password" name="password"/></td>
    </tr>
     
     
    <tr>
    <td colspan="12">Langages utilisés</td>
    <td><input type="checkbox" name="c" value="c" /> Langage C
    <input type="checkbox" name="cpp" value="cplus" /> C++
    <input type="checkbox" name="ja" value="java"/> java
    <input type="checkbox" name="ph" value="php"/> php
    <input type="checkbox" name="au" value="autres"/> autres
    </td>
    </tr>
     
    <tr>
    <td colspan="12">Catégories de new préférés</td>
    <td><select name="categorie[]" multiple>
    <?php
    $r=mysqli_query($c,"SELECT * FROM categorie")or die("erreur d'affichage de la liste Catégories");
    while($a=mysqli_fetch_array($r)){
    echo'<option value="'.$a['libelleCategorie'].'">'.$a['libelleCategorie'].'</option>';
    }
     
    ?>
     
    </select></td>
    </tr>
     
    <tr>
    <td colspan="20" > 
    <center>
    <input type="submit" value="enregistre" name="bn"  />
    <input type="reset" value="annuler" name="annuler"  />
    <img src="true.png" width="20px" height="20px"/>
    </center>
    </tr>
    </table>
    </form>
     
     
     
    </center>
    </body>
    </html>
    merci de résoudre ce problème

  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
    Par défaut
    Concernant l'utilisation de mysqli, il faut que tu consultes la documentation ou lise des tutos, mais n'invente pas des écritures.

    Globalement il y a quand même pas mal de soucis dans ton code:

    - ton code n'est pas proprement indenté
    - tes variables sont illisibles, ces économies de nom sont néfastes et ne suivent aucune logique
    - ta partie "recuperation de l'id" n'a ni queue ni tête => poubelle ; on peut supposer quand même que l'id de l'utilisateur est stocké en session
    - tu as mis "prenon" au lieu de "prenom"
    - la méthode pour afficher les erreurs de requête c'est "error" pas "connect_error" qui est pour les erreurs de connexion
    - dans ton header à la fin tu as un ' qui se ballade

    En le débarassant des choses inutiles et en utilisant les requêtes préparées mysqli ça donne :
    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("db.php");
    session_start();
     
    if(isset($_POST['bn'])){
    	if (empty($_POST['nom']) || empty($_POST['prenom']) || empty($_POST['jour']) || empty($_POST['mois']) || empty($_POST['annee']) || empty($_POST['site']) || empty($_POST['login'])
    			|| empty($_POST['password']) || empty($_POST['categorie'])) {
    				echo "<center><strong><font style='color:red;'>il faut remplir tous les champs !!</font><strong></center>";
    	}
    	else {
    		$date_naissance = $_POST['annee'].'-'.$_POST['mois'].'-'.$_POST['jour'];
     
    		$stmt = mysqli_prepare( $c, "INSERT INTO utilisateur (nom,prenom,dateNaissance,siteWeb,login,password) VALUES (?, ?, ?, ?, ?, ?)");
    		$stmt->bind_param("ssssss", $_POST['nom'], $_POST['prenom'], $date_naissance, $_POST['site'], $_POST['password']);
    		$stmt->execute();
     
    		if (isset($_POST['categorie'])) {
    			$stmt = mysqli_query($c,"INSERT INTO utilisateurcategorie (idCategorie) VALUES (?)");
    			$stmt->bind_param("s", $value);
                            $categorie = explode(";", $_POST['categorie']);
    			foreach ($categorie as $value) {
    				$stmt->execute();
    			}
    		}
    	}
    }
    header('Location: liste_utilisateurs.php?id='.$_SESSION['id_user']);
    ?>
    Bon concernant les catégories, j'ai supposé que l'utilisateur saisissait les élements séparés par un ";".
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Février 2012
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2012
    Messages : 404
    Par défaut
    merci pour la réponse Monsieur ,
    cet erreur correspond a quoi! "Column count doesn't match value count at row 1"

    merci

  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
    Par défaut
    il manque une valeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $stmt->bind_param("ssssss", $_POST['nom'], $_POST['prenom'], $date_naissance, $_POST['site'], $_POST['login'], $_POST['password']);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Décembre 2009
    Messages : 14
    Par défaut
    Faudra pas oublier d'augmenter à 7 les "?" de cette ligne de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    		$stmt = mysqli_prepare( $c, "INSERT INTO utilisateur (nom,prenom,dateNaissance,siteWeb,login,password) VALUES (?, ?, ?, ?, ?, ?, ?)");

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

Discussions similaires

  1. insertion des données ds des tables
    Par taroudant dans le forum Oracle
    Réponses: 2
    Dernier message: 18/12/2006, 10h59
  2. [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
  3. [ASE 12.5][WIN]insertion des données
    Par dngaya dans le forum Adaptive Server Enterprise
    Réponses: 2
    Dernier message: 12/06/2006, 18h28
  4. [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
  5. [C#] problème avec l'insertion des données dans MySQL
    Par madica dans le forum Accès aux données
    Réponses: 7
    Dernier message: 08/11/2005, 13h27

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