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 :

Requêtes UPDATE dans boucles foreach avec array [MySQL]


Sujet :

PHP & Base de données

  1. #61
    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
    Celle là je peux la supprimer (table relationnelle) ? Je l'avais fait pour faire la relation entre les tables cours, utilisateur, chapitre, question, reponse : ce n'est pas la peine de faire ça ?

    Donc si je t'écoute, j'aurai ces 4 tables :

    cours (je ne peux rien supprimer)
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    CREATE TABLE IF NOT EXISTS `cours` (
      `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,
      `date_debut_validation_cours` datetime NOT NULL,
      `date_maj_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=1 ;

    chapitres (je ne peux rien supprimer)
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE IF NOT EXISTS `chapitres` (
      `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,
      `date_depot` datetime NOT NULL,
      `date_maj_chapitre` datetime NOT NULL,
      `auteur_chapitre` varchar(255) CHARACTER SET utf8 NOT NULL,
      PRIMARY KEY (`id_chapitre`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

    questions (à la limite je peux supprimer l'identifiant du cours car il est retrouvable par l'identifiant du chapitre)
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE IF NOT EXISTS `questions` (
      `id_question` int(11) NOT NULL AUTO_INCREMENT,
      `id_chapitre` int(11) NOT NULL,
      `contenu_question` longtext CHARACTER SET utf8 NOT NULL,
      `reponse_question` longtext CHARACTER SET utf8 NOT NULL,
      `date_depot` datetime NOT NULL,
      `date_maj_question` datetime NOT NULL,
      `auteur_question` varchar(255) CHARACTER SET utf8 NOT NULL,
      PRIMARY KEY (`id_question`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

    reponses (à la limite je peux supprimer l'identifiant du cours car il est retrouvable par l'identifiant du chapitre)
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE IF NOT EXISTS `reponses` (
      `id_reponse` int(11) NOT NULL AUTO_INCREMENT,
      `id_chapitre` int(11) NOT NULL,
      `id_question` int(11) NOT NULL,
      `texte_reponse` longtext CHARACTER SET utf8 NOT NULL,
      `date_maj_reponse` datetime NOT NULL,
      `date_depot` datetime NOT NULL,
      `auteur_reponse` varchar(255) CHARACTER SET utf8 NOT NULL,
      PRIMARY KEY (`id_reponse`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

    Est-ce que tu es d'accord ?
    Juste un truc, j'espère qu'après ces modifications tout marchera sinon...

  2. #62
    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
    Puisque reponses est lié à questions, il n'a pas a contenir id_chapitre.

    Longtext c'est 4go de caractères ... c'est peut être un peu exageré non ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #63
    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
    Ok je ferai ce chantier demain.

    Pour les tables SQL, c'est OK !

    Pour les pages PHP à modifier (pour qu'on soit bien d'accord) sont :
    - la page qui permet de poster des cours
    - la page de gestion des cours (la fameuse page où l'utilisateur doit choisir un cours à modifier)
    - la page dans laquelle chaque partie du cours est affiché dans une zone de texte pour pouvoir faire les requêtes UPDATE- la page qui permet de lister les cours d'une classe
    - la page qui permet de visionner un cours (donc les bons chapitres, les bonnes questions, les bonnes réponses, les bonnes informations générales)

    Est-ce que j'ai rien oublié ?

  4. #64
    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'ai modifié toutes les pages, avant de se coller sur le problème d'affichage, j'aimerais simplifier le code de la page qui permet de poster des cours (ci-dessous).

    Voici les CREATE 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
    13
    14
    CREATE TABLE IF NOT EXISTS `cours` (
      `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,
      `date_debut_validation_cours` datetime NOT NULL,
      `date_maj_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=1 ;

    chapitres :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE IF NOT EXISTS `chapitres` (
      `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,
      `date_depot` datetime NOT NULL,
      `date_maj_chapitre` datetime NOT NULL,
      `auteur_chapitre` varchar(255) CHARACTER SET utf8 NOT NULL,
      PRIMARY KEY (`id_chapitre`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;

    questions :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE IF NOT EXISTS `questions` (
      `id_question` int(11) NOT NULL AUTO_INCREMENT,
      `id_chapitre` int(11) NOT NULL,
      `contenu_question` longtext CHARACTER SET utf8 NOT NULL,
      `reponse_question` longtext CHARACTER SET utf8 NOT NULL,
      `date_depot` datetime NOT NULL,
      `date_maj_question` datetime NOT NULL,
      `auteur_question` varchar(255) CHARACTER SET utf8 NOT NULL,
      PRIMARY KEY (`id_question`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=41 ;

    reponses :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TABLE IF NOT EXISTS `reponses` (
      `id_reponse` int(11) NOT NULL AUTO_INCREMENT,
      `id_question` int(11) NOT NULL,
      `texte_reponse` longtext CHARACTER SET utf8 NOT NULL,
      `date_maj_reponse` datetime NOT NULL,
      `date_depot` datetime NOT NULL,
      `auteur_reponse` varchar(255) CHARACTER SET utf8 NOT NULL,
      PRIMARY KEY (`id_reponse`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=41 ;

    Normalement, tout est bon jusque-là. Es-tu d'accord ?

    Je vais te mettre le contenu et le traitement qui permet de poster des cours. Il n'est pas à jour mais je pense qu'on peut le rendre plus simple et mieux.

    Voici la page (avec les zones de texte) :
    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
    <form method="post">
    Poster un Cours/TP</b> <br />
      <u>Matière :</u>
      <select name="matieres">
        <?php
    // Variables de session - DEBUT
    $id_utilisateur=$_SESSION['id_utilisateur'];
    // Variables de session - FIN
    $matiere = "SELECT matiereenseignee_utilisateur FROM test_site_utilisateur WHERE id_utilisateur='$id_utilisateur'"; 
    $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 AND pseudo_utilisateur='$pseudo_utilisateur'"; 
    $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 début de ce Cours/TP (Pas obligatoire)
        <input type="date" name="date_debut_validation_cours_tp" />
        <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>
    <?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 
    ?>
    <div>Conclusion :
        <textarea name="conclusion_cours" rows="" cols=""></textarea>
      </div>
      <br />
      <input type="submit" name="poster_cours_tp" value="Poster ce Cours/TP" />
    Voici le 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
    <?php 
    // RECUPERATION / TRAITEMENT
    $matiere_choisie=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['matieres'])));
    $classe_choisie=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['classes'])));
    $titre_cours_tp=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['titre_cours_tp'])));
    $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'])));
    $date_debut_validation_cours_tp=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['date_debut_validation_cours_tp'])));
    $auteur_cours=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['auteur_cours'])));
    $introduction_cours=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['introduction_cours'])));
    $conclusion_cours=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['conclusion_cours'])));
     
    // 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;
     
    if (is_array($titre_chapitre_array)) {
    	if(isset($_POST['poster_cours_tp'])) {		
    	// => on enregistre en BDD si les zones de texte sont remplies - informations générales du Cours/TP
    		//if ($_POST['titre_cours_tp']==''||$_POST['auteur_cours']==''||$_POST['date_cloture_validation_cours_tp']==''||$_POST['date_publication_tp']==''||$_POST['introduction_cours']==''||$_POST['conclusion_cours']=='') {
    			//echo "Veuillez saisir les informations générales du Cours/TP.";
    			//exit();
    		//}
    		//else
    			$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,date_debut_validation_cours,matiere_cours,classe_cours) VALUES ('$titre_cours_tp','$auteur_cours','$introduction_cours','$conclusion_cours',now(),'$date_cloture_validation_cours_tp','$date_debut_validation_cours_tp','$matiere_choisie','$classe_choisie')") or die('Erreur lors de l\'insertion d\'un Cours/TP (titre du cours, auteur 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
    			$_SESSION['id_cours']=mysql_insert_id(); // On met sous session l'identifiant généré par la dernière requête (identifiant du Cours/TP)
    			// On récupère l'identifiant du cours pour le mettre dans les requêtes SQL d'insertion
    			$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 de l\'identifiant du Cours/TP'.mysql_error()); // Envoie une requête à un serveur MySQL
    			// On récupère l'identifiant du chapitre pour le mettre dans les requêtes SQL d'insertion
    			$query_selection_chapitre=mysql_query("SELECT id_chapitre FROM  test_site_chapitres_v2 WHERE auteur_chapitre='$auteur_cours'") or die('Erreur lors de la sélection d\'un Cours/TP'.mysql_error()); // Envoie une requête à un serveur MySQL
    			// Boucles pour récupérer les identifiants du Cours/TP et des Chapitres - DEBUT
    			while($recuperation_identifiant_cours = mysql_fetch_assoc($query_selection_cours)) {
    				$recuperation_identifiant_cours['id_cours'];
    				$_SESSION['id_cours']=$recuperation_identifiant_cours['id_cours'];
    			}
    			while($recuperation_identifiant_chapitre = mysql_fetch_assoc($query_selection_chapitre)) {
    				$recuperation_identifiant_chapitre['id_chapitre'];
    				$_SESSION['id_chapitre']=$recuperation_identifiant_chapitre['id_chapitre'];
    			}
    			// Boucles pour récupérer les identifiants du Cours/TP et des Chapitres - FIN
    			// => on enregistre en BDD si les zones de texte sont remplies
    			if(empty($titre_chapitre_array)&&empty($contenu_chapitre_array)&&empty($question_chapitre_array)&&empty($reponse_chapitre_array)) {
    				echo "Veuillez saisir au moins un chapitre et au moins une question sans oublier sa réponse.";
    				exit();
    			}
    			else
    				// Le samedi 22 février 2014 j'ai repris tout le code à partir de là
    				// Boucle permettant d'insérer dans la base de données les chapitres - DEBUT
    				foreach($titre_chapitre_array as $num_chapitre => $titre_chapitre) {
    						// A améliorer : Ces deux variables récupèrent que le premier titre et le premier contenu du chapitre, les autres non, c'est pour cele que j'ai ajouté le bloc qui permet de supprimer les enregistrements des tables "test_site_chapitres_v2", "test_site_questions_v2" et "test_site_reponses_v2" qui sont vides
    						$titre_chapitre = mysql_real_escape_string(htmlspecialchars(stripcslashes(!empty($titre_chapitre_array[$num_chapitre]))? $titre_chapitre_array[$num_chapitre] : ''));
    						$contenu_chapitre = mysql_real_escape_string(htmlspecialchars(stripcslashes(!empty($contenu_chapitre_array[$num_chapitre]))? $contenu_chapitre_array[$num_chapitre] : ''));
    						// Insertion des chapitres dans la base de données
    						$query_insertion_chapitre=mysql_query("INSERT INTO test_site_chapitres_v2 (id_cours,titre_chapitre,contenu_chapitre,date_depot,auteur_chapitre) VALUES (".$_SESSION['id_cours'].",'$titre_chapitre','$contenu_chapitre',now(),'$auteur_cours')") or die('Erreur lors de l\'insertion d\'un chapitre d\'un Cours/TP (identifiant du cours, titre du chapitre, contenu du chapitre, date de dépot du chapitre)'.mysql_error()); // Envoie une requête à un serveur MySQL
     
    				$_SESSION['id_chapitre']=mysql_insert_id(); // On met sous session l'identifiant généré par la dernière requête (identifiant du chapitre)
    				// Boucle permettant d'insérer dans la base de données les questions/réponses - DEBUT
    				foreach($question_chapitre_array[$num_chapitre] as $num_question => $question_chapitre) {
    					$question_chapitre = mysql_real_escape_string(htmlspecialchars(stripcslashes(!empty($question_chapitre_array[$num_chapitre][$num_question]))? $question_chapitre_array[$num_chapitre][$num_question] : ''));
    					$reponse_chapitre = mysql_real_escape_string(htmlspecialchars(stripcslashes(!empty($reponse_chapitre_array[$num_chapitre][$num_question]))? $reponse_chapitre_array[$num_chapitre][$num_question] : ''));
    					// Insertion des questions/réponses dans la base de données
    					$query_insertion_questions=mysql_query("INSERT INTO test_site_questions_v2 (id_cours,id_chapitre,contenu_question,date_depot,auteur_question) VALUES (".$_SESSION['id_cours'].",".$_SESSION['id_chapitre'].",'$question_chapitre',now(),'$auteur_cours')") or die('Erreur lors de l\'insertion d\'une question d\'un chapitre d\'un Cours/TP (identifiant du chapitre, contenu de la question, date de dépot de la question)'.mysql_error()); // Envoie une requête à un serveur MySQL
    					$_SESSION['id_question']=mysql_insert_id(); // On met sous session l'identifiant généré par la dernière requête (identifiant de la question)
    					$query_insertion_reponses=mysql_query("INSERT INTO test_site_reponses_v2 (id_cours,id_chapitre,id_question,texte_reponse,date_depot) VALUES (".$_SESSION['id_cours'].",".$_SESSION['id_chapitre'].",".$_SESSION['id_question'].",'$reponse_chapitre',now())") or die('Erreur lors de l\'insertion d\'une réponse à une question d\'un Cours/TP (identifiants du cours/du chapitre/de la réponse, contenu de la réponse, date de dépot de la réponse'.mysql_error()); // Envoie une requête à un serveur MySQL
    					$_SESSION['id_reponse']=mysql_insert_id(); // On met sous session l'identifiant généré par la dernière requête (identifiant de la reponse)
    				// Boucle permettant d'insérer dans la base de données les questions/réponses - FIN
     
    				// Bloc qui permet de supprimer les enregistrements dans lesquels titre_chapitre, contenu_chapitre, auteur_chapitre, contenu_question, id_question,texte_reponse et auteur_reponse sont vides - DEBUT (en attendant de comprendre comment insérer que des enregistrements non vides)
    				$query_suppression_titres_contenus_vides_chapitres=mysql_query("DELETE FROM test_site_chapitres_v2 WHERE titre_chapitre='' AND contenu_chapitre='' AND auteur_chapitre='$pseudo_utilisateur'") or die('Erreur lors de la suppression (en attente d\'une amélioration) des champs vides (titre_chapitre,contenu_chapitre, auteur_chapitre) pour assurer qu\'il n\'y a pas d\'enregistrement vide.'.mysql_error()); // Envoie une requête à un serveur MySQL
    				$query_suppression_contenus_vides_questions=mysql_query("DELETE FROM test_site_questions_v2 WHERE contenu_question='' AND reponse_question='' AND auteur_question='$pseudo_utilisateur'") or die('Erreur lors de la suppression (en attente d\'une amélioration) des champs vides (contenu_question,reponse_question) pour assurer qu\'il n\'y a pas d\'enregistrement vide.'.mysql_error()); // Envoie une requête à un serveur MySQL
    				$query_suppression_contenus_vides_reponses=mysql_query("DELETE FROM test_site_reponses_v2 WHERE id_question='' AND texte_reponse=''") or die('Erreur lors de la suppression (en attente d\'une amélioration) des champs vides (id_question,texte_reponse) pour assurer qu\'il n\' a pas d\'enregistrement vide.'.mysql_error()); // Envoie une requête à un serveur MySQL
    				// Bloc qui permet de supprimer les enregistrements dans lesquels titre_chapitre, contenu_chapitre, contenu_question, auteur_chapitre id_question,texte_reponse et auteur_reponse sont vides - FIN (en attendant de comprendre comment insérer que des enregistrements non vides)
    				}
     
    // Insertion de la relation Cours-TP/Utilisateurs/Chapitres/Questions 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,id_utilisateur,id_chapitre,id_question,id_reponse,date_depot_rel_cours_user) SELECT t1.id_cours,'$id_utilisateur',t3.id_chapitre,t4.id_question,t5.id_reponse,now() FROM test_site_cours_v2 t1,test_site_utilisateur t2,test_site_chapitres_v2 t3,test_site_questions_v2 t4,test_site_reponses_v2 t5 WHERE t1.id_cours= ".$_SESSION['id_cours']." AND t3.id_chapitre=".$_SESSION['id_chapitre']." AND pseudo_utilisateur='$auteur_cours' AND titre_cours='$titre_cours_tp' AND t1.date_publication_cours=now()") or die('Erreur lors de l\'insertion de la relation Cours-TP/Utilisateur avec Chapitres+Questions+Réponses (pour assurer l\'affichage)'.mysql_error()); // Envoie une requête à un serveur MySQL
    			}
    		}
    	echo "Votre Cours/TP a été posté.";
    	}
    ?>

    Bien entendu, ce code ne respecte pas les nouvelles table et la suppression de la table relationnelle. Je pense qu'il est trop long, qu'on peux faire plus simple et plus court. Par exemple, on pourrait supprimer les requêtes SQL de suppression.

    Peux tu me proposer un formulaire et son traitement PHP qui permet d'écrire un cours, de l'insérer dans les différentes tables suivant ce que c'est :
    -les informations générales dans la table cours,
    -les informations des chapitres (titres et contenus) dans la table chapitres,
    -les informations des questions (le contenu) dans la table questions,
    -les informations des réponses (le contenu) dans la table reponses
    STP ?

    Mon code fonctionne (avant les modifications des tables SQL) mais il est trop complexe, j'aimerais profiter de la restructuration des tables SQL pour le simplifier.

    NB de 21 heures : j'ai essayé d'actualiser ce code mais surtout de le rendre plus simple en utilisant des boucles foreach, voici le traitement :
    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
     
    $query_insertion_cours_tp=mysql_query("
    INSERT INTO cours (titre_cours,auteur_cours,introduction_cours,conclusion_cours,date_publication_cours,date_cloture_validation_cours,date_debut_validation_cours,matiere_cours,classe_cours) 
    VALUES ('$titre_cours_tp','$auteur_cours','$introduction_cours','$conclusion_cours',now(),'$date_cloture_validation_cours_tp','$date_debut_validation_cours_tp','$matiere_choisie','$classe_choisie')")
    or die('Erreur lors de l\'insertion d\'un Cours/TP (titre du cours, auteur 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
    $_SESSION['id_cours']=mysql_insert_id(); // On met sous session l'identifiant généré par la dernière requête (identifiant du Cours/TP)
    // On récupère l'identifiant du cours pour le mettre dans les requêtes SQL d'insertion
    $query_selection_cours=mysql_query("
    SELECT id_cours
    FROM cours
    WHERE titre_cours='$titre_cours_tp'")
    or die('Erreur lors de la sélection de l\'identifiant du Cours/TP'.mysql_error()); // Envoie une requête à un serveur MySQL
    // On récupère l'identifiant du chapitre pour le mettre dans les requêtes SQL d'insertion
    $query_selection_chapitre=mysql_query("
    SELECT id_chapitre
    FROM chapitres
    WHERE auteur_chapitre='$auteur_cours'")
    or die('Erreur lors de la sélection d\'un Cours/TP'.mysql_error()); // Envoie une requête à un serveur MySQL
    // Boucles pour récupérer les identifiants du Cours/TP et des Chapitres - DEBUT
    while($recuperation_identifiant_cours = mysql_fetch_assoc($query_selection_cours)) {
    	$recuperation_identifiant_cours['id_cours'];
    	$_SESSION['id_cours']=$recuperation_identifiant_cours['id_cours'];
    }
    while($recuperation_identifiant_chapitre = mysql_fetch_assoc($query_selection_chapitre)) {
    	$recuperation_identifiant_chapitre['id_chapitre'];
    	$_SESSION['id_chapitre']=$recuperation_identifiant_chapitre['id_chapitre'];
    }
     
    // Boucles pour insérer le titre et le contenu des chapitres - DEBUT
    foreach ($_POST['titre_chapitre'] as $id_chapitre => $titre_chapitre) {
    	foreach ($_POST['contenu_chapitre'] as $id_chapitre => $contenu_chapitre) {
    		$sql_chapitre="
                    INSERT INTO chapitres (id_cours,titre_chapitre,contenu_chapitre,date_depot,auteur_chapitre)
                    VALUES (".$_SESSION['id_cours'].",'$titre_chapitre','$contenu_chapitre',now(),'$auteur_cours')";
    		mysql_query($sql_chapitre)
                    or die('Erreur sur la requête SQL qui insère les chapitres du Cours/TP (titre et contenu).'.mysql_error()); // Envoie une requête à un serveur MySQL
    		}
    	}
    // Boucles pour insérer le titre et le contenu des chapitres - FIN
    // Boucle pour insérer les questions - DEBUT
    foreach ($_POST['contenu_question'] as $id_question => $contenu_question) {
    	$sql_question="
            INSERT INTO questions (id_chapitre,contenu_question,date_depot,auteur_question)
            VALUES (".$_SESSION['id_chapitre'].",'$contenu_question',now(),'$auteur_cours')";
    	mysql_query($sql_question)
            or die('Erreur sur la requête SQL qui insère les questions du Cours/TP.'.mysql_error()); // Envoie une requête à un serveur MySQL
    	}
    	// Boucle pour insérer les questions - FIN
     
    	// Boucle pour insérer les réponses  DEBUT
    	foreach ($_POST['contenu_reponse'] as $id_reponse => $contenu_reponse) {
    		$sql_reponse="
                    INSERT INTO reponses (id_question,texte_reponse,date_depot)
                    VALUES (".$_SESSION['id_question'].",'$contenu_reponse',now())";
    		mysql_query($sql_reponse)
                    or die('Erreur sur la requête SQL qui insère les réponses du Cours/TP.'.mysql_error()); // Envoie une requête à un serveur MySQL
    	}
    	// Boucle pour insérer les réponses - FIN

    Voici mon raisonnement : Etant donné que pour les chapitres, il y a deux données à insérer (titre et contenu), j'ai fait deux boucles foreach imbriquées : une pour les titres des chapitres et l'autre pour les contenus des chapitres. J'ai fait deux autres boucles foreach pour les questions et pour les réponses.

    Seulement, ce traitement insère les bonnes données dans la table cours. La table chapitres se remplit (16 enregistrements avec le bon id_cours alors que j'ai essayé avec qu'un seul chapitre). En ce qui concerne les tables questions et réponses, aucune donnée s'insère. Voici l'erreur obtenue : Erreur sur la requête SQL qui met à jour les questions du Cours/TP.You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''Array',now(),'nom auteur')' at line 1.

    A noter : J'ai fait deux boucles foreach imbriquées car je ne sais pas si c'est possible de mettre plusieurs choses sur cette ligne foreach ($_POST['contenu_chapitre'] as $id_chapitre => $titre_chapitre) {. Dans les boucles imbriquées foreach, j'utilise deux fois $id_chapitre, est-ce que ça peut poser problème ? Un chapitre possède au minimum un titre, en ce qui concerne son contenu il se peut qu'il soit vide.

    Peux-tu me dire si j'ai raison de vouloir simplifier le traitement PHP posté ci-dessus STP ?

    Pourquoi ces boucles foreach ne fonctionnent pas ?

    Faut-il pas ajouter dans le formulaire l'identifiant du chapitre, l'identifiant de la question et l'identifiant de la réponse dans des <input type="hidden" name="id_chapitre" value="" /> ? Mais, sachant que c'est pour des insertions, à mon avis ce n'est pas possible puisqu'au chargement de la page, on ne sait pas quels sont les identifiants des informations générales, des chapitres (titres+contenus), des questions (contenus) et des réponses (contenus) insérés dans la base de données. Propose moi un formulaire et son traitement PHP en intégralité (j'ai proposé quelque chose... ) STP...

  5. #65
    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
    Pour revenir au problème initial (à savoir la requête SQL qui ne sélectionne pas toutes les modifications), il n'est toujours pas résolu malgré les changements effectués dans la structure des tables de la base de données...

    Peux-tu me donner la requête SQL qui permet de sélectionner tout ce qui concerne un cours (informations générales, chapitres, questions, réponses) que ce soit sans ou avec des modifications en tenant compte des nouvelles tables (cours, chapitres, questions, réponses) STP ?

  6. #66
    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
    que ce soit sans ou avec des modifications
    Une base de données ne sait pas faire un filtre qui enleverait les données modifiées. Ce point n'a donc aucun sens.
    Une requête renverra toujours tous les enregistrements correspondant à la requête, il n'y a pas de filtres invisibles.

    Commence par écrire une requête qui fournit le cours.
    Ajoute ensuite la jointure sur chapitres et contrôle.
    Ajoute ensuite la jointure sur questions et contrôle.
    Ajoute ensuite la jointure sur reponses et contrôle.

    S'il manque des lignes à une étape c'est que ta requête est mal écrite ; maintenant que tu n'as plus de relations multiples entre les tables, il n'y a plus de confusion.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #67
    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
    C'est bon, ça marche à condition que l'utilisateur poste les réponses attendues aux questions correspondantes (s'il laisse la zone de texte vide, ça ne fonctionne pas mais bon c'est logique !) !!!

    Juste une dernière question : Comment faire pour pouvoir modifier les titres des chapitres ?

    Voici la fameuse requête SQL :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $selection_cours=mysql_query("
    SELECT reponses.id_reponse,chapitres.id_chapitre, questions.id_question,titre_chapitre, contenu_question, contenu_chapitre, reponses.texte_reponse
    FROM reponses, chapitres
    LEFT JOIN questions ON chapitres.id_chapitre = questions.id_chapitre
    AND chapitres.id_cours='$id_cours_tp' WHERE chapitres.id_cours='$id_cours_tp'
    AND reponses.id_question=questions.id_question
    ORDER BY id_chapitre ASC")
    or die('Erreur lors de la sélection de l\'identifiant du chapitre du titre, du contenu des chapitres, des questions et leurs réponses respectives d\'un cours'.mysql_error()); // Envoie une requête à un serveur MySQL
    Voici le formulaire :
    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
    // Même boucle que sur la page d'affichage - DEBUT
    while ($row = mysql_fetch_assoc($selection_cours)) {
    	// Affichage du titre du chapitre
    	if ($row['id_chapitre'] != $id_chapitre) {
    		echo '<br />Titre du chapitre n° <input type="text" name="titre_chapitre[' . $row['id_chapitre'] . ']" value="'.html_entity_decode(stripslashes($row['titre_chapitre'])).'" /> <br />';
    		echo 'Contenu du chapitre n° <textarea name="contenu_chapitre[' . $row['id_chapitre'] . ']" rows=10 cols=40>'.html_entity_decode(stripslashes($row['contenu_chapitre'])).'</textarea><br />';
    		$id_chapitre = $row['id_chapitre'];
    	}
    	// Affichage des questions et leurs réponses respectives du chapitre, s'il y en a
    	if ($row['contenu_question']) {
    		echo '<br />Question : <input type="text" name="contenu_question[' . $row['id_question'] . ']" value="'.html_entity_decode(stripslashes($row['contenu_question'])).'"/> <br />';
    		echo '<br />Réponse : <input type="text" name="contenu_reponse[' . $row['id_reponse'] . ']" value="'.html_entity_decode(stripslashes($row['texte_reponse'])).'"/> <br />';
    		$id_question = $row['id_question'];
    		$id_reponse = $row['id_reponse'];
    	}
    }
    // Même boucle que sur la page d'affichage - FIN

    Voici le traitement PHP du formulaire :
    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
    <?php 
    // Modification des informations générales (introduction, conclusion, date de mise à jour) du cours
    $sql_cours_tp='
    UPDATE cours
    SET introduction_cours="'.$introduction_cours.'", conclusion_cours="'.$conclusion_cours.'",date_maj_cours=now()
    WHERE id_cours="'.$_SESSION['id_cours'].'"
    AND titre_cours="'.$_SESSION['titre_cours'].'"
    AND auteur_cours="'.$pseudo_utilisateur.'"';
    mysql_query($sql_cours_tp)
    or die('Erreur sur la requête SQL qui met à jour les informations générales du cours.'.mysql_error()); // Envoie une requête à un serveur MySQL
    // Boucle pour modifier les contenus des chapitres - A voir pour modifier les titres des chapitres
    foreach ($_POST['contenu_chapitre'] as $id_chapitre => $contenu_chapitre) {
    	$sql_chapitre="
    	UPDATE chapitres
    	SET contenu_chapitre='".mysql_real_escape_string($contenu_chapitre)."',date_maj_chapitre=now()
    	WHERE id_chapitre='".$id_chapitre."'
    	AND id_cours='".$_SESSION['id_cours']."'";
    	mysql_query($sql_chapitre)
    	or die('Erreur sur la requête SQL qui met à jour les chapitres du cours (titre et contenu).'.mysql_error()); // Envoie une requête à un serveur MySQL
    }
    // Boucle pour modifier les questions
    foreach ($_POST['contenu_question'] as $id_question => $contenu_question) {
    	$sql_question="
    	UPDATE questions
    	SET contenu_question='".mysql_real_escape_string($contenu_question)."', date_maj_question=now()
    	WHERE id_chapitre='".$id_chapitre."'
    	AND id_question='".$id_question."'";
    	mysql_query($sql_question)
    	or die('Erreur sur la requête SQL qui met à jour les questions du cours.'.mysql_error()); // Envoie une requête à un serveur MySQL
    }
    // Boucle pour modifier les réponses
    foreach ($_POST['contenu_reponse'] as $id_reponse => $contenu_reponse) {
    	$sql_reponse='UPDATE reponses
    	SET id_question="'.$id_question.'",texte_reponse="'.mysql_real_escape_string($contenu_reponse).'",date_maj_reponse=now()
    	WHERE id_reponse="'.$id_reponse.'"
    	AND id_question="'.$id_question.'"';
    	mysql_query($sql_reponse)
    	or die('Erreur sur la requête SQL qui met à jour les réponses du cours'.mysql_error()); // Envoie une requête à un serveur MySQL
    }
    echo "Les modifications de votre cours ont été effectuées.";
    ?>

  8. #68
    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'ai eu une illumination, un flash ce soir !

    Je met l'identifiant du chapitre dans deux variables comme ça :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    $id_chapitre_titre = $row['id_chapitre'];
    $id_chapitre_contenu = $row['id_chapitre'];
    ?>

    Au lieu de faire qu'une seule boucle foreach, j'en ai fait deux : une pour les titres des chapitres et l'autre pour les contenus des chapitres, voici le traitement PHP du formulaire :
    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
    // Modification des informations générales (introduction, conclusion, date de mise à jour) du cours
    $sql_cours_tp='
    UPDATE cours
    SET introduction_cours="'.$introduction_cours.'", conclusion_cours="'.$conclusion_cours.'",date_maj_cours=now()
    WHERE id_cours="'.$_SESSION['id_cours'].'"
    AND titre_cours="'.$_SESSION['titre_cours'].'"
    AND auteur_cours="'.$pseudo_utilisateur.'"';
    mysql_query($sql_cours_tp)
    or die('Erreur sur la requête SQL qui met à jour les informations générales du cours.'.mysql_error()); // Envoie une requête à un serveur MySQL
    // Boucle pour modifier les titres des chapitres
    foreach ($_POST['titre_chapitre'] as $id_chapitre_titre => $titre_chapitre) {
    	$sql_chapitre_titre="
    	UPDATE chapitres
    	SET titre_chapitre='".mysql_real_escape_string($titre_chapitre)."',date_maj_chapitre=now()
    	WHERE id_chapitre='".$id_chapitre_titre."'
    	AND id_cours='".$_SESSION['id_cours']."'";
    	mysql_query($sql_chapitre_titre)
    	or die('Erreur sur la requête SQL qui met à jour les titre des chapitres du cours.'.mysql_error()); // Envoie une requête à un serveur MySQL
    }
    // Boucle pour modifier les contenus des chapitres
    foreach ($_POST['contenu_chapitre'] as $id_chapitre_contenu => $contenu_chapitre) {
    	$sql_chapitre_contenu="
    	UPDATE chapitres
    	SET contenu_chapitre='".mysql_real_escape_string($contenu_chapitre)."',date_maj_chapitre=now()
    	WHERE id_chapitre='".$id_chapitre_contenu."'
    	AND id_cours='".$_SESSION['id_cours']."'";
    	mysql_query($sql_chapitre_contenu)
    	or die('Erreur sur la requête SQL qui met à jour les contenus des chapitres du cours.'.mysql_error()); // Envoie une requête à un serveur MySQL
    }
    // Boucle pour modifier les questions
    foreach ($_POST['contenu_question'] as $id_question => $contenu_question) {
    	$sql_question="
    	UPDATE questions
    	SET contenu_question='".mysql_real_escape_string($contenu_question)."', date_maj_question=now()
    	WHERE id_chapitre='".$id_chapitre."'
    	AND id_question='".$id_question."'";
    	mysql_query($sql_question)
    	or die('Erreur sur la requête SQL qui met à jour les questions du cours.'.mysql_error()); // Envoie une requête à un serveur MySQL
    }
    // Boucle pour modifier les réponses
    foreach ($_POST['contenu_reponse'] as $id_reponse => $contenu_reponse) {
    	$sql_reponse='
    	UPDATE reponses
    	SET id_question="'.$id_question.'",texte_reponse="'.mysql_real_escape_string($contenu_reponse).'",date_maj_reponse=now() 
    	WHERE id_reponse="'.$id_reponse.'"
    	AND id_question="'.$id_question.'"';
    	mysql_query($sql_reponse)
    	or die('Erreur sur la requête SQL qui met à jour les réponses du cours'.mysql_error()); // Envoie une requête à un serveur MySQL
    }
    echo "Les modifications ont été effectuées.";
    ?>

    Au premier abord, tout fonctionne !!! Je vous le confirmerai demain...

+ Répondre à la discussion
Cette discussion est résolue.
Page 4 sur 4 PremièrePremière 1234

Discussions similaires

  1. [PDO] Requête update dans une boucle de tableau
    Par renaud26 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 30/05/2015, 08h55
  2. Réponses: 1
    Dernier message: 17/09/2014, 01h53
  3. Requête update dans une boucle for
    Par boubounagh dans le forum JDBC
    Réponses: 3
    Dernier message: 13/01/2012, 14h18
  4. [MySQL] Exécuter une requête UPDATE dans une boucle
    Par vacknov dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 24/10/2008, 17h46
  5. Réponses: 7
    Dernier message: 26/07/2005, 16h41

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