Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/01/2012, 14h50   #1
Invité régulier
 
Inscription : mars 2009
Messages : 21
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 21
Points : 6
Points : 6
Par défaut réorganisation des positions

Bonjour,

J’ai deux tables :
Une table élève
Une table formation

Un élève peut choisir plusieurs formations

La table formation contient :
Id_formation, id_eleve, nom_formation et la position.

Je souhaite lorsque l’élève enregistre une formation avoir comme valeur 1 pour la 1ère formation, 2 pour la 2ème, etc et que lorsqu’ il supprime une formation que les positions soit réorganisé dans un ordre logique, c'est à dire que si j'ai 1,2,3 et qu’il supprime 1, alors 2 devient 1, et 3 devient 2 et ainsi de suite.
Comment faire ?

Merci d'avance.
francinego est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 14h58   #2
Membre actif
 
Homme
Inscription : avril 2011
Messages : 426
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 426
Points : 171
Points : 171
Bonjour,

En SQL avec un ORDER BY ASC
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 15h45   #3
Invité régulier
 
Inscription : mars 2009
Messages : 21
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 21
Points : 6
Points : 6
merci
Avec order by je ne vois pas, je ne me suis peut etre pas bien exprimée.
je souhaite mettre à jour chancun des enregistrements dans la base pour un élève. Je souhaite faire cette maj par un update au moment ou l'élève enregsitre ou supprime un choix.
Exemple :
formation_id, eleve_id, nom formation, position
1, 1, formation1, 1
2, 1, formation2, 2
3, 1, formation3, 3

il supprime la formation1
je veux obtenir dans ma base la maj des positions

2, 1, formation2, 1
3, 1, formation3, 2
francinego est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 10h03   #4
Membre actif
 
Homme
Inscription : avril 2011
Messages : 426
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 426
Points : 171
Points : 171
On apprécie la censure ! ...hégémonie quand tu nous tient...

Je ne crois pas que les règles de ce forum interdisent l'utilisation d'un lien externe permettant de résoudre le problème demandé .J'attends donc des explications de la part du modérateur car en relisant les règles :

Citation:
Évitez aussi de poster un lien seul sans aucun commentaire. D'une part, il est préférable de donner une réponse sur le forum plutôt que de renvoyer vers un autre site qui renvoie potentiellement vers encore un autre, etc. D'autre part, les liens conduisent le plus souvent à une documentation complexe et fastidieuse à lire même pour celui qui cherche une réponse. De plus, la plupart des liens deviennent "morts" après moins d'un an, ce qui rend la solution indisponible pour quiconque ferait une recherche sur le forum par la suite.
On remarque qu'il faut éviter de mettre en lien externe sans texte complémentaire, chose que je n'avais pas faite. De plus, il me semble que le mot "éviter" n'est pas similaire au mot" interdire". Voilà pour le coup de gueule.
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 12h03   #5
Invité régulier
 
Inscription : mars 2009
Messages : 21
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 21
Points : 6
Points : 6
merci Héretik j'ai pu avoir le lien et tu ne pouvais copier ici tout le texte de la vidéo
francinego est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 12h10   #6
Membre du Club
 
Femme Adeline
Consultant informatique
Inscription : décembre 2011
Messages : 20
Détails du profil
Informations personnelles :
Nom : Femme Adeline
Âge : 30
Localisation : France, Oise (Picardie)

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : décembre 2011
Messages : 20
Points : 44
Points : 44
il va te falloir faire une boucle en php...d'abord tu cherche dans ta table toutes les lignes qui ont le bon eleve_id et ensuite tu boucle sur les résultats pour faire des update de chaque ligne...ca pourrai donner quelque chose du genre:

Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
$sqlquery = "SELECT *
		FROM formation
		WHERE eleve_id= ".$mon_id."
		";
$result = db_query( $sqlquery );
while( $row = mysql_fetch_array( $result ) ){
	$position=$row['position']-1;
	$sqlupdate= "UPDATE formation
					SET position =  ".$position."
					WHERE formation_id = ".$row['formation_id']"
				";
	$result_update = db_query( $sqlupdate );
}
PtiteA2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 13h53   #7
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Bonjour,

Citation:
Envoyé par francinego Voir le message
Bonjour,

J’ai deux tables :
Une table élève
Une table formation

Un élève peut choisir plusieurs formations
Je pense que tu as mal conçu ta base.
Tu devrais avoir 3 tables au lieu de 2 :
Code :
1
2
3
- t_eleve(#id, nom, prenom, genre...) : Liste des élèves
- t_formation(#id, nom, duree...) : Liste des formations
- t_inscription(#id, id_formation, id_eleve, position...) : Liste des inscriptions ordonnées par élève
Cela donnerait quelque chose comme ça :
Code :
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
<?php
 
// ajout d'une formation ayant une position déjà allouée :
// on incrémente de 1 la position de toutes les formations suivantes
// et on procède à l'ajout
 
$idEleve  = 125;
$position = 2;
 
$sql = <<<SQL
UPDATE
   t_inscription
SET
   position = position + 1
WHERE
   t_inscription.id_eleve = $idEleve
   AND position >= $position
SQL;
 
$sql = <<<SQL
INSERT INTO 
   t_inscription (id_formation, id_eleve, position)
VALUES (
   $idFormation, $idEleve, $position
)
SQL;
 
 
 
// suppression d'une formation : repositionnement des formations restantes
$sql = <<<SQL
DELETE FROM
   t_inscription
WHERE
   t_inscription.id = $idInscription
SQL;
 
$sql = <<<SQL
UPDATE
   t_inscription
SET
   position = position - 1
WHERE
   t_inscription.id_eleve = $idEleve
   AND t_inscription.position > $position
SQL;
 
?>
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2012, 11h19   #8
Invité régulier
 
Inscription : mars 2009
Messages : 21
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 21
Points : 6
Points : 6
merci pour vos réponses je vais les tester.
modeliser la base autrement (avec 3 tables) est aussi une bonne idée.
francinego est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h39.


 
 
 
 
Partenaires

Hébergement Web