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 :

Traitement PHP d'un formulaire [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 278
    Points : 74
    Points
    74
    Par défaut Traitement PHP d'un formulaire
    Bonjour,

    J'ouvre cette discussion qui fait référence à celle-là : http://www.developpez.net/forums/d13...ea-dynamiques/ .

    Ce que je voudrais : que l'utilisateur puisse poster son cours/tp avec les questions au bon endroit. A l'origine, j'avais fait un éditeur TINYMCE où l'utilisateur tapait son cours avec les questions. Le problème est que comme j'enregistrais le cours et les questions dans le même champs SQL, je ne pouvais pas gérer les questions, les mettre au bon endroit dans le cours/tp.
    Ensuite dans la discussion ci-dessus, jreaux62 m'a dit de séparer les cours en trois tables (COURS, CHAPITRES, QUESTIONS). De plus, il m'a dit de gérer par JAVASCRIPT/AJAX pour gérer l'ajout de chapitres, de questions. On a convenu que je le ferais plus tard.

    Voici les :
    table cours :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE TABLE IF NOT EXISTS `test_site_cours_v2` (
      `id_cours` int(11) NOT NULL AUTO_INCREMENT,
      `titre_cours` varchar(255) CHARACTER SET utf8 NOT NULL,
      `auteur_cours` varchar(255) CHARACTER SET utf8 NOT NULL,
      `introduction_cours` longtext CHARACTER SET utf8 NOT NULL,
      `conclusion_cours` longtext CHARACTER SET utf8 NOT NULL,
      `date_publication_cours` datetime NOT NULL,
      `date_cloture_validation_cours` datetime NOT NULL,
      `matiere_cours` varchar(255) CHARACTER SET utf8 NOT NULL,
      `classe_cours` varchar(255) CHARACTER SET utf8 NOT NULL,
      PRIMARY KEY (`id_cours`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

    table chapitres :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE IF NOT EXISTS `test_site_chapitres_v2` (
      `id_chapitre` int(11) NOT NULL AUTO_INCREMENT,
      `id_cours` int(11) NOT NULL,
      `titre_chapitre` varchar(255) CHARACTER SET utf8 NOT NULL,
      `contenu_chapitre` longtext CHARACTER SET utf8 NOT NULL,
      PRIMARY KEY (`id_chapitre`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
    table questions :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TABLE IF NOT EXISTS ` test_site_questions_v2` (
      `id_question` int(11) NOT NULL AUTO_INCREMENT,
      `id_chapitre` int(11) NOT NULL,
      `titre_question` varchar(255) CHARACTER SET utf8 NOT NULL,
      `contenu_question` varchar(255) CHARACTER SET utf8 NOT NULL,
      `reponse_question` varchar(255) CHARACTER SET utf8 NOT NULL,
      PRIMARY KEY (`id_question`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
    Voici le formulaire HTML :
    Code html : 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
    109
    <form action="" method="post">
      <b>Poster un Cours/TP</b> <br />
      <u>Matière :</u>
      <select name="matieres">
        <?php
    // Variables de session - DEBUT
    $query_recuperation_identifiant_connecte=$_SESSION['id_utilisateur'];
    // Variables de session - FIN
    $matiere = "SELECT matiereenseignee_utilisateur FROM test_site_utilisateur WHERE id_utilisateur='$query_recuperation_identifiant_connecte'"; 
    $result = mysql_query($matiere) or die("Erreur sur la requête SQL concernant la matière du professeur.");
    echo '<option value="">Choisissez votre matière.</option>';
    while ($row=mysql_fetch_array($result)) // mysql_fetch_array = Retourne une ligne de résultat MySQL sous la forme d'un tableau associatif, d'un tableau indexé, ou les deux
    { 
     echo '<option value="'.$row['0'].'">'.$row['0'].'</option>';
    }  
    ?>
      </select>
      <br />
      <u>Classe :</u>
      <select name="classes">
        <?php
    $classes = "SELECT classe_utilisateur FROM test_site_utilisateur,  test_site_classe WHERE classe_utilisateur=classe_nom"; 
    $result = mysql_query($classes) or die("Erreur sur la requête SQL concernant les classes.");
    echo '<option value="">Choisissez une de vos classes.</option>';
    while ($row=mysql_fetch_array($result)) // mysql_fetch_array = Retourne une ligne de résultat MySQL sous la forme d'un tableau associatif, d'un tableau indexé, ou les deux
    { 
     echo '<option value="'.$row['0'].'">'.$row['0'].'</option>';
    } ?>
      </select>
      <br />
      <div><b>Rédigez votre cours</b></div>
      <p>Titre du cours :
        <input name="titre_cours_tp" type="text" />
      </p>
      <p>Auteur :
        <input name="auteur_cours" type="text" value="<?php if(isset($_SESSION['pseudo_utilisateur'])) {echo $_SESSION['pseudo_utilisateur'];}?>"/>
      <p>Date de publication
        <input type="text" name="date_publication_tp" size="200" value='<?php $jour = array("Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi");$mois = array("","Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre");$dateDuJour = $jour[date("w")]." ".date("d")." ".$mois[date("n")]." ".date("Y"); echo $dateDuJour;?>'/>
        <br />
        Date de clôture des validations de ce Cours/TP (Pas obligatoire)
        <input type="date" name="date_cloture_validation_cours_tp" />
        <br />
        Introduction :
        <textarea name="introduction_cours" rows="" cols=""></textarea>
      <div><b>Chapitre 1</b></div>
      <p>Titre du chapitre 1 :
        <input name="titre_premier_chapitre" type="text" />
      </p>
      <p>Contenu du chapitre 1 :
        <textarea name="contenu_premier_chapitre" rows="" cols=""></textarea>
      </p>
      <div>Questions/Réponses</div>
      <p>Question 1-1 :
        <input name="premiere_question_premier_chapitre" type="text" />
      </p>
      Réponse 1-1 : [input]
      <p>Question 1-2 :
        <input name="deuxieme_question_premier_chapitre" type="text" />
      </p>
      Réponse 1-2 : [input]
      <p>Question 1-3 :
        <input name="troisieme_question_premier_chapitre" type="text" />
      </p>
      Réponse 1-3 : [input]
      <p>Question 1-4 :
        <input name="quatrieme_question_premier_chapitre" type="text" />
      </p>
      Réponse 1-4 : [input]
      <p>Question 1-5 :
        <input name="cinquieme_question_premier_chapitre" type="text" />
      </p>
      Réponse 1-5 : [input]<br />
      ------------------------
      <div><b>Chapitre 2</b></div>
      <p>Titre du chapitre 2 :
        <input name="titre_deuxieme_chapitre" type="text" />
      <p>Contenu du chapitre 2 :
        <textarea name="contenu_deuxieme_chapitre" rows="" cols=""></textarea>
      <div>Questions/Réponses</div>
      <p>Question 2-1 :
        <input name="premiere_question_deuxieme_chapitre" type="text" />
      </p>
      Réponse 2-1 : [input]
      <p>Question 2-2 :
        <input name="deuxieme_question_deuxieme_chapitre" type="text" />
      </p>
      Réponse 2-2 : [input]
      <p>Question 2-3 :
        <input name="troisieme_question_deuxieme_chapitre" type="text" />
      </p>
      Réponse 2-3 : [input]
      <p>Question 2-4 :
        <input name="quatrieme_question_deuxieme_chapitre" type="text" />
      </p>
      Réponse 2-4 : [input]
      <p>Question 2-5 :
        <input name="cinquieme_question_deuxieme_chapitre" type="text" />
      </p>
      Réponse 2-5 : [input]
      <p>... (autant de chapitre que tu veux : tu peux proposer jusqu'à 5-10 chapitres, par exemple)<b>Amélioration à faire quand tout marchera : </b>ajouter/supprimer un chapitre (avec contenu + questions (pas obligatoire), ajouter/supprimer des questions</p>
      ------
      ... (autant de questions/réponses que tu veux par chapitre : tu peux proposer jusqu'à 5-10 questions par chapitre, par exemple)
      <div>Conclusion :
        <textarea name="conclusion_cours" rows="" cols=""></textarea>
      </div>
      <br />
      <input type="submit" name="poster_cours_tp" value="Poster ce Cours/TP" />
      <br />
    </form>
    Voici son traitement PHP :
    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
    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
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
      <?php
    // Variable de session - DEBUT
    $id_utilisateur=$_SESSION['id_utilisateur'];
    // Variable de session - FIN
    // Traitement d'un formulaire tout simplement
    if(isset($_POST['poster_cours_tp'])){
    if ($_POST['matieres']==''||$_POST['classes']==''||$_POST['titre_cours_tp']==''||$_POST['auteur_cours']=='') {
    	echo "<span style='color:red;'>Erreur de saisie.</span>";
    }
    else {
    $matiere_choisie=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['matieres'])));
    $classe_choisie=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['classes'])));
    $date_publication_tp=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['date_publication_tp'])));
    $date_cloture_validation_cours_tp=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['date_cloture_validation_cours_tp'])));
    $titre_cours_tp=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['titre_cours_tp'])));
    $auteur_cours=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['auteur_cours'])));
    $introduction_cours=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['introduction_cours'])));
    $titre_premier_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['titre_premier_chapitre'])));
    $contenu_premier_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['contenu_premier_chapitre'])));
    $premiere_question_premier_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['premiere_question_premier_chapitre'])));
    $deuxieme_question_premier_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['deuxieme_question_premier_chapitre'])));
    $troisieme_question_premier_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['troisieme_question_premier_chapitre'])));
    $quatrieme_question_premier_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['quatrieme_question_premier_chapitre'])));
    $cinquieme_question_premier_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['cinquieme_question_premier_chapitre'])));
    $titre_deuxieme_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['titre_deuxieme_chapitre'])));
    $contenu_deuxieme_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['contenu_deuxieme_chapitre'])));
    $premiere_question_deuxieme_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['premiere_question_deuxieme_chapitre'])));
    $deuxieme_question_deuxieme_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['deuxieme_question_deuxieme_chapitre'])));
    $troisieme_question_deuxieme_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['troisieme_question_deuxieme_chapitre'])));
    $quatrieme_question_deuxieme_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['quatrieme_question_deuxieme_chapitre'])));
    $cinquieme_question_deuxieme_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['cinquieme_question_deuxieme_chapitre'])));
    $conclusion_cours=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['conclusion_cours'])));
     
     
        // Insertion du Cours/TP dans la base de données - Deuxième version simplifiée (sans AJAX ni JAVASCRIPT)
    	$query_insertion_cours_tp=mysql_query("INSERT INTO  test_site_cours_v2 (titre_cours,auteur_cours,introduction_cours,conclusion_cours,date_publication_cours,date_cloture_validation_cours,matiere_cours,classe_cours)
    VALUES ('$titre_cours_tp','$auteur_cours','$introduction_cours','$conclusion_cours',now(),'$date_cloture_validation_cours_tp','$matiere_choisie','$classe_choisie')")
    or die('Erreur lors de l\'insertion d\'un Cours/TP (titre du cours, auteurs du cours, introduction du cours, conclusion du cours, date de publication du cours, date de cloture de validation du cours)'.mysql_error()); // Envoie une requête à un serveur MySQL
    	// On sélectionne le cours pour mettre l'identifiant dans la table test_site_chapitres_v2
    	$query_selection_cours=mysql_query("SELECT id_cours
    FROM test_site_cours_v2
    WHERE titre_cours='$titre_cours_tp'")
    or die('Erreur lors de la sélection d\'un Cours/TP (requête pour enregistrer l\'identifiant du Cours/TP'.mysql_error()); // Envoie une requête à un serveur MySQL
        // Insertion des chapitres du Cours/TP dans la base de données - Deuxième version
    if ($_POST['titre_premier_chapitre']!==''||$_POST['contenu_premier_chapitre']!==''||$_POST['titre_deuxieme_chapitre']==''||$_POST['contenu_deuxieme_chapitre']=='') {
     
    	$query_insertion_premier_chapitre_cours_tp=mysql_query("INSERT INTO  test_site_chapitres_v2 (id_cours,titre_chapitre,contenu_chapitre)
    VALUES ('$query_selection_cours','$titre_premier_chapitre','$contenu_premier_chapitre')")
    or die('Erreur lors de l\'insertion du premier chapitre du Cours/TP'.mysql_error()); // Envoie une requête à un serveur MySQL
    }	
    else
    	$query_insertion_deuxieme_chapitre_cours_tp=mysql_query("INSERT INTO  test_site_chapitres_v2 (id_cours,titre_chapitre,contenu_chapitre)
    VALUES ('$query_selection_cours','$titre_deuxieme_chapitre','$contenu_deuxieme_chapitre')")
    or die('Erreur lors de l\'insertion du second chapitre du Cours/TP'.mysql_error()); // Envoie une requête à un serveur MySQL
    }	
    if ($_POST['titre_premier_chapitre']!==''||$_POST['contenu_premier_chapitre']!=='') {
    	if ($_POST['premiere_question_premier_chapitre']==''||$_POST['deuxieme_question_premier_chapitre']!==''||$_POST['troisieme_question_premier_chapitre']!==''||$_POST['quatrieme_question_premier_chapitre']!==''||$_POST['cinquieme_question_premier_chapitre']!=='') {
    		echo "Veuillez saisir la première question.";
    		exit();
    	// Insertion de la première question du premier chapitre du Cours/TP dans la base de données - Deuxième version
    	if ($_POST['premiere_question_premier_chapitre']!==''||$_POST['deuxieme_question_premier_chapitre']==''||$_POST['troisieme_question_premier_chapitre']==''||$_POST['quatrieme_question_premier_chapitre']==''||$_POST['cinquieme_question_premier_chapitre']=='') {	
    		$query_insertion_premiere_question_cours_tp=mysql_query("INSERT INTO test_site_questions_v2 (contenu_question) VALUES ('$premiere_question_premier_chapitre')") or die('Erreur lors de l\'insertion d\'un chapitre du Cours/TP'.mysql_error()); // Envoie une requête à un serveur MySQL, Récupération de l'identifiant du chapitre crée
    		exit();
    	}
    	// Insertion de la deuxième question du premier chapitre du Cours/TP dans la base de données - Deuxième version
    	if ($_POST['premiere_question_premier_chapitre']!==''||$_POST['deuxieme_question_premier_chapitre']!==''||$_POST['troisieme_question_premier_chapitre']==''||$_POST['quatrieme_question_premier_chapitre']==''||$_POST['cinquieme_question_premier_chapitre']=='') {
    		$query_insertion_premiere_question_premier_chapitre_cours_tp=mysql_query("INSERT INTO test_site_questions_v2 (contenu_question)
    VALUES ('$deuxieme_question_premier_chapitre')")
    or die('Erreur lors de l\'insertion de la première question du premier chapitre du Cours/TP'.mysql_error()); // Envoie une requête à un serveur MySQL
    		exit();
    	}
    	// Insertion de la troisieme question du premier chapitre du Cours/TP dans la base de données - Deuxième version
    	if ($_POST['premiere_question_premier_chapitre']!==''||$_POST['deuxieme_question_premier_chapitre']!==''||$_POST['troisieme_question_premier_chapitre']!==''||$_POST['quatrieme_question_premier_chapitre']==''||$_POST['cinquieme_question_premier_chapitre']=='') {
    		$query_insertion_troisieme_question_premier_chapitre_cours_tp=mysql_query("INSERT INTO test_site_questions_v2 (contenu_question)
    VALUES ('$troisieme_question_premier_chapitre')")
    or die('Erreur lors de l\'insertion de la troisième question du premier chapitre du Cours/TP'.mysql_error()); // Envoie une requête à un serveur MySQL
    		exit();
    	}
    	// Insertion de la quatrieme question du premier chapitre du Cours/TP dans la base de données - Deuxième version
    	if ($_POST['premiere_question_premier_chapitre']!==''||$_POST['deuxieme_question_premier_chapitre']!==''||$_POST['troisieme_question_premier_chapitre']!==''||$_POST['quatrieme_question_premier_chapitre']!==''||$_POST['cinquieme_question_premier_chapitre']=='') {
    		$query_insertion_quatrieme_question_premier_chapitre_cours_tp=mysql_query("INSERT INTO test_site_questions_v2 (contenu_question)
    VALUES ('$quatrieme_question_premier_chapitre')")
    or die('Erreur lors de l\'insertion de la quatrième question du premier chapitre du Cours/TP'.mysql_error()); // Envoie une requête à un serveur MySQL
    		exit();
    	}
    	// Insertion de la cinquième question du premier chapitre du Cours/TP dans la base de données - Deuxième version
    	if ($_POST['premiere_question_premier_chapitre']!==''||$_POST['deuxieme_question_premier_chapitre']!==''||$_POST['troisieme_question_premier_chapitre']!==''||$_POST['quatrieme_question_premier_chapitre']!==''||$_POST['cinquieme_question_premier_chapitre']!=='') {
    		$query_insertion_cinquieme_question_premier_chapitre_cours_tp=mysql_query("INSERT INTO test_site_questions_v2 (contenu_question)
    VALUES ('$cinquieme_question_premier_chapitre')")
    or die('Erreur lors de l\'insertion de la quatrième question du premier chapitre du Cours/TP'.mysql_error()); // Envoie une requête à un serveur MySQL
    		exit();
    	}
    	// Insertion de la première question du deuxième chapitre du Cours/TP dans la base de données - Deuxième version
    	if ($_POST['premiere_question_deuxieme_chapitre']!==''||$_POST['deuxieme_question_deuxieme_chapitre']==''||$_POST['troisieme_question_deuxieme_chapitre']==''||$_POST['quatrieme_question_deuxieme_chapitre']==''||$_POST['cinquieme_question_deuxieme_chapitre']=='') {
    		$query_insertion_premiere_question_deuxieme_chapitre_cours_tp=mysql_query("INSERT INTO test_site_questions_v2 (contenu_question) VALUES ('$premiere_question_deuxieme_chapitre')") or die('Erreur lors de l\'insertion de la première question du deuxième chapitre du Cours/TP'.mysql_error()); // Envoie une requête à un serveur MySQL
    		exit();
    	}
    	// Insertion de la deuxième question du deuxième chapitre du Cours/TP dans la base de données - Deuxième version
    	if ($_POST['premiere_question_deuxieme_chapitre']!==''||$_POST['deuxieme_question_deuxieme_chapitre']!==''||$_POST['troisieme_question_deuxieme_chapitre']==''||$_POST['quatrieme_question_deuxieme_chapitre']==''||$_POST['cinquieme_question_deuxieme_chapitre']=='') {
    		$query_insertion_deuxieme_question_deuxieme_chapitre_cours_tp=mysql_query("INSERT INTO test_site_questions_v2 (contenu_question)
    VALUES ('$deuxieme_question_deuxieme_chapitre')") or die('Erreur lors de l\'insertion de la deuxième question du deuxième chapitre du Cours/TP'.mysql_error()); // Envoie une requête à un serveur MySQL
    		exit();
    	}
    	// Insertion de la troisième question du deuxième chapitre du Cours/TP dans la base de données - Deuxième version
    	if ($_POST['premiere_question_deuxieme_chapitre']!==''||$_POST['deuxieme_question_deuxieme_chapitre']!==''||$_POST['troisieme_question_deuxieme_chapitre']!==''||$_POST['quatrieme_question_deuxieme_chapitre']==''||$_POST['cinquieme_question_deuxieme_chapitre']=='') {
    		$query_insertion_deuxieme_question_deuxieme_chapitre_cours_tp=mysql_query("INSERT INTO test_site_questions_v2 (contenu_question) VALUES ('$troisieme_question_deuxieme_chapitre')")
    or die('Erreur lors de l\'insertion de la troisième question du deuxième chapitre du Cours/TP'.mysql_error()); // Envoie une requête à un serveur MySQL
    		exit();
    	}
    	// Insertion de la quatrième question du deuxième chapitre du Cours/TP dans la base de données - Deuxième version
    	if ($_POST['premiere_question_deuxieme_chapitre']!==''||$_POST['deuxieme_question_deuxieme_chapitre']!==''||$_POST['troisieme_question_deuxieme_chapitre']!==''||$_POST['quatrieme_question_deuxieme_chapitre']!==''||$_POST['cinquieme_question_deuxieme_chapitre']=='') {
    		$query_insertion_quatrieme_question_deuxieme_chapitre_cours_tp=mysql_query("INSERT INTO test_site_questions_v2 (contenu_question)
    VALUES ('$quatrieme_question_deuxieme_chapitre')")
    or die('Erreur lors de l\'insertion de la quatrième question du deuxième chapitre du Cours/TP'.mysql_error()); // Envoie une requête à un serveur MySQL
    		exit();
    	}
    	// Insertion de la cinquième question du deuxième chapitre du Cours/TP dans la base de données - Deuxième version
    	if ($_POST['premiere_question_deuxieme_chapitre']!==''||$_POST['deuxieme_question_deuxieme_chapitre']!==''||$_POST['troisieme_question_deuxieme_chapitre']!==''||$_POST['quatrieme_question_deuxieme_chapitre']!==''||$_POST['cinquieme_question_deuxieme_chapitre']!=='') {
    		$query_insertion_quatrieme_question_deuxieme_chapitre_cours_tp=mysql_query("INSERT INTO test_site_questions_v2 (contenu_question)
    VALUES ('$cinquieme_question_deuxieme_chapitre')")
    or die('Erreur lors de l\'insertion de la cinquième question du deuxième chapitre du Cours/TP'.mysql_error()); // Envoie une requête à un serveur MySQL
    		exit();
    	}
    }
    // Insertion de la relation Cours-TP/Utilisateur dans la base de données
    $query_insertion_relation_cours_tp_utilisateur=mysql_query("INSERT INTO test_site_relation_cours_tp_utilisateur_v2 (id_cours_tp,id_utilisateur)
    SELECT id_cours,id_utilisateur
    FROM test_site_utilisateur,test_site_cours_v2
    WHERE id_utilisateur='$id_utilisateur'
    AND titre_cours='$titre_cours_tp'")
    or die('Erreur lors de l\'insertion de la relation Cours-TP/Utilisateur (pour assurer l\'affichage)'.mysql_error()); // Envoie une requête à un serveur MySQL
    }
    	echo "Votre Cours/TP a été posté.";
    }
    ?>

    Le problème que j'ai, c'est non pas que je ne le sais pas faire, mais je me perds dans le traitement PHP.

    Dans ce code, j'ai fait des tests pour vérifier si l'utilisateur a rempli les champs et suivant ce qu'il a saisi, j'effectue des requêtes SQL . Est-ce que je ne peux pas le gérer autrement (au jour d'aujourd'hui ça va mais quand tout fonctionnera, j'essaierai de faire des boutons : Ajouter/Supprimer des chapitres, Ajouter/Supprimer des questions), ça voudra dire qu'il faudra faire autant de requêtes SQL que de champs ?

    Sinon, actuellement le champs id_cours de la table test_site_chapitres_v2 ne s'enregistre pas. Je voudrais enregistrer l'identifiant du cours dans la table chapitres pour faire référence à l'identifiant du cours dans la table cours.
    De plus, la table test_site_questions_v2 ne se remplit pas.

    Est-ce que vous voyez comment résoudre le problème ?

  2. #2
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Vatican

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2004
    Messages : 144
    Points : 238
    Points
    238
    Par défaut
    Bonjour vinceom92,

    essai de voir ce programme de quizz tape TcExam dans google et télécharge le.

    c'est le principe dont je te parle

  3. #3
    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
    Le problème que j'ai, c'est non pas que je ne le sais pas faire, mais je me perds dans le traitement PHP.
    Avec un code pareil, je ne vois pas comment tu pourrais t'y retrouver.
    Il faut travailler avec des boucles, des fonctions, des tableaux.

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 278
    Points : 74
    Points
    74
    Par défaut
    Peux-tu me faire un exemple d'une boucle qui rendrait le code ci-dessus fonctionnel et plus court STP ?

  5. #5
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 206
    Points : 4 680
    Points
    4 680
    Par défaut
    Bonjour, c'est un petit peu partout...

    En php il faut être fainéant dans l'ame

    Tu dois penser : pas de répétition, dès que tu vas écrire presque 2 fois la même chose, tu dois penser automatiquement "boucle" ou fonction.


    -------------------------

    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
    $matiere_choisie=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['matieres'])));
    $classe_choisie=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['classes'])));
    $date_publication_tp=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['date_publication_tp'])));
    $date_cloture_validation_cours_tp=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['date_cloture_validation_cours_tp'])));
    $titre_cours_tp=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['titre_cours_tp'])));
    $auteur_cours=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['auteur_cours'])));
    $introduction_cours=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['introduction_cours'])));
    $titre_premier_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['titre_premier_chapitre'])));
    $contenu_premier_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['contenu_premier_chapitre'])));
    $premiere_question_premier_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['premiere_question_premier_chapitre'])));
    $deuxieme_question_premier_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['deuxieme_question_premier_chapitre'])));
    $troisieme_question_premier_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['troisieme_question_premier_chapitre'])));
    $quatrieme_question_premier_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['quatrieme_question_premier_chapitre'])));
    $cinquieme_question_premier_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['cinquieme_question_premier_chapitre'])));
    $titre_deuxieme_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['titre_deuxieme_chapitre'])));
    $contenu_deuxieme_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['contenu_deuxieme_chapitre'])));
    $premiere_question_deuxieme_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['premiere_question_deuxieme_chapitre'])));
    $deuxieme_question_deuxieme_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['deuxieme_question_deuxieme_chapitre'])));
    $troisieme_question_deuxieme_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['troisieme_question_deuxieme_chapitre'])));
    $quatrieme_question_deuxieme_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['quatrieme_question_deuxieme_chapitre'])));
    $cinquieme_question_deuxieme_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['cinquieme_question_deuxieme_chapitre'])));
    $conclusion_cours=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['conclusion_cours'])));
    ca ne pourrait pas être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $mesDatas = array(
        "deuxieme_question_deuxieme_chapitre"=>'',
        "troisieme_question_deuxieme_chapitre"=>'',
        "cinquieme_question_deuxieme_chapitre"=>''
    );
    foreach($mesdatas as $id=>$valeur){
       $mesDatas[$id] = trim($_POST[$id]);
    }
    ici, nous avons exactement la même stucture, mais c'est plus propre, plus lisible !
    MAIS

    c'est pas bon, il faut être fainéant ! il y a beaucoup trop de répétitions

    pourquoi ne pas penser a un tableau du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $questions[1][1]= "";  // chapitre 1
    $questions[1][5]= "";  // chapitre 1
    $questions[2][5]= "";  // chapitre 2
    et dans le formulaire, si tu désires afficher "premier", deuxieme", ... tu crées un tableau !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $labelsForm=array(
       "0"=> array("chapitre"=>"premier","question"=>"première"),
       "1"=> array("chapitre"=>"deuxième","question"=>"seconde"),
    );
     
    for ($i 0..4) echo  $labelsForm[ $i ]["question"] . "question <input name=question[$chapitre][$i]>"
    --------------------------------------------------------------

    pour l'insertion les if (je les compte plus) !!!!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ($_POST['premiere_question_premier_chapitre']!==''||$_POST['deuxieme_question_premier_chapitre']==''||$_POST['troisieme_question_premier_chapitre']==''||$_POST['quatrieme_question_premier_chapitre']==''||$_POST['cinquieme_question_premier_chapitre']=='') {	
    		$query_insertion_premiere_question_cours_tp=mysql_query("INSERT INTO test_site_questions_v2 (contenu_question) VALUES ('$premiere_question_premier_chapitre')") or die('Erreur lors de l\'insertion d\'un chapitre du Cours/TP'.mysql_error()); // Envoie une requête à un serveur MySQL, Récupération de l'identifiant du chapitre crée
    		exit();
    	}
    Il est plus simple de faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    foreach( $questions as $chapitre=>$question) {
      foreach( $question as $id=>$valeur) {
          if ($valeur)
               "INSERT INTO table VALUES ( $chapitre, $id, $valeur )";
      }
    }
    Bien sur faire le même type de bouche dans le formulaire !

    --------------------------------------------------
    ps : j'ai pas du tout essayé de comprendre ton code (si logique ou pas) : trop compliqué !

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 278
    Points : 74
    Points
    74
    Par défaut
    Merci de ta réponse.

    J'ai essayé ton code.
    Voici le formulaire :
    Code html : 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
    109
    <form action="" method="post">
      <b>Poster un Cours/TP</b> <br />
      <u>Matière :</u>
      <select name="matieres">
        <?php
    // Variables de session - DEBUT
    $query_recuperation_identifiant_connecte=$_SESSION['id_utilisateur'];
    // Variables de session - FIN
    $matiere = "SELECT matiereenseignee_utilisateur FROM test_site_utilisateur WHERE id_utilisateur='$query_recuperation_identifiant_connecte'"; 
    $result = mysql_query($matiere) or die("Erreur sur la requête SQL concernant la matière du professeur.");
    echo '<option value="">Choisissez votre matière.</option>';
    while ($row=mysql_fetch_array($result)) // mysql_fetch_array = Retourne une ligne de résultat MySQL sous la forme d'un tableau associatif, d'un tableau indexé, ou les deux
    { 
     echo '<option value="'.$row['0'].'">'.$row['0'].'</option>';
    }  
    ?>
      </select>
      <br />
      <u>Classe :</u>
      <select name="classes">
        <?php
              // A modifier
    $classes = "SELECT classe_utilisateur FROM test_site_utilisateur,  test_site_classe WHERE classe_utilisateur=classe_nom"; 
    $result = mysql_query($classes) or die("Erreur sur la requête SQL concernant les classes.");
    echo '<option value="">Choisissez une de vos classes.</option>';
    while ($row=mysql_fetch_array($result)) // mysql_fetch_array = Retourne une ligne de résultat MySQL sous la forme d'un tableau associatif, d'un tableau indexé, ou les deux
    { 
     echo '<option value="'.$row['0'].'">'.$row['0'].'</option>';
    } ?>
      </select>
      <br />
      <div><b>Rédigez votre cours</b></div>
      <p>Titre du cours :
        <input name="titre_cours_tp" type="text" />
      </p>
      <p>Auteur :
        <input name="auteur_cours" type="text" value="<?php if(isset($_SESSION['pseudo_utilisateur'])) {echo $_SESSION['pseudo_utilisateur'];}?>"/>
      <p>Date de publication
        <input type="text" name="date_publication_tp" size="200" value='<?php $jour = array("Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi");$mois = array("","Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre");$dateDuJour = $jour[date("w")]." ".date("d")." ".$mois[date("n")]." ".date("Y"); echo $dateDuJour;?>'/>
        <br />
        Date de clôture des validations de ce Cours/TP (Pas obligatoire)
        <input type="date" name="date_cloture_validation_cours_tp" />
        <br />
        Introduction :
        <textarea name="introduction_cours" rows="" cols=""></textarea>
      <div><b>Chapitre 1</b></div>
      <p>Titre du chapitre 1 :
        <input name="titre_premier_chapitre" type="text" />
      </p>
      <p>Contenu du chapitre 1 :
        <textarea name="contenu_premier_chapitre" rows="" cols=""></textarea>
      </p>
      <div>Questions/Réponses</div>
      <p>Question 1-1 :
        <input name="premiere_question_premier_chapitre" type="text" />
      </p>
      Réponse 1-1 : [input]
      <p>Question 1-2 :
        <input name="deuxieme_question_premier_chapitre" type="text" />
      </p>
      Réponse 1-2 : [input]
      <p>Question 1-3 :
        <input name="troisieme_question_premier_chapitre" type="text" />
      </p>
      Réponse 1-3 : [input]
      <p>Question 1-4 :
        <input name="quatrieme_question_premier_chapitre" type="text" />
      </p>
      Réponse 1-4 : [input]
      <p>Question 1-5 :
        <input name="cinquieme_question_premier_chapitre" type="text" />
      </p>
      Réponse 1-5 : [input]<br />
      ------------------------
      <div><b>Chapitre 2</b></div>
      <p>Titre du chapitre 2 :
        <input name="titre_deuxieme_chapitre" type="text" />
      <p>Contenu du chapitre 2 :
        <textarea name="contenu_deuxieme_chapitre" rows="" cols=""></textarea>
      <div>Questions/Réponses</div>
      <p>Question 2-1 :
        <input name="premiere_question_deuxieme_chapitre" type="text" />
      </p>
      Réponse 2-1 : [input]
      <p>Question 2-2 :
        <input name="deuxieme_question_deuxieme_chapitre" type="text" />
      </p>
      Réponse 2-2 : [input]
      <p>Question 2-3 :
        <input name="troisieme_question_deuxieme_chapitre" type="text" />
      </p>
      Réponse 2-3 : [input]
      <p>Question 2-4 :
        <input name="quatrieme_question_deuxieme_chapitre" type="text" />
      </p>
      Réponse 2-4 : [input]
      <p>Question 2-5 :
        <input name="cinquieme_question_deuxieme_chapitre" type="text" />
      </p>
      Réponse 2-5 : [input]
      <p>... (autant de chapitre que tu veux : tu peux proposer jusqu'à 5-10 chapitres, par exemple)<b>Amélioration à faire quand tout marchera : </b>ajouter/supprimer un chapitre (avec contenu + questions (pas obligatoire), ajouter/supprimer des questions</p>
      ------
      ... (autant de questions/réponses que tu veux par chapitre : tu peux proposer jusqu'à 5-10 questions par chapitre, par exemple)
      <div>Conclusion :
        <textarea name="conclusion_cours" rows="" cols=""></textarea>
      </div>
      <br />
      <input type="submit" name="poster_cours_tp" value="Poster ce Cours/TP" />
    </form>

    Voici le traitement PHP (je vous mets tout) :
    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
    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
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
     
    <?php
      $labelsForm=array(
       "0"=> array("chapitre"=>"premier","question"=>"première"),
       "1"=> array("chapitre"=>"deuxième","question"=>"seconde"),
    );
     
    for ($i, 0..4,$i++) {
    	echo  $labelsForm[ $i ]["question"] . "question <input name=question[$chapitre][$i]>";}
     ?>
    <?php
    // Variable de session - DEBUT
    $id_utilisateur=$_SESSION['id_utilisateur'];
    // Variable de session - FIN
    // Traitement d'un formulaire tout simplement
    if(isset($_POST['poster_cours_tp'])){
    if ($_POST['matieres']==''||$_POST['classes']==''||$_POST['titre_cours_tp']==''||$_POST['auteur_cours']=='') {
    	echo "<span style='color:red;'>Erreur de saisie.</span>";
    }
    else {
    /*$matiere_choisie=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['matieres'])));
    $classe_choisie=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['classes'])));
    $date_publication_tp=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['date_publication_tp'])));
    $date_cloture_validation_cours_tp=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['date_cloture_validation_cours_tp'])));
    $titre_cours_tp=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['titre_cours_tp'])));
    $auteur_cours=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['auteur_cours'])));
    $introduction_cours=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['introduction_cours'])));
    $titre_premier_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['titre_premier_chapitre'])));
    $contenu_premier_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['contenu_premier_chapitre'])));
    $premiere_question_premier_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['premiere_question_premier_chapitre'])));
    $deuxieme_question_premier_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['deuxieme_question_premier_chapitre'])));
    $troisieme_question_premier_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['troisieme_question_premier_chapitre'])));
    $quatrieme_question_premier_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['quatrieme_question_premier_chapitre'])));
    $cinquieme_question_premier_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['cinquieme_question_premier_chapitre'])));
    $titre_deuxieme_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['titre_deuxieme_chapitre'])));
    $contenu_deuxieme_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['contenu_deuxieme_chapitre'])));
    $premiere_question_deuxieme_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['premiere_question_deuxieme_chapitre'])));
    $deuxieme_question_deuxieme_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['deuxieme_question_deuxieme_chapitre'])));
    $troisieme_question_deuxieme_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['troisieme_question_deuxieme_chapitre'])));
    $quatrieme_question_deuxieme_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['quatrieme_question_deuxieme_chapitre'])));
    $cinquieme_question_deuxieme_chapitre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['cinquieme_question_deuxieme_chapitre'])));
    $conclusion_cours=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['conclusion_cours'])));
    */
     
    $mesDatas = array(
        "premiere_question_premier_chapitre"=>'',
    	"deuxieme_question_premier_chapitre"=>'',
        "troisieme_question_premier_chapitre"=>'',
        "quatrieme_question_premier_chapitre"=>'',
    	"cinquieme_question_premier_chapitre"=>'',
        "premiere_question_deuxieme_chapitre"=>'',
    	"deuxieme_question_deuxieme_chapitre"=>'',
        "troisieme_question_deuxieme_chapitre"=>'',
        "quatrieme_question_deuxieme_chapitre"=>'',
    	"cinquieme_question_deuxieme_chapitre"=>''
    );
    foreach($mesdatas as $id=>$valeur){
       $mesDatas[$id] = trim($_POST[$id]);
    }
     
    $questions[1][1]= "";  // chapitre 1
    $questions[1][5]= "";  // chapitre 1
    $questions[2][5]= "";  // chapitre 2
     
        // Insertion du Cours/TP dans la base de données - Deuxième version simplifiée (sans AJAX ni JAVASCRIPT)
    	$query_insertion_cours_tp=mysql_query("INSERT INTO  test_site_cours_v2 (titre_cours,auteur_cours,introduction_cours,conclusion_cours,date_publication_cours,date_cloture_validation_cours,matiere_cours,classe_cours)
    VALUES ('$titre_cours_tp','$auteur_cours','$introduction_cours','$conclusion_cours',now(),'$date_cloture_validation_cours_tp','$matiere_choisie','$classe_choisie')")
    or die('Erreur lors de l\'insertion d\'un Cours/TP (titre du cours, auteurs du cours, introduction du cours, conclusion du cours, date de publication du cours, date de cloture de validation du cours)'.mysql_error()); // Envoie une requête à un serveur MySQL
    	// On sélectionne le cours pour mettre l'identifiant dans la table test_site_chapitres_v2
    	$query_selection_cours=mysql_query("SELECT id_cours
    FROM test_site_cours_v2
    WHERE titre_cours='$titre_cours_tp'")
    or die('Erreur lors de la sélection d\'un Cours/TP'.mysql_error()); // Envoie une requête à un serveur MySQL
    	while($selection_cours= mysql_fetch_array($query_selection_cours)){ 
    		$selection_cours['id_cours'];;
    	}
        // Insertion des chapitres du Cours/TP dans la base de données - Deuxième version
    	// A FAIRE : ACTUELLEMENT LE CHAMPS ID_COURS DE LA TABLE TEST_SITE_CHAPITRES_V2 NE FONCTIONNE PAS (A VOIR J'AI RAJOUTE $QUERY_SELECTION_COURS) ET LA TABLE TEST_SITE_QUESTIONS_V2 NE SE REMPLIT PAS
    /*if ($_POST['titre_premier_chapitre']!==''||$_POST['contenu_premier_chapitre']!==''||$_POST['titre_deuxieme_chapitre']==''||$_POST['contenu_deuxieme_chapitre']=='') {
    	$query_insertion_premier_chapitre_cours_tp=mysql_query("INSERT INTO  test_site_chapitres_v2 (id_cours,titre_chapitre,contenu_chapitre)
    VALUES ('$query_selection_cours','$titre_premier_chapitre','$contenu_premier_chapitre')")
    or die('Erreur lors de l\'insertion du premier chapitre du Cours/TP'.mysql_error()); // Envoie une requête à un serveur MySQL
    }	
    else
    	$query_insertion_deuxieme_chapitre_cours_tp=mysql_query("INSERT INTO  test_site_chapitres_v2 (id_cours,titre_chapitre,contenu_chapitre)
    VALUES ('$query_selection_cours','$titre_deuxieme_chapitre','$contenu_deuxieme_chapitre')")
    or die('Erreur lors de l\'insertion du second chapitre du Cours/TP'.mysql_error()); // Envoie une requête à un serveur MySQL
    }	
    if ($_POST['titre_premier_chapitre']!==''||$_POST['contenu_premier_chapitre']!=='') {
    	if ($_POST['premiere_question_premier_chapitre']==''||$_POST['deuxieme_question_premier_chapitre']!==''||$_POST['troisieme_question_premier_chapitre']!==''||$_POST['quatrieme_question_premier_chapitre']!==''||$_POST['cinquieme_question_premier_chapitre']!=='') {
    		echo "Veuillez saisir la première question.";
    		exit();
    	// Insertion de la première question du premier chapitre du Cours/TP dans la base de données - Deuxième version
    	if ($_POST['premiere_question_premier_chapitre']!==''||$_POST['deuxieme_question_premier_chapitre']==''||$_POST['troisieme_question_premier_chapitre']==''||$_POST['quatrieme_question_premier_chapitre']==''||$_POST['cinquieme_question_premier_chapitre']=='') {	
    		$query_insertion_premiere_question_cours_tp=mysql_query("INSERT INTO test_site_questions_v2 (contenu_question)
    VALUES ('$premiere_question_premier_chapitre')")
    or die('Erreur lors de l\'insertion d\'un chapitre du Cours/TP'.mysql_error()); // Envoie une requête à un serveur MySQL, Récupération de l'identifiant du chapitre crée
    		exit();
    	}
    	// Insertion de la deuxième question du premier chapitre du Cours/TP dans la base de données - Deuxième version
    	if ($_POST['premiere_question_premier_chapitre']!==''||$_POST['deuxieme_question_premier_chapitre']!==''||$_POST['troisieme_question_premier_chapitre']==''||$_POST['quatrieme_question_premier_chapitre']==''||$_POST['cinquieme_question_premier_chapitre']=='') {
    		$query_insertion_premiere_question_premier_chapitre_cours_tp=mysql_query("INSERT INTO test_site_questions_v2 (contenu_question)
    VALUES ('$deuxieme_question_premier_chapitre')")
    or die('Erreur lors de l\'insertion de la première question du premier chapitre du Cours/TP'.mysql_error()); // Envoie une requête à un serveur MySQL
    		exit();
    	}
    	// Insertion de la troisieme question du premier chapitre du Cours/TP dans la base de données - Deuxième version
    	if ($_POST['premiere_question_premier_chapitre']!==''||$_POST['deuxieme_question_premier_chapitre']!==''||$_POST['troisieme_question_premier_chapitre']!==''||$_POST['quatrieme_question_premier_chapitre']==''||$_POST['cinquieme_question_premier_chapitre']=='') {
    		$query_insertion_troisieme_question_premier_chapitre_cours_tp=mysql_query("INSERT INTO test_site_questions_v2 (contenu_question)
    VALUES ('$troisieme_question_premier_chapitre')")
    or die('Erreur lors de l\'insertion de la troisième question du premier chapitre du Cours/TP'.mysql_error()); // Envoie une requête à un serveur MySQL
    		exit();
    	}
    	// Insertion de la quatrieme question du premier chapitre du Cours/TP dans la base de données - Deuxième version
    	if ($_POST['premiere_question_premier_chapitre']!==''||$_POST['deuxieme_question_premier_chapitre']!==''||$_POST['troisieme_question_premier_chapitre']!==''||$_POST['quatrieme_question_premier_chapitre']!==''||$_POST['cinquieme_question_premier_chapitre']=='') {
    		$query_insertion_quatrieme_question_premier_chapitre_cours_tp=mysql_query("INSERT INTO test_site_questions_v2 (contenu_question)
    VALUES ('$quatrieme_question_premier_chapitre')")
    or die('Erreur lors de l\'insertion de la quatrième question du premier chapitre du Cours/TP'.mysql_error()); // Envoie une requête à un serveur MySQL
    		exit();
    	}
    	// Insertion de la cinquième question du premier chapitre du Cours/TP dans la base de données - Deuxième version
    	if ($_POST['premiere_question_premier_chapitre']!==''||$_POST['deuxieme_question_premier_chapitre']!==''||$_POST['troisieme_question_premier_chapitre']!==''||$_POST['quatrieme_question_premier_chapitre']!==''||$_POST['cinquieme_question_premier_chapitre']!=='') {
    		$query_insertion_cinquieme_question_premier_chapitre_cours_tp=mysql_query("INSERT INTO test_site_questions_v2 (contenu_question)
    VALUES ('$cinquieme_question_premier_chapitre')")
    or die('Erreur lors de l\'insertion de la quatrième question du premier chapitre du Cours/TP'.mysql_error()); // Envoie une requête à un serveur MySQL
    		exit();
    	}
    	// Insertion de la première question du deuxième chapitre du Cours/TP dans la base de données - Deuxième version
    	if ($_POST['premiere_question_deuxieme_chapitre']!==''||$_POST['deuxieme_question_deuxieme_chapitre']==''||$_POST['troisieme_question_deuxieme_chapitre']==''||$_POST['quatrieme_question_deuxieme_chapitre']==''||$_POST['cinquieme_question_deuxieme_chapitre']=='') {
    		$query_insertion_premiere_question_deuxieme_chapitre_cours_tp=mysql_query("INSERT INTO test_site_questions_v2 (contenu_question)
    VALUES ('$premiere_question_deuxieme_chapitre')")
    or die('Erreur lors de l\'insertion de la première question du deuxième chapitre du Cours/TP'.mysql_error()); // Envoie une requête à un serveur MySQL
    		exit();
    	}
    	// Insertion de la deuxième question du deuxième chapitre du Cours/TP dans la base de données - Deuxième version
    	if ($_POST['premiere_question_deuxieme_chapitre']!==''||$_POST['deuxieme_question_deuxieme_chapitre']!==''||$_POST['troisieme_question_deuxieme_chapitre']==''||$_POST['quatrieme_question_deuxieme_chapitre']==''||$_POST['cinquieme_question_deuxieme_chapitre']=='') {
    		$query_insertion_deuxieme_question_deuxieme_chapitre_cours_tp=mysql_query("INSERT INTO test_site_questions_v2 (contenu_question)
    VALUES ('$deuxieme_question_deuxieme_chapitre')")
    or die('Erreur lors de l\'insertion de la deuxième question du deuxième chapitre du Cours/TP'.mysql_error()); // Envoie une requête à un serveur MySQL
    		exit();
    	}
    	// Insertion de la troisième question du deuxième chapitre du Cours/TP dans la base de données - Deuxième version
    	if ($_POST['premiere_question_deuxieme_chapitre']!==''||$_POST['deuxieme_question_deuxieme_chapitre']!==''||$_POST['troisieme_question_deuxieme_chapitre']!==''||$_POST['quatrieme_question_deuxieme_chapitre']==''||$_POST['cinquieme_question_deuxieme_chapitre']=='') {
    		$query_insertion_deuxieme_question_deuxieme_chapitre_cours_tp=mysql_query("INSERT INTO test_site_questions_v2 (contenu_question)
    VALUES ('$troisieme_question_deuxieme_chapitre')")
    or die('Erreur lors de l\'insertion de la troisième question du deuxième chapitre du Cours/TP'.mysql_error()); // Envoie une requête à un serveur MySQL
    		exit();
    	}
    	// Insertion de la quatrième question du deuxième chapitre du Cours/TP dans la base de données - Deuxième version
    	if ($_POST['premiere_question_deuxieme_chapitre']!==''||$_POST['deuxieme_question_deuxieme_chapitre']!==''||$_POST['troisieme_question_deuxieme_chapitre']!==''||$_POST['quatrieme_question_deuxieme_chapitre']!==''||$_POST['cinquieme_question_deuxieme_chapitre']=='') {
    		$query_insertion_quatrieme_question_deuxieme_chapitre_cours_tp=mysql_query("INSERT INTO test_site_questions_v2 (contenu_question)
    VALUES ('$quatrieme_question_deuxieme_chapitre')")
    or die('Erreur lors de l\'insertion de la quatrième question du deuxième chapitre du Cours/TP'.mysql_error()); // Envoie une requête à un serveur MySQL
    		exit();
    	}
    	// Insertion de la cinquième question du deuxième chapitre du Cours/TP dans la base de données - Deuxième version
    	if ($_POST['premiere_question_deuxieme_chapitre']!==''||$_POST['deuxieme_question_deuxieme_chapitre']!==''||$_POST['troisieme_question_deuxieme_chapitre']!==''||$_POST['quatrieme_question_deuxieme_chapitre']!==''||$_POST['cinquieme_question_deuxieme_chapitre']!=='') {
    		$query_insertion_quatrieme_question_deuxieme_chapitre_cours_tp=mysql_query("INSERT INTO test_site_questions_v2 (contenu_question)
    VALUES ('$cinquieme_question_deuxieme_chapitre')")
    or die('Erreur lors de l\'insertion de la cinquième question du deuxième chapitre du Cours/TP'.mysql_error()); // Envoie une requête à un serveur MySQL
    		exit();
    	}
    }
    // Insertion de la relation Cours-TP/Utilisateur dans la base de données
    $query_insertion_relation_cours_tp_utilisateur=mysql_query("INSERT INTO test_site_relation_cours_tp_utilisateur_v2 (id_cours_tp,id_utilisateur)
    SELECT id_cours,id_utilisateur
    FROM test_site_utilisateur,test_site_cours_v2
    WHERE id_utilisateur='$id_utilisateur'
    AND titre_cours='$titre_cours_tp'")
    or die('Erreur lors de l\'insertion de la relation Cours-TP/Utilisateur (pour assurer l\'affichage)'.mysql_error()); // Envoie une requête à un serveur MySQL
    }
    	echo "Votre Cours/TP a été posté.";
    }*/
    foreach( $questions as $chapitre=>$question) {
      foreach( $question as $id=>$valeur) {
          if ($valeur)
               "INSERT INTO table VALUES ( $chapitre, $id, $valeur )";
      }
    }
    ?>

    Comme vous pouvez le voir, j'ai mis en commentaire le bloc de protection des zones de textes et toutes les requêtes SQL ui permettent d'insérer les chapitres, les questions. Il y a une erreur sur cette boucle :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for ($i, 0..4,$i++) {
    	echo  $labelsForm[ $i ]["question"] . "question <input name=question[$chapitre][$i]>";
    	}

    Je sais qu'il y a plein d'erreurs, que c'est le "binz", c'est pour cela que je demande votre aide !

    PS : En fait, je comprends qu'il serait mieux de faire une boucle qui permettrait de réduire le code. Je vous mets une phrase qui, à mon avis, résume ce que doit faire la boucle :
    Pour chaque zone de texte où l'utilisateur a saisi quelque chose, il faut enregistrer le contenu dans des différentes tables SQL suivant ce que c'est :
    -si c'est les informations générales du cours, il faut enregistrer dans la table test_site_cours_v2,
    -si c'est le contenu d'un chapitre, il faut enregistrer dans la table test_site_chapitres_v2,
    -si ce sont des questions, il faut les enregistrer dans la table test_site_questions_v2
    .

    Est-ce que c'est ça ?

  7. #7
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 206
    Points : 4 680
    Points
    4 680
    Par défaut
    Citation Envoyé par vinceom92 Voir le message
    Peux-tu me faire un exemple d'une boucle

    Tu as demandé un exemple ! je t'ai bien dis que je n'avais même pas lut ton code : trop compliqué.
    Et toi tu recopies mon code sans une seule fois essayer de la comprendre !

    Si tu avais simplement lut, tu aurais vu que pas une fois mon code est fonctionnel, je t'ai juste donner du code (même pas php), pour que tu réfléchisses comment avoir un code clair, en aucun cas je n'ai analysé tes besoins et écrit du code fonctionnel pour corriger ton code.

    Tu demandes un exemple et sans comprendre, tu recopies tout dans un fichier au bonheur la chance

  8. #8
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 278
    Points : 74
    Points
    74
    Par défaut
    Citation Envoyé par vinceom92 Voir le message
    PS : En fait, je comprends qu'il serait mieux de faire une boucle qui permettrait de réduire le code. Je vous mets une phrase qui, à mon avis, résume ce que doit faire la boucle :
    Pour chaque zone de texte où l'utilisateur a saisi quelque chose, il faut enregistrer le contenu dans des différentes tables SQL suivant ce que c'est :
    -si c'est les informations générales du cours, il faut enregistrer dans la table test_site_cours_v2,
    -si c'est le contenu d'un chapitre, il faut enregistrer dans la table test_site_chapitres_v2,
    -si ce sont des questions, il faut les enregistrer dans la table test_site_questions_v2
    .

    Est-ce que c'est ça ?
    J'ai réfléchi...

    Si c'est ça, ça donnerait une boucle comme ça :
    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
    $i=1;
    for ($i,récupération des zones de texte non vides,$i++) { // $i = passage dans les zones de texte non vides
    if () { // Traitement des informations générales du cours dans la base de données
    Requête SQL qui servira à enregistrer les informations générales du cours :
    $query_insertion_cours_tp=mysql_query("
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    12
    INSERT INTO  test_site_cours_v2 (titre_cours,auteur_cours,introduction_cours,conclusion_cours,date_publication_cours,date_cloture_validation_cours,matiere_cours,classe_cours)
    VALUES ('$titre_cours_tp','$auteur_cours','$introduction_cours','$conclusion_cours',now(),'$date_cloture_validation_cours_tp','$matiere_choisie','$classe_choisie')
    ") or die('Erreur lors de l\'insertion d\'un Cours/TP (titre du cours, auteurs du cours, introduction du cours, conclusion du cours, date de publication du cours, date de cloture de validation du cours)'.mysql_error()); // Envoie une requête à un serveur MySQL } elseif () { // Traitement de l'ajout de chapitres dans la base de données Requête SQL qui sert à ajouter des chapitres en mettant l'identifiant du cours Faire une requête SQL qui permettrait d'enregistrer un/des chapitre(s) (c'est-à-dire là où l'utilisateur a écrit le titre et le contenu du chapitres) dans la table test_site_chapitres_v2 } elseif () { // Traitement de l'ajout des questions dans la base de données Faire une requête SQL qui permettrait d'enregistrer un/des question(s) (c'est-à-dire là où l'utilisateur a écrit le titre et le contenu d'une/des question(s)) dans la table test_site_questions_v2 } $i++; // Incrémentation du passage qui permet de faire une vérification sur les zones de textes remplies ou non }
    , non ?

    J'ai écrit cette boucle au fur et à mesure, je ne l'ai ni testée ni utilisée. C'est juste pour voir si dans l'idée c'est ça. Je n'ai pas fait les tests mais c'est pour tester si les zones de texte des informations générales du cours, chapitres, questions sont remplies (non vides).

    Qu'est-ce que vous en pensez ?

    PS : J'ai fait la boucle suivante :
    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
     
    for ($n=0;$n<=count($afaire);$n++) { // Il faut compter le nombre de zones de texte remplies
    	if ($_POST['titre_cours_tp']==''||$_POST['auteur_cours']==''||$_POST['date_publication_tp']==''||$_POST['introduction_cours']==''||$_POST['conclusion_cours']=='') { // Traitement des informations générales du cours dans la base de données
    		$query_insertion_cours_tp=mysql_query("INSERT INTO test_site_cours_v2 (titre_cours,auteur_cours,introduction_cours,conclusion_cours,date_publication_cours,date_cloture_validation_cours,matiere_cours,classe_cours)
    VALUES ('$titre_cours_tp','$auteur_cours','$introduction_cours','$conclusion_cours',now(),'$date_cloture_validation_cours_tp','$matiere_choisie','$classe_choisie')")
    or die('Erreur lors de l\'insertion d\'un Cours/TP (titre du cours, auteurs du cours, introduction du cours, conclusion du cours, date de publication du cours, date de cloture de validation du cours)'.mysql_error()); // Envoie une requête à un serveur MySQL
    	}
    	elseif ($_POST['titre_premier_chapitre']==''&&$_POST['contenu_premier_chapitre']==''||$_POST['premiere_question_premier_chapitre']==''||$_POST['deuxieme_question_premier_chapitre']==''||$_POST['troisieme_question_premier_chapitre']==''||$_POST['quatrieme_question_premier_chapitre']==''||$_POST['cinquieme_question_premier_chapitre']=='') { // Traitement de l'ajout de chapitres dans la base de données
    		$query_insertion_chapitres_cours_tp=mysql_query("INSERT INTO test_site_chapitres_v2 (id_cours,titre_chapitre,contenu_chapitre)
    VALUES ")
    or die('Erreur lors de l\'insertion d\'un chapitre d\'un Cours/TP (identifiant du bon cours, titre du chapitre, contenu du chapitre)'.mysql_error()); // Envoie une requête à un serveur MySQL
    	}
    	elseif ($_POST['premiere_question_premier_chapitre']==''&&$_POST['premiere_question_premier_chapitre']==''||$_POST['premiere_question_premier_chapitre']==''||$_POST['deuxieme_question_premier_chapitre']==''||$_POST['troisieme_question_premier_chapitre']==''||$_POST['quatrieme_question_premier_chapitre']==''||$_POST['cinquieme_question_premier_chapitre']==''||$_POST['premiere_question_deuxieme_chapitre']==''||$_POST['deuxieme_question_deuxieme_chapitre']==''||$_POST['troisieme_question_deuxieme_chapitre']==''||$_POST['quatrieme_question_deuxieme_chapitre']==''||$_POST['cinquieme_question_deuxieme_chapitre']=='') { // Traitement de l'ajout des questions dans la base de données - A mon avis, problème sur la gestion des questions
    		$query_insertion_questions_cours_tp=mysql_query("INSERT INTO test_site_questions_v2 (id_chapitre,contenu_question)
    VALUES ")
    or die('Erreur lors de l\'insertion d\'une question d\'un Cours/TP (identifiant du bon chapitre, contenu de la question)'.mysql_error()); // Envoie une requête à un serveur MySQL - A mon avis, il faut ajouter un champs "id_cours" pour savoir dans quel cours, les questions vont
    	}
    }

    Je ne l'ai pas testé et comme vous le voyez, je n'ai pas fini les requêtes . Pour information, j'ai mis en commentaire les tests .
    A mon avis, il va y avoir des problèmes sur :
    - comment récupérer le nombre de zones de texte remplies pour le mettre dans la condition de la boucle ?
    - la gestion des questions (test pour savoir si les zones de texte sont remplies + comment insérer toutes les questions écrites + ajout d'un champs "id_cours" pour savoir dans quel cours, les questions vont ?)
    - , non ?
    Qu'est-ce que vous en pensez ?

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 278
    Points : 74
    Points
    74
    Par défaut
    Bonjour,

    Je reviens vous dire que j'essaye de traiter un formulaire avec une boucle php .

    En une phrase (pour vous situer), j'ai un formulaire HTML qui permet aujourd'hui :
    -de choisir la matière (à partir d'une liste déroulante)
    -de choisir la classe (à partir d'une liste déroulante)
    -de rédiger le cours (c'est-à-dire l'introduction, l'auteur du cours, la date de publication du cours et la date de clôture de la validation de ce Cours/TP), pour les chapitres pour l'instant j'en ai fait deux avec le titre du chapitre, le contenu du chapitre et les questions (éventuelles) du chapitre. Quand le minimum fonctionnera, je ferai des boutons : "Ajouter/Supprimer un chapitre" et "Ajouter/Supprimer des questions".

    Voici le formulaire HTML :
    Code html : 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
     
    <form action="" method="post">
      <b>Poster un Cours/TP</b> <br />
      <u>Matière :</u>
      <select name="matieres">
        <?php
    // Variables de session - DEBUT
    $query_recuperation_identifiant_connecte=$_SESSION['id_utilisateur'];
    // Variables de session - FIN
    $matiere = "SELECT matiereenseignee_utilisateur
    FROM test_site_utilisateur WHERE id_utilisateur='$query_recuperation_identifiant_connecte'"; 
    $result = mysql_query($matiere)
    or die("Erreur sur la requête SQL concernant la matière du professeur.");
    echo '<option value="">Choisissez votre matière.</option>';
    while ($row=mysql_fetch_array($result)) // mysql_fetch_array = Retourne une ligne de résultat MySQL sous la forme d'un tableau associatif, d'un tableau indexé, ou les deux
    { 
     echo '<option value="'.$row['0'].'">'.$row['0'].'</option>';
    }  
    ?>
      </select>
      <br />
      <u>Classe :</u>
      <select name="classes">
        <?php
    $classes = "SELECT classe_utilisateur FROM test_site_utilisateur,  test_site_classe WHERE classe_utilisateur=classe_nom"; 
    $result = mysql_query($classes) or die("Erreur sur la requête SQL concernant les classes.");
    echo '<option value="">Choisissez une de vos classes.</option>';
    while ($row=mysql_fetch_array($result)) // mysql_fetch_array = Retourne une ligne de résultat MySQL sous la forme d'un tableau associatif, d'un tableau indexé, ou les deux
    { 
     echo '<option value="'.$row['0'].'">'.$row['0'].'</option>';
    } ?>
      </select>
      <br />
      <div><b>Rédigez votre cours</b></div>
      <p>Titre du cours :
        <input name="titre_cours_tp" type="text" />
      </p>
      <p>Auteur :
        <input name="auteur_cours" type="text" value="<?php if(isset($_SESSION['pseudo_utilisateur'])) {echo $_SESSION['pseudo_utilisateur'];}?>"/>
      <p>Date de publication
        <input type="text" name="date_publication_tp" size="200" value='<?php $jour = array("Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi");$mois = array("","Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre");$dateDuJour = $jour[date("w")]." ".date("d")." ".$mois[date("n")]." ".date("Y"); echo $dateDuJour;?>'/>
        <br />
        Date de clôture des validations de ce Cours/TP (Pas obligatoire)
        <input type="date" name="date_cloture_validation_cours_tp" />
        <br />
        Introduction :
        <textarea name="introduction_cours" rows="" cols=""></textarea>
      <div><b>Chapitre 1</b></div>
      <p>Titre du chapitre 1 :
        <input name="titre_premier_chapitre" type="text" />
      </p>
      <p>Contenu du chapitre 1 :
        <textarea name="contenu_premier_chapitre" rows="" cols=""></textarea>
      </p>
      <div>Questions/Réponses</div>
      <p>Question 1-1 :
        <input name="premiere_question_premier_chapitre" type="text" />
      </p>
      Réponse 1-1 : [input]
      <p>Question 1-2 :
        <input name="deuxieme_question_premier_chapitre" type="text" />
      </p>
      Réponse 1-2 : [input]
      <p>Question 1-3 :
        <input name="troisieme_question_premier_chapitre" type="text" />
      </p>
      Réponse 1-3 : [input]
      <p>Question 1-4 :
        <input name="quatrieme_question_premier_chapitre" type="text" />
      </p>
      Réponse 1-4 : [input]
      <p>Question 1-5 :
        <input name="cinquieme_question_premier_chapitre" type="text" />
      </p>
      Réponse 1-5 : [input]<br />
      ------------------------
      <div><b>Chapitre 2</b></div>
      <p>Titre du chapitre 2 :
        <input name="titre_deuxieme_chapitre" type="text" />
      <p>Contenu du chapitre 2 :
        <textarea name="contenu_deuxieme_chapitre" rows="" cols=""></textarea>
      <div>Questions/Réponses</div>
      <p>Question 2-1 :
        <input name="premiere_question_deuxieme_chapitre" type="text" />
      </p>
      Réponse 2-1 : [input]
      <p>Question 2-2 :
        <input name="deuxieme_question_deuxieme_chapitre" type="text" />
      </p>
      Réponse 2-2 : [input]
      <p>Question 2-3 :
        <input name="troisieme_question_deuxieme_chapitre" type="text" />
      </p>
      Réponse 2-3 : [input]
      <p>Question 2-4 :
        <input name="quatrieme_question_deuxieme_chapitre" type="text" />
      </p>
      Réponse 2-4 : [input]
      <p>Question 2-5 :
        <input name="cinquieme_question_deuxieme_chapitre" type="text" />
      </p>
      Réponse 2-5 : [input]
      <div>Conclusion :
        <textarea name="conclusion_cours" rows="" cols=""></textarea>
      </div>
      <br />
      <input type="submit" name="poster_cours_tp" value="Poster ce Cours/TP" />
    </form>

    Je passe maintenant au traitement PHP de ce formulaire.
    Au début, j'avais fait pleins de tests . Après vous l'avoir montrez, vous m'avez dit qu'il faut être fainéant en PHP et donc il fallait pas le faire avec des tests mais avec une boucle.
    J'ai donc mis en commentaire tous les tests et j'ai essayé de faire une boucle .
    Voici le traitement PHP du formulaire (sans les tests ) :
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    <?php
    // Variable de session - DEBUT
    $id_utilisateur=$_SESSION['id_utilisateur'];
    // Variable de session - FIN
    // Traitement d'un formulaire tout simplement
    if(isset($_POST['poster_cours_tp'])){
    if ($_POST['matieres']==''||$_POST['classes']==''||$_POST['titre_cours_tp']==''||$_POST['auteur_cours']=='') {
    	echo "<span style='color:red;'>Erreur de saisie.</span>";
    }
    else {
    // A cet endroit, j'ai supprimé le bloc qui permet de protéger les zones de texte avec mysql_real_escape_string, htmlspecialchars, stripcslashes.
     
     
        // Insertion du Cours/TP dans la base de données - Deuxième version simplifiée (sans AJAX ni JAVASCRIPT)
    	$query_insertion_cours_tp=mysql_query("
    INSERT INTO  test_site_cours_v2 (titre_cours,auteur_cours,introduction_cours,conclusion_cours,date_publication_cours,date_cloture_validation_cours,matiere_cours,classe_cours)
    VALUES ('$titre_cours_tp','$auteur_cours','$introduction_cours','$conclusion_cours',now(),'$date_cloture_validation_cours_tp','$matiere_choisie','$classe_choisie')")
    or die('Erreur lors de l\'insertion d\'un Cours/TP (titre du cours, auteurs du cours, introduction du cours, conclusion du cours, date de publication du cours, date de cloture de validation du cours)'.mysql_error()); // Envoie une requête à un serveur MySQL
    	// On sélectionne le cours pour mettre l'identifiant dans la table test_site_chapitres_v2
    	$query_selection_cours=mysql_query("
    SELECT id_cours
    FROM test_site_cours_v2
    WHERE titre_cours='$titre_cours_tp'")
    or die('Erreur lors de la sélection d\'un Cours/TP'.mysql_error()); // Envoie une requête à un serveur MySQL
    	while($selection_cours= mysql_fetch_array($query_selection_cours)){ 
    		$selection_cours['id_cours'];
     
    // A cet endroit, il y avait les tests if, je les ai supprimé
     
    for ($n=0;$n<=count($afaire);$n++) { // Il faut compter le nombre de zones de texte remplies
    	if ($_POST['titre_cours_tp']==''||$_POST['auteur_cours']==''||$_POST['date_publication_tp']==''||$_POST['introduction_cours']==''||$_POST['conclusion_cours']=='') { // Traitement des informations générales du cours dans la base de données
    		$query_insertion_cours_tp=mysql_query("
    INSERT INTO test_site_cours_v2 (titre_cours,auteur_cours,introduction_cours,conclusion_cours,date_publication_cours,date_cloture_validation_cours,matiere_cours,classe_cours)
    VALUES ('$titre_cours_tp','$auteur_cours','$introduction_cours','$conclusion_cours',now(),'$date_cloture_validation_cours_tp','$matiere_choisie','$classe_choisie')")
    or die('Erreur lors de l\'insertion d\'un Cours/TP (titre du cours, auteurs du cours, introduction du cours, conclusion du cours, date de publication du cours, date de cloture de validation du cours)'.mysql_error()); // Envoie une requête à un serveur MySQL
    	}
    	elseif ($_POST['titre_premier_chapitre']==''&&$_POST['contenu_premier_chapitre']==''||$_POST['premiere_question_premier_chapitre']==''||$_POST['deuxieme_question_premier_chapitre']==''||$_POST['troisieme_question_premier_chapitre']==''||$_POST['quatrieme_question_premier_chapitre']==''||$_POST['cinquieme_question_premier_chapitre']=='') { // Traitement de l'ajout de chapitres dans la base de données
    		$query_insertion_chapitres_cours_tp=mysql_query("
    INSERT INTO test_site_chapitres_v2 (id_cours,titre_chapitre,contenu_chapitre)
    VALUES ")
    or die('Erreur lors de l\'insertion d\'un chapitre d\'un Cours/TP (identifiant du bon cours, titre du chapitre, contenu du chapitre)'.mysql_error()); // Envoie une requête à un serveur MySQL
    	}
    	elseif ($_POST['premiere_question_premier_chapitre']==''&&$_POST['premiere_question_premier_chapitre']==''||$_POST['premiere_question_premier_chapitre']==''||$_POST['deuxieme_question_premier_chapitre']==''||$_POST['troisieme_question_premier_chapitre']==''||$_POST['quatrieme_question_premier_chapitre']==''||$_POST['cinquieme_question_premier_chapitre']==''||$_POST['premiere_question_deuxieme_chapitre']==''||$_POST['deuxieme_question_deuxieme_chapitre']==''||$_POST['troisieme_question_deuxieme_chapitre']==''||$_POST['quatrieme_question_deuxieme_chapitre']==''||$_POST['cinquieme_question_deuxieme_chapitre']=='') { // Traitement de l'ajout des questions dans la base de données - A mon avis, problème sur la gestion des questions
    		$query_insertion_questions_cours_tp=mysql_query("
    INSERT INTO test_site_questions_v2 (id_chapitre,contenu_question)
    VALUES ")
    or die('Erreur lors de l\'insertion d\'une question d\'un Cours/TP (identifiant du bon chapitre, contenu de la question)'.mysql_error()); // Envoie une requête à un serveur MySQL - A mon avis, il faut ajouter un champs "id_cours" pour savoir dans quel cours, les questions vont
    	}
    }
    }
    }
    }
    ?>

    Comme vous le voyez :
    * les requêtes SQL ne sont pas terminées,
    * la boucle traduirait cette phrase : Tant qu'il y a des zones de texte qui ne sont pas vides (où l'utilisateur a écrit quelque chose), tu fais des tests :
    - si les zones de textes où il y a les informations générales du Cours/TP ne sont pas vides, insérer les informations générales du Cours/TP,
    - sinon si les zones de texte où il y a les informations qui concernent les chapitres ne sont pas vides, insérer les informations du chapitre (titre, contenu, questions éventuelles),
    - sinon si les zones de texte où il y a les informations qui concernent les questions éventuelles ne sont pas vides, insérer les informations des questions (identifiant du chapitre et le contenu de la question).


    Premièrement, est-ce que vous êtes d'accord sur le raisonnement de la boucle ?
    Deuxièmement, si oui comment vous la ferez ?

  10. #10
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 278
    Points : 74
    Points
    74
    Par défaut
    Bonjour,

    Il y aurait-il quelqu'un qui pourrait m'aider à faire cette boucle SVP ? C'est une boucle qui permettrait d'insérer dans la base de données :
    - les informations générales du cours (titre, auteur, date de publication, l'introduction, la conclusion et l'auteur du cours, etc...),
    - les informations des chapitres (titre, contenu, questions éventuelles du chapitre, identifiant du bon cours),
    - les informations des questions (identifiant du chapitre, contenu de la question) : A mon avis, il faut rajouter l'identifiant du bon cours, non ?

  11. #11
    Membre averti

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 122
    Points : 327
    Points
    327
    Par défaut
    Ton code est vraiment difficile à lire!!!!!!

    quelques ptits conseils:
    - tu doit avoir le notion de fonction, par exemple au lieu de refaire "mysql_real_escape_string(htmlspecialchars(stripcslashes(...)));" à chaque fois, construit une fonction comme celui là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function getFormatedVar($var){
    	return mysql_real_escape_string(htmlspecialchars(stripcslashes($var)));
    }
    - quand on dit nom de variable parlant, ce n'est pas obligatoirement des noms de variables tout textuelle;
    Exemple, au lieu de "$premiere_question_deuxieme_chapitre" on peut remplacer par "$question_2_1" avec patron "$question_i_j" i indiquant le chapitre et j indiquant le numero de question! Onpeu aussi utiliser des matrices à deux dimension: "$question[i][j]"!

  12. #12
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 278
    Points : 74
    Points
    74
    Par défaut
    J'avoue que là, je fais un code lourd alors que ce que je voudrais c'est tout simple c'est-à-dire enregistrer dans la base de données les zones de textes non vides (là où l'utilisateur a marqué quelque chose) dans trois tables différentes.

    - Si ce sont les informations générales du cours, enregistrer les données dans la table test_site_cours_v2,
    - si ce sont les informations d'un chapitre, enregistrer les données dans la table test_site_chapitres_v2,
    - si ce sont les questions du cours, enregistrer les données dans la table test_site_questions_v2.

    Comment faire ça ? J'imagine qu'il faut faire une boucle avec des tests if dedans mais je n'arrive pas à la faire cette boucle...

    De plus, si c'est possible j'aimerais protéger toutes les zones de texte en plus court... Le mieux, ce serait d'avoir des boutons "Ajouter/Supprimer un chapitre", "Ajouter/Supprimer des questions" mais ça, ça sera dans un second temps...

  13. #13
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    tant que tu n'auras pas compris comment synthétiser tes variables, tu n'avanceras pas.
    papajoker a fait une proposition intéressante :
    Citation Envoyé par papajoker Voir le message
    En php il faut être fainéant dans l'ame

    pourquoi ne pas penser a un tableau du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $questions[1][1]= "";  // chapitre 1
    $questions[1][5]= "";  // chapitre 1
    $questions[2][5]= "";  // chapitre 2
    Un chapitre doit être conçu pour être clonable.
    Le plus simple est donc une incrémentation d'indice :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $num_chapitre = 1; // le numéro de chapitre
    // Les titre, contenu... pour chaque chapitre :
    $titre_chapitre[$num_chapitre] = '';
    $contenu_chapitre[$num_chapitre] = '';
    // Les questions (1 à 5 questions)
    for($num_question=1; $num_question<6; $num_question++){
       $question_chapitre[$num_chapitre][$num_question] = '';
    }
    Il suffit alors d'incrémenter $num_chapitre pour le chapitre suivant :
    Donc, on va mettre ça à la poubelle :
    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
      <p>Titre du chapitre 1 :
        <input name="titre_premier_chapitre" type="text" />
      </p>
      <p>Contenu du chapitre 1 :
        <textarea name="contenu_premier_chapitre" rows="" cols=""></textarea>
      </p>
      <div>Questions/Réponses</div>
      <p>Question 1-1 :
        <input name="premiere_question_premier_chapitre" type="text" />
      </p>
      Réponse 1-1 : [input]
      <p>Question 1-2 :
        <input name="deuxieme_question_premier_chapitre" type="text" />
      </p>
      Réponse 1-2 : [input]
      <p>Question 1-3 :
        <input name="troisieme_question_premier_chapitre" type="text" />
      </p>
      Réponse 1-3 : [input]
      <p>Question 1-4 :
        <input name="quatrieme_question_premier_chapitre" type="text" />
      </p>
      Réponse 1-4 : [input]
      <p>Question 1-5 :
        <input name="cinquieme_question_premier_chapitre" type="text" />
      </p>
      Réponse 1-5 : [input]<br />
    Et le remplacer par :
    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 
    // on boucle (par exemple) pour 4 CHAPITRES 
    for($num_chapitre=1; $num_chapitre<5; $num_chapitre++) 
    { 
    	// DEBUT MODULE
    ?>
      <p>Titre du chapitre <?php echo $num_chapitre; ?> :
        <input name="titre_chapitre[<?php echo $num_chapitre; ?>]" type="text" />
      </p>
      <p>Contenu du chapitre <?php echo $num_chapitre; ?> :
        <textarea name="contenu_chapitre[<?php echo $num_chapitre; ?>]" rows="" cols=""></textarea>
      </p>
      <div>Questions/Réponses</div>
    <?php 
    	// on boucle (par exemple) pour 5 QUESTIONS 
    	for($num_question=1; $num_question<6; $num_question++) 
    	{ 
    ?>
      <p>Question <?php echo $num_chapitre.'-'.$num_question; ?> :
        <input name="question_chapitre[<?php echo $num_chapitre; ?>][<?php echo $num_question; ?>]" type="text" />
      </p>
      <p>Réponse <?php echo $num_chapitre.'-'.$num_question; ?> :
        <input name="reponse_chapitre[<?php echo $num_chapitre; ?>][<?php echo $num_question; ?>]" type="text" />
      </p>
    <?php 
    	} // fin boucle question 
    	// FIN MODULE
    } // fin boucle chapitre 
    ?>
    Là, tu as un module prêt à être cloné.
    N.B. La 1ère boucle clone le module pour obtenir 4 chapitres.
    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
    <?php // RECUPERATION / TRAITEMENT
    // On récupère des array
    $titre_chapitre_array = (!empty($_POST['titre_chapitre']))? $_POST['titre_chapitre'] : NULL;
    $contenu_chapitre_array = (!empty($_POST['contenu_chapitre']))? $_POST['contenu_chapitre'] : NULL;
    $question_chapitre_array = (!empty($_POST['question_chapitre']))? $_POST['question_chapitre'] : NULL;
    $reponse_chapitre_array = (!empty($_POST['reponse_chapitre']))? $_POST['reponse_chapitre'] : NULL;
    // ---------------
    foreach($titre_chapitre_array as $num_chapitre => $titre_chapitre)
    {
    	// $num_chapitre
    	$titre_chapitre = (!empty($titre_chapitre_array[$num_chapitre]))? $titre_chapitre_array[$num_chapitre] : '';
    	$contenu_chapitre = (!empty($contenu_chapitre_array[$num_chapitre]))? $contenu_chapitre_array[$num_chapitre] : '';
    	// => on enregistre en BDD
    	// Questions / Réponses
    	if(!empty($question_chapitre_array[$num_chapitre])){
    		foreach($question_chapitre_array[$num_chapitre] as $num_question => $question_chapitre)
    		{
    			// $num_question
    			$question_chapitre = (!empty($question_chapitre_array[$num_chapitre][$num_question]))? $question_chapitre_array[$num_chapitre][$num_question] : '';
    			$reponse_chapitre = (!empty($reponse_chapitre_array[$num_chapitre][$num_question]))? $reponse_chapitre_array[$num_chapitre][$num_question] : '';
    			// => on enregistre en BDD
    		}
    	}
    }
    Dernière modification par Invité ; 24/10/2013 à 14h17.

  14. #14
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 278
    Points : 74
    Points
    74
    Par défaut
    Bonjour,

    Je reviens dans le but de faire le clonage.

    Voici le code (l'intégralité dans le body) :
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    <?php 
    // on boucle (par exemple) pour 4 CHAPITRES 
    for($num_chapitre=1; $num_chapitre<5; $num_chapitre++) 
    { 
    	// DEBUT MODULE
    ?>
      <p>Titre du chapitre <?php echo $num_chapitre; ?> :
        <input name="titre_chapitre[<?php echo $num_chapitre; ?>]" type="text" />
      </p>
      <p>Contenu du chapitre <?php echo $num_chapitre; ?> :
        <textarea name="contenu_chapitre[<?php echo $num_chapitre; ?>]" rows="" cols=""></textarea>
      </p>
      <div>Questions/Réponses</div>
    <?php 
    	// on boucle (par exemple) pour 5 QUESTIONS 
    	for($num_question=1; $num_question<6; $num_question++) 
    	{ 
    ?>
      <p>Question <?php echo $num_chapitre.'-'.$num_question; ?> :
        <input name="question_chapitre[<?php echo $num_chapitre; ?>][<?php echo $num_question; ?>]" type="text" />
      </p>
      <p>Réponse <?php echo $num_chapitre.'-'.$num_question; ?> :
        <input name="reponse_chapitre[<?php echo $num_chapitre; ?>][<?php echo $num_question; ?>]" type="text" />
      </p>
    <?php 
    	} // fin boucle question 
    	// FIN MODULE
    } // fin boucle chapitre 
     // RECUPERATION / TRAITEMENT
    // On récupère des array
    $titre_chapitre_array = (!empty($_POST['titre_chapitre']))? $_POST['titre_chapitre'] : NULL;
    $contenu_chapitre_array = (!empty($_POST['contenu_chapitre']))? $_POST['contenu_chapitre'] : NULL;
    $question_chapitre_array = (!empty($_POST['question_chapitre']))? $_POST['question_chapitre'] : NULL;
    $reponse_chapitre_array = (!empty($_POST['reponse_chapitre']))? $_POST['reponse_chapitre'] : NULL;
    // ---------------
    foreach($titre_chapitre_array as $num_chapitre => $titre_chapitre){
    	// $num_chapitre
    	$titre_chapitre = (!empty(titre_chapitre_array[$num_chapitre]))? $titre_chapitre_array[$num_chapitre] : '';
    	$contenu_chapitre = (!empty(contenu_chapitre_array[$num_chapitre]))? $contenu_chapitre_array[$num_chapitre] : '';
    	// => on enregistre en BDD
    	// Questions / Réponses
    	if(!empty($question_chapitre_array[$num_chapitre])){
    		foreach($question_chapitre_array[$num_chapitre] as $num_question => $question_chapitre)
    		{
    			// $num_question
    			$question_chapitre = (!empty($question_chapitre_array[$num_chapitre][$num_question]))? $question_chapitre_array[$num_chapitre][$num_question] : '';
    			$reponse_chapitre = (!empty($reponse_chapitre_array[$num_chapitre][$num_question]))? $reponse_chapitre_array[$num_chapitre][$num_question] : '';
    			// => on enregistre en BDD
    		}
    	}
    }
    ?>

    Voici le message d'erreur :
    Parse error: syntax error, unexpected '[', expecting T_PAAMAYIM_NEKUDOTAYIM in (...) on line 56
    .

    Voici les deux lignes correspondantes :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $titre_chapitre = (!empty(titre_chapitre_array[$num_chapitre]))? $titre_chapitre_array[$num_chapitre] : '';
    	$contenu_chapitre = (!empty(contenu_chapitre_array[$num_chapitre]))? $contenu_chapitre_array[$num_chapitre] : '';

    J'ai réglé ce problème en remplaçant les deux lignes par :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $titre_chapitre = (!empty($titre_chapitre_array[$num_chapitre]))? $titre_chapitre_array[$num_chapitre] : '';
    	$contenu_chapitre = (!empty($contenu_chapitre_array[$num_chapitre]))? $contenu_chapitre_array[$num_chapitre] : '';

    Maintenant, tout s'affiche malgré cet avertissement :
    Warning: Invalid argument supplied for foreach() in (...) on line 54
    .

    Je vous tiens au courant comme je l'ai fais là.

  15. #15
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 206
    Points : 4 680
    Points
    4 680
    Par défaut
    $titre_chapitre = (!empty($titre_chapitre_array[$num_chapitre]))? $titre_chapitre_array[$num_chapitre] : '';
    $contenu_chapitre = (!empty($contenu_chapitre_array[$num_chapitre]))? $contenu_chapitre_array[$num_chapitre] : '';

    ---------------
    grave de demander de l'aide pour ça

  16. #16
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 278
    Points : 74
    Points
    74
    Par défaut
    Je viens d'éditer le message.

  17. #17
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 206
    Points : 4 680
    Points
    4 680
    Par défaut
    J'ai peur de comprendre

    tu as une erreur, alors tu post ici ...
    puis si tu as du temps, tu cherches à la résoudre developpez.net est un bon debugger

  18. #18
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 278
    Points : 74
    Points
    74
    Par défaut
    Non, je le fait en même temps.

    Là, je cherche pourquoi cet avertissement s'affiche :
    Warning: Invalid argument supplied for foreach() in (...) on line 54
    .

  19. #19
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 206
    Points : 4 680
    Points
    4 680
    Par défaut
    Citation Envoyé par vinceom92 Voir le message
    Non, je le fait en même temps.
    tres bon choix de debug

    Citation Envoyé par vinceom92 Voir le message
    Là, je cherche pourquoi cet avertissement s'affiche : Invalid argument supplied for foreach()
    $titre_chapitre_array = (!empty($_POST['titre_chapitre']))? $_POST['titre_chapitre'] : NULL;donc vu l'erreur $titre_chapitre_array doit être null !

  20. #20
    Invité
    Invité(e)
    Par défaut
    Je me trompe, ou on fait tout le travail à ta place ?

    Si tu fais du copier-coller sans lire ni comprendre, tu n'iras pas bien loin.

    J'ai envie de te dire :
    "expecting T_PAAMAYIM_NEKUDOTAYIM !"
    Et je pèse mes mots...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/04/2015, 09h13
  2. [MySQL] Le fichier de traitement.php de formulaire ne remonte rien
    Par Jean-Michel G dans le forum PHP & Base de données
    Réponses: 76
    Dernier message: 13/03/2015, 18h01
  3. Récupérer $POST de formulaire créer par JAVASCRIPT pour traitement PHP
    Par rodblochon dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 17/03/2010, 06h14
  4. Traitement php d'un formulaire dynamique !
    Par Argol dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 05/03/2009, 16h10
  5. traitement en php d'un formulaire de contact
    Par dedel53 dans le forum Langage
    Réponses: 2
    Dernier message: 07/02/2007, 10h52

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