Bonjour à tous,

Je réalise un outil permettant de répondre à des questions et je peux me retrouver avec tes tables de plus de 120 questions.
Cette table doit pouvoir être modulable, c'est à dire on peut modifier l'ordre d'apparition des questions en changeant le numéro de l'id de la question, ou encore ajouter une question entre-deux questions.

Je cherche la manière la plus propre de réaliser cette manipulation ... aujourd'hui (voir script ci-dessous) j'arrive bien à récupérer les ID, les incrémenter et ainsi de suite, mais je n'arrive pas à savoir comment suite à cette insertion de question dans la table, je peux incrémenter de +1 tous les ID suivants, sachant qu'à ce moment là j'aurai 2 ID ayant la même valeur ...


Le code PHP
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
// On vérifie si le formulaire est complet
if(!empty($_POST['items']) AND is_numeric($_POST['items']) AND !empty($_POST['text_question']) AND !empty($_POST['question_form'])) {
    // On met les données dans des variables et on applique la fonction permettant de controler le contenu
    $items = valid_donnees($_POST['items']);
    $questions = valid_donnees($_POST['questions']);
    //Si l'utilisateur n'a pas selectionné d'emplacement pour sa question dans le <select> du formulaire
    if ($questions == "")) {
        $retour = mysqli_query($conn, 'SELECT MAX(id_question) AS id_max FROM questions WHERE id_link_item = '.$items.'');
        $donnees = mysqli_fetch_array($retour);
        // Si aucune question n'est enregistrée dans la BDD on délivre le 1er ID
        if ($donnees['id_max'] == NULL) {
            $questions = 1;
        // Si des questions sont présentes en BDD, on incrémente de 1 l'ID par rapport à l'ID la plus haute de la BDD
        } else { $questions = ++$donnees['id_max']; }
    // Si $questions n'est pas vide, alors on va récupérer l'id de la question du <select> et l'incrémenter
    } else { ++$questions; }
 
    // On encode en utf8 le textarea + contrôle des données.
    $text_question = utf8_encode(valid_donnees($_POST['text_question']));
    if (empty($_POST['references'])) {
        $references = "";
    } else { $references = $_POST['references']; }
    $question_form = valid_donnees($_POST['question_form']);
 
    // On insert la nouvelle questions dans la table questions
    $query = "INSERT INTO `questions` (id_ai, id_question, id_link_item, text_question, commentaire_question, id_ai_reference, date_add_question, user_add_question, date_update_question, user_update_question, question_form)
    VALUES (NULL, '$questions', '$items', '$text_question', '', '$references', '$date', '$id_utilisateur', '$date', '$id_utilisateur', '$question_form')";
    $result = mysqli_query($conn,$query) or die(mysqli_error());
    echo "ok";
}
?>
La table "questions"
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 `questions` (
  `id_ai` int(11) NOT NULL AUTO_INCREMENT,
  `id_question` int(11) NOT NULL,
  `id_link_item` int(11) NOT NULL,
  `text_question` varchar(255) NOT NULL,
  `commentaire_question` varchar(255) NOT NULL,
  `id_ai_reference` varchar(255) NOT NULL,
  `date_add_question` datetime NOT NULL,
  `user_add_question` int(11) NOT NULL,
  `date_update_question` datetime NOT NULL,
  `user_update_question` int(11) NOT NULL,
  `question_form` varchar(100) NOT NULL,
  PRIMARY KEY (`id_ai`)
) ENGINE=InnoDB AUTO_INCREMENT=20012 DEFAULT CHARSET=utf8;

Je remercie par avance la personne qui pourra m'aiguiller sur un chemin !

Bonne journée,