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 :

Optimisation d'un code [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    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
    Par défaut Optimisation d'un code
    Bonjour,

    Voici le code PHP qui traite un 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
    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
     
     <?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'])));
    $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_publication_tp']==''||$_POST['introduction_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,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, 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
    			// 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 - 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 - 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
    				// A voir comment insérer les chapitres et questions seulement si l'utilisateur en a écrit
    				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] : '';
     
    					$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 - il faut récupérer l'identifiant du cours pour l'enregistrer dans la base de données
     
     
    				// 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 si les zones de texte sont remplies				
    							$query_insertion_questions=mysql_query("
    INSERT INTO test_site_questions_v2 (id_chapitre,contenu_question,date_depot,auteur_question)
    VALUES (".$_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 - il faut récupérer l'identifiant du chapitre pour l'enregistrer dans la base de données (ce que j'ai fait, à voir si c'est bon) et voir si il faut ajouter un champs id_cours
     
    							// => on enregistre en BDD si les zones de texte sont remplies	- A mon avis, problème pour question_reference		
    							$query_insertion_reponses=mysql_query("
    INSERT INTO test_site_reponses_v2 (question_reference,date_depot)
    VALUES ('$question_chapitre',now())")
    or die('Erreur lors de l\'insertion d\'une réponse à une question d\'un Cours/TP (question référence, contenu de la réponse, date de dépot de la réponse'.mysql_error()); // Envoie une requête à un serveur MySQL - il faut récupérer l'identifiant de la question pour l'enregistrer dans la base de données					
    }
    }
    }
    // Insertion de la relation Cours-TP/Utilisateurs/Chapitres/Questions/Réponses 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,id_chapitre,id_question,id_reponse)
    SELECT t1.id_cours,t2.id_utilisateur,t3.id_chapitre,t4.id_question,t5.id_reponse
    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 pseudo_utilisateur='$auteur_cours'
    AND titre_cours='$titre_cours_tp'")
    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é.";
    }

    Ce code fonctionne : il insère tout ce qui à à insérer (informations générales du Cours/TP, chapitres du Cours/TP, questions du Cours/TP, réponses attendues aux questions du Cours/TP) dans des tables SQL différentes.

    Néanmoins sur le formulaire, j'ai fait cette boucle qui permet d'afficher deux zones de texte (question et réponse) 5 fois :
    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
     
    <?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 
    ?>

    J'aimerais que le traitement PHP du formulaire insère dans la base de données uniquement les zones de texte où il y a quelque chose, non vides (où l'utilisateur a écrit ses questions et ses réponses).
    Actuellement, le traitement PHP du formulaire insère dans la base de données les cinq zones de texte. Il fait ça pour les trois tables : test_site_chapitres_v2, test_site_questions_v2, test_site_reponses_v2.

    Comment faire ?

    En ce qui concerne la table relationnelle test_site_relation_cours_tp_utilisateur_v2 dont voici le CREATE TABLE :
    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 `test_site_relation_cours_tp_utilisateur_v2` (
      `id_rel_cours_user` int(11) NOT NULL AUTO_INCREMENT,
      `id_cours_tp` int(11) NOT NULL,
      `id_utilisateur` int(11) NOT NULL,
      `id_chapitre` int(11) NOT NULL,
      `id_question` int(11) NOT NULL,
      `id_reponse` int(11) NOT NULL,
      PRIMARY KEY (`id_rel_cours_user`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
    , j'aimerais qu'il aille chercher les différents identifiants dans les différentes tables et qu'il les enregistre dans le but d'assurer les différentes relations (bon Cours/TP = bons chapitres + bonnes questions + bonnes réponses).

    Quand je fais un essai le plus simple possible (informations générales, un chapitre, une question et une réponses), voici ce que ça fait :
    - dans la table test_site_chapitres_v2, insertion de 4 lignes d'enregistrements (dont 3 où titre_chapitre et contenu_chapitre ne contient une chaine vide)
    - dans la table test_site_cours_v2, insertion des informations générales du Cours/TP
    - dans la table test_site_questions_v2, insertion de 4 lignes d'enregistrements (où les 3 champs titre_question, contenu_question et reponse_question s'enregistrent avec des chaines vides, les champs id_cours et id_chapitre s'enregistrent avec les valeurs respectives 0 et 204)
    - dans la table relationnelle test_site_relation_cours_tp_utilisateur_v2, insertion de plusieurs enregistrements (les champs id_utilisateur et id_cours_tp s'enregistrent avec les bonnes valeurs, les champs id_chapitre et id_question s'enregistrent avec les valeurs issues des tables appropriées.

    En une phrase : Comment enregistrer seulement les chapitres, questions et réponses saisis par l'utilisateur (et pas les chaines de caractères vides) ?

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Comment enregistrer seulement les chapitres, questions et réponses saisis par l'utilisateur (et pas les chaines de caractères vides) ?
    Verifie avant de faire ton insertion, si les chaines sont vides ou non.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    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
    Par défaut
    Voici le nouveau 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
    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
    <?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'])));
    $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_publication_tp']==''||$_POST['introduction_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,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, 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
    			// 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
    				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] : '';
     
    					// Bloc de vérification du contenu des zones de texte (chapitres) - DEBUT
    					if ($titre_chapitre==''||$contenu_chapitre=='') {
    						exit();
    					}
    					// Bloc de vérification du contenu des zones de texte (chapitres) - FIN
    					else
    						$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
     
    					// 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] : '';
     
    						// Bloc de vérification du contenu des zones de texte (questions et réponses) - DEBUT
    						if ($question_chapitre==''||$reponse_chapitre=='') {
    							exit();
    						}
    						// Bloc de vérification du contenu des zones de texte (questions et réponses) - FIN
    						else
    							// => on enregistre en BDD si les zones de texte sont remplies	
    							$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
     
    							// => on enregistre en BDD si les zones de texte sont remplies	- A mon avis, problème pour question_reference		
    							$query_insertion_reponses=mysql_query("
    INSERT INTO test_site_reponses_v2 (id_cours,id_chapitre,question_reference,date_depot)
    VALUES (".$_SESSION['id_cours'].",".$_SESSION['id_chapitre'].",'$question_chapitre',now())")
    or die('Erreur lors de l\'insertion d\'une réponse à une question d\'un Cours/TP (question référence, contenu de la réponse, date de dépot de la réponse'.mysql_error()); // Envoie une requête à un serveur MySQL
    						// Insertion de la relation Cours-TP/Utilisateurs/Chapitres/Questions/Réponses 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,id_chapitre,id_question,id_reponse)
    SELECT t1.id_cours,t2.id_utilisateur,t3.id_chapitre,t4.id_question,t5.id_reponse 
    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'")
    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é.";
    }
    }
    }
    }
    }
    ?>

    J'ai ajouté deux blocs de vérification de zones de texte.
    Le premier :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // Bloc de vérification du contenu des zones de texte (chapitres) - DEBUT
    if ($titre_chapitre==''||$contenu_chapitre=='') {
    	exit();
    }
    // Bloc de vérification du contenu des zones de texte (chapitres) - FIN

    Le deuxième :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // Bloc de vérification du contenu des zones de texte (questions et réponses) - DEBUT
    if ($question_chapitre==''||$reponse_chapitre=='') {
    	exit();
    }
    // Bloc de vérification du contenu des zones de texte (questions et réponses) - FIN

    Quand je teste au minimum (informations générales du Cours/TP, un chapitre, une question et la réponse attendue) :
    -dans la table test_site_cours_v2, insertion des informations générales du Cours/TP (auteur, introduction, conclusion, etc...),
    -dans la table test_site_chapitres_v2, insertion du chapitre (titre, contenu, date de dépot, etc...) : le champs "id_cours" se remplit avec la bonne valeur. Il va chercher la bonne valeur dans la table test_site_cours_v2,
    -dans la table test_site_questions_v2, insertion d'un enregistrement dans lequel le champs id_cours se remplit avec la bonne valeur. Il va chercher la bonne valeur dans la table test_site_cours_v2. Le champs id_chapitre a un problème. En effet, il s'enregistre avec la valeur "233" alors que je voudrais qu'il mette la même valeur que dans la table test_site_chapitres_v2 (comme pour l'identifiant du Cours/TP),
    -dans la table test_site_reponses_v2, même problème que dans la table test_site_questions_v2


    Quand je complique un petit peu plus (informations générales du Cours/TP, deux chapitres, deux questions et leurs réponses attendues) :
    -dans la table test_site_cours_v2, insertion des informations générales du Cours/TP (auteur, introduction, conclusion, etc...),
    -dans la table test_site_chapitres_v2, insertion du premier chapitre écrit,
    -dans la table test_site_questions_v2, insertion de la première question écrite,
    -dans la table test_site_reponses_v2, insertion de la première réponse écrite.



    Comment faire pour que le champs id_chapitre des tables test_site_questions_v2 et test_site_reponses_v2 s'enregistrent correctement (en allant chercher les identifiants dans les deux tables respectives) ?
    Comment insérer tout chapitres/questions/réponses respectives et pas que le premier chapitre, la première question, la première réponse ?

    Pouvez-vous m'aider SVP ?

  4. #4
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    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 323
    Par défaut
    pour tes sorties dans les boucles utilise break (ou continue) mais exit ?

    logique sql : pour lier les tables entre elles :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    insert into chapitres
    $idNouveauChapitre= mysql_insert_id();
    insert into questions values $idNouveauChapitre
    $idNouvelleQuestion= mysql_insert_id();

  5. #5
    Membre confirmé
    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
    Par défaut
    En regardant sur php.net j'ai vu que :
    -break permet de sortir d'une structure for, foreach, while, do-while ou switch
    -exit affiche un message et termine le script courant
    -mysql_insert_id() retourne l'identifiant généré par la dernière requête bien qu'elle soit obsolète depuis 5.5.0 et sera supprimée dans le futur.

    Peux-tu reprendre le code et apporter tes modifications pour le rendre fonctionnel STP ?

  6. #6
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    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 323
    Par défaut
    Citation Envoyé par vinceom92 Voir le message
    -mysql_insert_id() retourne l'identifiant généré par la dernière requête bien qu'elle soit obsolète depuis 5.5.0 et sera supprimée dans le futur.

    ce n'est pas mysql_insert_id qui est obsolète ! c'est toutes les fonctions mysql_****; donc toutes tes fonctions mysql !

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

Discussions similaires

  1. [Optimisation C++] Calcul code altitude
    Par Spout dans le forum C++
    Réponses: 7
    Dernier message: 13/11/2007, 22h17
  2. Y a-t-il une solution pour optimiser mon petit code ?
    Par pierre987321 dans le forum Delphi
    Réponses: 20
    Dernier message: 14/06/2007, 10h53
  3. Optimisation de mon code ActionScript
    Par amnesias dans le forum Flash
    Réponses: 9
    Dernier message: 01/04/2007, 22h04
  4. Optimisation d'un code !
    Par leserapheen dans le forum Pascal
    Réponses: 20
    Dernier message: 09/03/2007, 14h00
  5. [MMX] Optimisation d'un code C++ -> plus lent
    Par Laurent Gomila dans le forum x86 32-bits / 64-bits
    Réponses: 12
    Dernier message: 17/05/2006, 18h47

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