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 :

formulaire insertion avec requête


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 42
    Points : 23
    Points
    23
    Par défaut formulaire insertion avec requête
    Bonjour,

    Voilà j'ai créé un formulaire pour insérer des données dans une table id_coaching, seulement il ne marche pas et j'arrive pas à comprendre ce que j'ai fait de faux...

    Il ne me répond aucune erreur, il me renvoie sur ma page index mais les données ne s'enregistre pas...

    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
    <?php
    // Si les variables existent	
    if (isset($_POST['date']) AND isset($_POST['coach']) AND isset($_POST['duree']) AND isset($_POST['resume']) AND isset($_POST['pointmes']) AND isset($_POST['tarif'])) 
    {
    	// Si on a quelque chose à enregistrer
        if ($_POST['date'] != NULL AND $_POST['coach'] != NULL AND $_POST['duree'] != NULL AND $_POST['resume'] != NULL AND $_POST['pointmes'] != NULL AND $_POST['tarif'] != NULL) 
     
        {
            // On utilise la fonction PHP htmlentities pour éviter d'enregistrer du code HTML dans la table
            $date = htmlentities ($_POST['date'], ENT_QUOTES);
            $coach = htmlentities ($_POST['coach'], ENT_QUOTES);
    		$duree = htmlentities ($_POST['duree'], ENT_QUOTES);
    		$resume = htmlentities ($_POST['resume'], ENT_QUOTES);
            $pointmes = htmlentities ($_POST['pointmes'], ENT_QUOTES);
    		$tarif = htmlentities ($_POST['tarifs'], ENT_QUOTES);
     
    	// On enregistre le message
    	if(!empty($_GET['id_indep']))
    	{
    	mysql_query("INSERT INTO t_coaching (id_coaching, date, coach, duree, resume, pointmes, tarif) VALUES ('', '$date', '$coach', '$duree', '$resume', '$pointmes', '$tarif') WHERE ref_indep=".$_GET['id_indep']."");
    	}	
     
    	// On se déconnecte de MySQL
    	mysql_close();
    	}
    }
    ?>
     
    <form action="index.php" method="post">
    <table width="200" border="0">
      <tr>
        <td width="90" bgcolor="#5395f9"><center><b><u>Date</u></b></center></td>
        <td width="80" bgcolor="#5395f9"><center><b><u>Coach</u></b></center></td>
        <td width="70" bgcolor="#5395f9"><center><b><u>Durée</u></b></center></td>
        <td width="450" bgcolor="#5395f9"><center><b><u>Résumé</u></b></center></td>
        <td width="90" bgcolor="#5395f9"><center><b><u>Points MES</u></b></center></td>
        <td width="70" bgcolor="#5395f9"><center><b><u>Tarifs</u></b></center></td>
      </tr>
      <tr>
        <td><input type="text" name="date" size="9"/></td>
        <td><input type="text" name="coach" size="8"/></td>
        <td><input type="text" name="duree" size="7"/></td>
        <td><textarea name="resume" cols="50"/></textarea></td>
        <td><input type="text" name="pointmes" size="9"/></td>
        <td><input type="text" name="tarif" size="7"/></td>
      </tr>
    </table>
    <input name="submit" type="submit" value="Enregistrer"/><p><br />
     
    <form>
    <input type='button' value='Retour' onclick='location.href="index.php?page=index"'/></form>
    Quelqu'un voit pourquoi?

    merci

  2. #2
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 23
    Points : 25
    Points
    25
    Par défaut
    je vois pas le mysql_connect, c normal ?

    et dans ta requete, un INSERT INTO avec une clause WHERE ca fait tres... bizarre O_o je ne vois pas le pourquoi de la chose et c'est quoi ta variable GET id_indep, je ne la vois pas dans l'action de ton formulaire, je pense que ta condition aura du mal a etre respectée.

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Salut

    Vérifies que tu fais bien la connexion à la base de données à un moment ou à un autre.

    Sinon, essayes de décomposer l'écriture de la requête et ajoutes le retour d'erreur, ça nous aidra peut-être
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql="INSERT INTO t_coaching (id_coaching, date, coach, duree, resume, pointmes, tarif) VALUES ('', '$date', '$coach', '$duree', '$resume', '$pointmes', '$tarif') WHERE ref_indep=".$_GET['id_indep']."";
    mysql_query($sql) or die(" requete : ".$sql." erreur : ".mysql_error());

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 42
    Points : 23
    Points
    23
    Par défaut
    Oui c'est normal, il se fait plus haut car j'ai encore une autre requete.

    J'ai bien ajouté "or die (" requete : ".$sql." erreur : ".mysql_error());"

    mais ca ne me retourne toujours rien...

  5. #5
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    ton mysql_query() est situé dans un if. Es-tu sur que la condition pour ce if est bien rempli? Parce que tu testes que $_POST['id_indep'] est bien rempli mais je ne vois pas le champ id_indep dans ton formulaire.
    Fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $_POST['id_indep'];
    avant ton if pour voir ce qu'il y a dedans

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 42
    Points : 23
    Points
    23
    Par défaut
    Le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     echo $_POST['id_indep'];
    ne me retourne rien, mais si je fait un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     echo $_GET['id_indep'];
    , il me reprend bien ma variable que j'ai passé depuis mon autre page

  7. #7
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    ça se complique...
    Ajoutes un echo de la requete, qu'on voit quelle tête elle a...
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql="INSERT....";
    echo $sql;

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 42
    Points : 23
    Points
    23
    Par défaut
    Ca ne me retourne rien du tout... mais la requete est un insert, c'est donc normal non?

  9. #9
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Non ton echo $sql; devrait retourner le contenu de la requete (pas son résultat, juste la string INSERT INTO blablabla.

    Es-tu sur que la variable $_GET['id_indep'] est bien remplie? Parce que pour que ton echo ne marche pas ca indique qu'il ne rentre pas dans le if...

  10. #10
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Ben non.
    Si tu as dans ton script un truc du genre $sql="INSERT blablbla"; quand tu fais un echo ça devrait t'écrire INSERT blablbla.
    Je crois que ton script ne rentre pas dans le if. Si au lieu de !empty() tu utilises isset(), est-ce que ça marche mieux ?

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 42
    Points : 23
    Points
    23
    Par défaut
    Si je met un echo $_GET['id_indep']; ici

    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
    <?php
    echo $_GET['id_indep'];
    // Si les variables existent	
    if (isset($_POST['date']) AND isset($_POST['coach']) AND isset($_POST['duree']) AND isset($_POST['resume']) AND isset($_POST['pointmes']) AND isset($_POST['tarif'])) 
    {
    	// Si on a quelque chose à enregistrer
        if ($_POST['date'] != NULL AND $_POST['coach'] != NULL AND $_POST['duree'] != NULL AND $_POST['resume'] != NULL AND $_POST['pointmes'] != NULL AND $_POST['tarif'] != NULL) 
     
        {
            // On utilise la fonction PHP htmlentities pour éviter d'enregistrer du code HTML dans la table
            $date = htmlentities ($_POST['date'], ENT_QUOTES);
            $coach = htmlentities ($_POST['coach'], ENT_QUOTES);
    		$duree = htmlentities ($_POST['duree'], ENT_QUOTES);
    		$resume = htmlentities ($_POST['resume'], ENT_QUOTES);
            $pointmes = htmlentities ($_POST['pointmes'], ENT_QUOTES);
    		$tarif = htmlentities ($_POST['tarifs'], ENT_QUOTES);
     
     
    	// On enregistre le message
    	if(isset($_GET['id_indep']))
    	{
    	$sql = "INSERT INTO t_coaching (id_coaching, date, coach, duree, resume, pointmes, tarif) VALUES ('', '$date', '$coach', '$duree', '$resume', '$pointmes', '$tarif') WHERE ref_indep=".$_GET['id_indep']."";
    	mysql_query($sql) or die(" requete : ".$sql." erreur : ".mysql_error());
    	}	
     
    	// On se déconnecte de MySQL
    	mysql_close();
    	}
    }
    ?>
    Alors il me retourne bien le l'id de la personne que j'ai selectionné.

    tandis que si je fait echo $_GET['id_indep']; ici :
    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
    <?php
    // Si les variables existent	
    if (isset($_POST['date']) AND isset($_POST['coach']) AND isset($_POST['duree']) AND isset($_POST['resume']) AND isset($_POST['pointmes']) AND isset($_POST['tarif'])) 
    {
    	// Si on a quelque chose à enregistrer
        if ($_POST['date'] != NULL AND $_POST['coach'] != NULL AND $_POST['duree'] != NULL AND $_POST['resume'] != NULL AND $_POST['pointmes'] != NULL AND $_POST['tarif'] != NULL) 
     
        {
            // On utilise la fonction PHP htmlentities pour éviter d'enregistrer du code HTML dans la table
            $date = htmlentities ($_POST['date'], ENT_QUOTES);
            $coach = htmlentities ($_POST['coach'], ENT_QUOTES);
    		$duree = htmlentities ($_POST['duree'], ENT_QUOTES);
    		$resume = htmlentities ($_POST['resume'], ENT_QUOTES);
            $pointmes = htmlentities ($_POST['pointmes'], ENT_QUOTES);
    		$tarif = htmlentities ($_POST['tarifs'], ENT_QUOTES);
     
    echo $_GET['id_indep'];
    	// On enregistre le message
    	if(isset($_GET['id_indep']))
    	{
    	$sql = "INSERT INTO t_coaching (id_coaching, date, coach, duree, resume, pointmes, tarif) VALUES ('', '$date', '$coach', '$duree', '$resume', '$pointmes', '$tarif') WHERE ref_indep=".$_GET['id_indep']."";
    	mysql_query($sql) or die(" requete : ".$sql." erreur : ".mysql_error());
    	}	
     
    	// On se déconnecte de MySQL
    	mysql_close();
    	}
    }
    ?>
    Il ne me retourne plus rien...

    que je met isset() ou !empty() ca ne change pas...

    merci

  12. #12
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Essaie d'ajouter un
    juste apres chacun de tes if

    je pense que tu ne rentres jamais dans un de tes if concernant les $_POST

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 42
    Points : 23
    Points
    23
    Par défaut
    effectivement, je n'ai aucun retour... comment ca se fait que je ne rentre pas dans mes if ? Oo

  14. #14
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Si le echo fonctionne au début il suffit de récupérer la variable à ce moment-là. (en rajoutant des echo partout)
    Code php : 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
    $id_indep=$_GET['id_indep'];
    // Si les variables existent	
    if (isset($_POST['date']) AND isset($_POST['coach']) AND isset($_POST['duree']) AND isset($_POST['resume']) AND isset($_POST['pointmes']) AND isset($_POST['tarif'])) 
    {
    echo "if1";
    	// Si on a quelque chose à enregistrer
        if ($_POST['date'] != NULL AND $_POST['coach'] != NULL AND $_POST['duree'] != NULL AND $_POST['resume'] != NULL AND $_POST['pointmes'] != NULL AND $_POST['tarif'] != NULL) 
     
        {
    echo "if2";
            // On utilise la fonction PHP htmlentities pour éviter d'enregistrer du code HTML dans la table
            $date = htmlentities ($_POST['date'], ENT_QUOTES);
            $coach = htmlentities ($_POST['coach'], ENT_QUOTES);
    		$duree = htmlentities ($_POST['duree'], ENT_QUOTES);
    		$resume = htmlentities ($_POST['resume'], ENT_QUOTES);
            $pointmes = htmlentities ($_POST['pointmes'], ENT_QUOTES);
    		$tarif = htmlentities ($_POST['tarifs'], ENT_QUOTES);
     
     
    	// On enregistre le message
    	if(!empty($id_indep))
    	{
    echo "if id_indep : $id_indep";
    	$sql = "INSERT INTO t_coaching (id_coaching, date, coach, duree, resume, pointmes, tarif) VALUES ('', '$date', '$coach', '$duree', '$resume', '$pointmes', '$tarif') WHERE ref_indep=".$_GET['id_indep']."";
    	mysql_query($sql) or die(" requete : ".$sql." erreur : ".mysql_error());
    	}	
     
    	// On se déconnecte de MySQL
    	mysql_close();
    	}
    }
    ?>

    EDIT : bon apparement le problème ne vient pas de là, mais plutot des $_POST. Donc il n'y a plus qu'à faire des tas de echo $_POST['var']...

  15. #15
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Une raison serait qu'une des variables que tu testes n'est pas remplie.

    Fais un print_r($_POST) au début de ton script pour voir ce qu'il y a dans $_POST et essayer de comprendre dejà

    EDIT : Et je trouve surprenant ta form de départ, tu en as deux séparées, je ne suis pas sur que ca soit normal du coup je pense que quand tu cliques sur ton bouton, il ne poste que la form qui contient le bouton.

  16. #16
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    En ce qui concerne les formulaires, je crois que le second est tout simplement l'équivalent d'un lien "retour à l'index". Mais je suis d'accord avec toi ça peut porter à confusion... Sutout que le formulaire pointe sur la même page.

Discussions similaires

  1. [PDO] Insert avec requête préparée, erreur champs datetime
    Par maxwell374 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 29/07/2011, 11h36
  2. Insert avec requête imbriquée
    Par kyra78 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 21/03/2008, 16h21
  3. Requête : Insert avec plusieurs tables
    Par bleu_ciel dans le forum Access
    Réponses: 4
    Dernier message: 01/06/2006, 21h42
  4. insertion avec requête imbriquées
    Par Manfried dans le forum Requêtes
    Réponses: 7
    Dernier message: 19/11/2005, 09h51
  5. Réponses: 4
    Dernier message: 04/08/2005, 08h23

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