Bonjour
J'ai une table ordonnée dans une base de donnée et je dois pouvoir insérer au milieu de la table une nouvelle ligne, connaissant les deux valeurs entre lesquelles la placer :
- 1=> valeur 1
- insérer la nouvelle ligne "valeur 1b"
- 2=> valeur 2
- 3=> valeur 3
- 4=> valeur 4
Le problème est alors qu'il faut décaler les ordre d'un. Or la table contient environ 7000 valeurs, donc il y a un temps de latence de 20s à chaque insertion, ce qui est très pénible. De plus, je n'ai pas trouvé de requête qui permette d'insérer après l'id n comme on a en python : insert(index)
Le but est d'arriver à :
- 1=> valeur 1
- 2=> valeur 1b
- 3=> valeur 2
- 4=> valeur 3
- 5=> valeur 4
Connaissez vous des méthodes autres qu'une boucle sur les 7000 valeurs avec une 7000 requêtes ?
Merci beaucoup
Mon code pour l'instant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 //on récupère toutes les entrées à modifier $req4 = $bdd->prepare('SELECT * FROM decoupage WHERE ordre>=:ordre'); $req4->execute(array('ordre'=>$ordre_debut)); while ($donnees4 = $req4->fetch()) { // on récupère et on indente $i=$donnees4['ordre']; $j=$donnees4['ordre']+1; // on modifie $req2 = $bdd->prepare('UPDATE decoupage SET ordre=:ordre WHERE ordre=:ordre2'); $req2->execute(array('ordre'=>$j, 'ordre2'=>$i)); }







Répondre avec citation






Partager