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 :

Ajout d'une note


Sujet :

PHP & Base de données

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 33
    Par défaut Ajout d'une note
    Bonjour,

    j'ai une base de donnée et dedans il y a 3 tables.

    1) -Noeleve
    -nom
    -prenom

    2) -Nomatiere
    -nom

    3) -note
    -noeleve
    -nomatiere

    enfaite j'arrive pas a ajouter une note dans la table note a l'aide d'un formulaire sachant que noeleve et nomatiere sont des clée primaire.

    je bloque au niveau du code.

    merci

    bonne journée

  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
    Il ne manquerait pas la valeur de la note dans ta table note ?

    Sinon tu peux nous montrer ton code actuel qu'on puisse le corriger ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 33
    Par défaut
    desoler je me suis mal exprimé

    alors j'ai trois base :

    1) etudiants
    -Noeleve
    -nom
    -prenom

    2) matieres
    -Nomatiere
    -nom

    3) notes
    -note
    -Noeleve
    -Nomatiere

    donc j'ai dejà fais pour rajouter les eleves et les matières, affichage des notes.

    j'ai un formulaire :

    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
       $requete = "SELECT Nom FROM etudiants";
       $requete2 = "SELECT Matiere FROM matieres";
        $connexion = mysql_connect(SERVEUR, NOM, PASSE) or die("connexion impossible"); 
        mysql_select_db(BASE, $connexion)  or die("base introuvable"); 
    	?> 
    <form action="" method="post">
      <fieldset>
      <p>
     
      <select name="Nom">
      <?php
      $resultat = mysql_query ($requete, $connexion);
      while ( ($etudiants = mysql_fetch_object ($resultat)))
      {
    		echo "<option value=\"$etudiants->Nom\">$etudiants->Nom</option>";
      }
      ?>
        </select>
    	</p>
     
       <p>
     
      <select name="Matiere">
      <?php
      $resultat2 = mysql_query ($requete2, $connexion);
      while ( ($matieres = mysql_fetch_object ($resultat2)))
      {
    		echo "<option value=\"$matieres->Matiere\">$matieres->Matiere</option>";
      }
      ?>
        </select>
    	</p>
     
      <input type="text" value="note"/>
     <input type="submit" value="ajouter"/>
    Mais ce que jarrive pas du tout c'est l'ajout des notes dans la bdd

    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
    Les "value" de ta liste déroulante devraient plus être les id que les noms explicites.

    Il te reste juste à faire un INSERT dans ta table NOTE avec ce que tu recuperes du formulaire dans $_POST.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 33
    Par défaut
    voilà la requete que j'ai fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete = "INSERT INTO notes (NoEtu, NoMatieres, NoNote) VALUES ('".$_POST[nom]."','".$_POST[matiere]."','".$_POST[note]."')";
    mais ça n'a pas l'air de fonctionner.

    lorsqu'il met a jour la table note, le sgbd fais appel au NoEtu de la table etudiants et au NoMatiere de la table matieres mais dans le menu deroulant j'ai le nom de l'etudiant et le nom de la matière donc le sgbd doit faire le rapprochement entre le NoEtu et le nom.

    c'est ça que je n'arrive pas a faire.

  6. #6
    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
    Est-ce que tu as fais les modification sur les "value" comme je t'ai indiqué ?

    De plus
    - les clefs d'un tableau PHP prennent des guillemets quand elles ne sont pas numériques
    - les valeurs dans une requete SQL ne prennent pas de guillemets quand elles sont numeriques

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete = "INSERT INTO notes (NoEtu, NoMatieres, NoNote) VALUES (".$_POST['nom'].",".$_POST['matiere'].",".$_POST'[note'].")";
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 33
    Par défaut
    j'ai effectué des modifications :

    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
    define("NOM","etu");
    define("PASSE","lannion");
    define("SERVEUR","localhost");
    define("BASE","tp1");
    ?>
     
    <?php 
    echo "<?xml version=\"1.0\" encoding=\"iso-8859-15\"?>" ;
     
    //Pr�paration pour r�cup�rer touts les noms d'employ�s par la suite :
     
     
       $requete = "SELECT Nom FROM etudiants";
       $requete2 = "SELECT Matiere FROM matieres";
        $connexion = mysql_connect(SERVEUR, NOM, PASSE) or die("connexion impossible"); 
        mysql_select_db(BASE, $connexion)  or die("base introuvable"); 
    	?> 
    <form action="nouvelle_note.php" method="post">
      <fieldset>
      <p>
     
      <select name="Nom" id="etudiants">
      <?php
      $resultat = mysql_query ($requete, $connexion);
      while ( ($etudiants = mysql_fetch_object ($resultat)))
      {
    		echo "<option id=\"$etudiants->Nom\">$etudiants->Nom</option>";
      }
      ?>
        </select>
    	</p>
     
       <p>
     
      <select name="Matiere" id="matieres">
      <?php
      $resultat2 = mysql_query ($requete2, $connexion);
      while ( ($matieres = mysql_fetch_object ($resultat2)))
      {
    		echo "<option id=\"$matieres->Matiere\">$matieres->Matiere</option>";
      }
      ?>
        </select>
    	</p>
     
      <input type="text" value="note" id="note"/>
            <p> ajouter une note a un eleve.</p>
      <input type="submit" value="ajouter"/>
      </fieldset>
    </form>
    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
    <?php
    define("NOM","etu");
    define("PASSE","lannion");
    define("SERVEUR","localhost");
    define("BASE","tp1");
    ?>
     
     
    <?php
     
    $connexion = mysql_connect(SERVEUR, NOM, PASSE) or die("connexion impossible"); 
    mysql_select_db(BASE, $connexion)  or die("base introuvable"); 
    echo "\"Connexion au serveur ".SERVEUR." et sélection de la bdd ".BASE."  OK  !\"<br/>"; 
     
      if (isset($_POST["ajouter"]))    
        $requete = "INSERT INTO notes (NoEtu, NoMatieres, NoNote) VALUES (".$_POST['etudiants'].",".$_POST['matieres'].",".$_POST['note'].")";
     
     $resultat = mysql_query ($requete, $connexion);
      if ($resultat!=0)  echo "<p>La requête $requete a été effectuée</p>";
      else echo "<p>La requête $requete a posé le problème suivant: $mysql_error($connexion)</p>";
     
    ?>
    j'ai suivis ce que vous m'avez dit mais j'y arrive toujours pas

  8. #8
    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
    Maaaaah non !
    Je n'ai pas dis de remplacer "value" par "id"
    J'ai dit de remplacer le nom par l'id :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<option value="' .$etudiants->Noeleve .'">' . $etudiants->Nom .'</option>';
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 33
    Par défaut
    merci mais ça fonctionne toujours pas.

    ma synthaxe est correct ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      if (isset($_POST["ajouter"]))    
        $requete = "INSERT INTO notes (NoEtu, NoMatieres, NoNote) VALUES (".$_POST['etudiants'].",".$_POST['matieres'].",".$_POST['note'].")";

    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
    <form action="nouvelle_note.php" method="post">
      <fieldset>
      <p>
     
      <select  id="etudiants">
      <?php
      $resultat = mysql_query ($requete, $connexion);
      while ( ($etudiants = mysql_fetch_object ($resultat)))
      {
    		echo '<option value="'. $etudiants->NoEtu .'">' . $etudiants->Nom .'</option>';
      }
      ?>
        </select>
    	</p>
     
       <p>
     
      <select  id="matieres">
      <?php
      $resultat2 = mysql_query ($requete2, $connexion);
      while ( ($matieres = mysql_fetch_object ($resultat2)))
      {
    		echo '<option value="'. $matieres->NoMatieres .'">' . $matieres->Matiere .'</option>';
      }
      ?>
        </select>
    	</p>
     
      <input type="text" value="note" id="note"/>
            <p> ajouter une note a un eleve.</p>
      <input type="submit" value="ajouter"/>
      </fieldset>
    </form>

  10. #10
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <select name="etudiants">
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre confirmé Avatar de raffa
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    194
    Détails du profil
    Informations personnelles :
    Âge : 28
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 194
    Par défaut
    essai avec ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $requete = "INSERT INTO notes (NoEtu, NoMatieres, NoNote) VALUES ('".mysql_real_escape_string($_POST['etudiants'])."', '".mysql_real_escape_string($_POST['matieres'])."', '".mysql_real_escape_string($_POST['note'])."')";
    $resultat = mysql_query($requete) or die(mysql_error());

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 33
    Par défaut
    Citation Envoyé par raffa Voir le message
    essai avec ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $requete = "INSERT INTO notes (NoEtu, NoMatieres, NoNote) VALUES ('".mysql_real_escape_string($_POST['etudiants'])."', '".mysql_real_escape_string($_POST['matieres'])."', '".mysql_real_escape_string($_POST['note'])."')";
    $resultat = mysql_query($requete) or die(mysql_error());
    avec cette methode voilà ce que me dit la page :

    Duplicate entry '0' for key 1

  13. #13
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 29
    Par défaut
    NoEtu ne serait pas une clé primaire (ou un unique) ? dans ce cas elle doit être unique ! Si tu essayes d'insérer une valeur alors une erreur est lancée.

    Pourquoi ne pas mettre un AUTO_INCREMENT sur le clé primaire ?
    Sinon tu peux gérer cette erreur dans la requête :
    INSERT (..) INTO (...) ON DUPLICATE UPDATE|INSERT (...)

  14. #14
    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
    "ON DUPLICATE" n'existe pas sur un INSERT en mysql.
    Il n'y a que "ON DUPLICATE KEY UPDATE"

    Sinon ton probleme actuel souleve plutot la question de la structure de ta base.
    Je suppose qu'un eleve peut avoir plusieurs notes dans une matière : dans ce cas, il faudrait ajouter un index sur ta table note (et eventuellement une colonne pour dater la note).
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 33
    Par défaut
    j'essaie de metter un auto increment dans la clée primaire mais sql me renvoie une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE TABLE Notes (NoNote INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL ,NoEtu INTEGER NOT NULL ,NoMatieres INTEGER NOT NULL);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     MySQL a répondu:Documentation
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AUTOINCREMENT   ,NoEtu INTEGER
    NOT NULL ,NoMatieres INTEGER NOT NULL )' at line 1
    EDIT :

    voilà comment j'ai refait mes tables :

    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
     CREATE TABLE `tp1`.`etudiants` (
    `NoEtu` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    `nom` VARCHAR( 40 ) NOT NULL ,
    `prenom` VARCHAR( 40 ) NOT NULL
    ) 
     
     CREATE TABLE `tp1`.`Notes` (
    `NoNote` INT NOT NULL ,
    `NoEtu` INT NOT NULL ,
    `NoMatieres` INT NOT NULL ,
    PRIMARY KEY ( `NoNote` )
    )  
     
     
     CREATE TABLE `tp1`.`etudiants` (
    `NoMatieres` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    `matiere` VARCHAR( 40 ) NOT NULL ,
    )
    ma syntaxe est elle bonne ?

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 33
    Par défaut
    en modifiant j'ai reussi il insere bien une note dans la table note mais il ne fai pas la correspondance entre le NoEtu et le Nom.

    donc je sais pas trop comment faire.

  17. #17
    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
    N'oublie pas d'ajouter Noetu dans la liste des colonnes de ton SELECT
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 33
    Par défaut
    voilà a quoi ressemble ma requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $requete = "INSERT INTO notes (NoEtu, NoMatieres, NoNote) VALUES ('".($_POST['etudiants'])."', '".($_POST['matieres'])."', '". ($_POST['note'])."')";
    mais dans les colonnes NoEtu et NoMatieres il me les a 0 alors qu'il rajoute bien la note dans la colonne NoNote.

    donc je vois pas d'où viens le problème

  19. #19
    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
    N'oublie pas d'ajouter Noetu et NoMatieres dans tes requetes SELECT
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 33
    Par défaut
    Citation Envoyé par sabotage Voir le message
    N'oublie pas d'ajouter Noetu et NoMatieres dans tes requetes SELECT
    Je ne comprends pas. Dans quel requête SELECT ?

    j'ai toujours le problème de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Duplicate entry '3' for key 1
    que faire ?

Discussions similaires

  1. Ajout d'une note dans un formulaire.
    Par valdeck95 dans le forum Langage
    Réponses: 12
    Dernier message: 24/03/2015, 22h14
  2. Ajouter une "note" sur une webview
    Par Invité dans le forum Composants graphiques
    Réponses: 28
    Dernier message: 25/07/2011, 09h06
  3. [MySQL] Ajouter une note
    Par mouadm dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 12/02/2009, 10h37
  4. Ajouter une note
    Par mouadm dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 08/02/2009, 19h11
  5. [DOM] Ajout d'une instrution de processing
    Par corwin_d_ambre dans le forum Format d'échange (XML, JSON...)
    Réponses: 9
    Dernier message: 06/05/2003, 11h51

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