Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
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 05/06/2007, 14h59   #1
Membre à l'essai
 
Inscription : mai 2006
Messages : 137
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 137
Points : 20
Points : 20
Par défaut [SQL] Intervertir les données de 2 enregistrements

Bonjour,

Connaissez-vous une fonction permettant d'intervertir 2 enregistrements d'une base de donnée ?
id------------prenom------------nom

1------------Georges------------Duppond
2------------Jacques------------Machin

J'intervertis et j'obtiens :

id------------prenom------------nom

1------------Jacques------------Machin
2------------Georges------------Dupfpond

Merci d'avance.
gcvoiron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2007, 15h07   #2
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
J'aurai tendance a donner deux solutions :

1/ ton id est pas en auto-increment => tu échanges les id (a l'aide de deux requete SQL tu changes ces id)

2/ ton id est en auto-increment => tu récupères les deux enregistrements (avec un SELECT) et tu fais deux UPDATE pour inverser les deux lignes.

Parce que je ne vois pas de fonctions natives capables de faire ça.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2007, 15h09   #3
Membre habitué
 
Avatar de maxime.ohayon
 
Inscription : mai 2007
Messages : 113
Détails du profil
Informations personnelles :
Âge : 24
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : mai 2007
Messages : 113
Points : 100
Points : 100
Je ne pensais pas que cela etait utile d'inverser deux enregistrement.

Max
maxime.ohayon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2007, 15h09   #4
Membre à l'essai
 
Inscription : mai 2006
Messages : 137
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 137
Points : 20
Points : 20
Citation:
1/ ton id est pas en auto-increment => tu échanges les id (a l'aide de deux requete SQL tu changes ces id)
Mon id est en auto increment, je n'y avais pas pensé. Je n'ai rien qu'à inverser les id !
gcvoiron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2007, 15h13   #5
Membre à l'essai
 
Inscription : mai 2006
Messages : 137
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 137
Points : 20
Points : 20
Mais comment connaître le champ qui précède, ou celui qui suit ?
gcvoiron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2007, 15h14   #6
Membre habitué
 
Avatar de maxime.ohayon
 
Inscription : mai 2007
Messages : 113
Détails du profil
Informations personnelles :
Âge : 24
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : mai 2007
Messages : 113
Points : 100
Points : 100
Je ne comprends tjs pas pourquoi tu veux intervertir deux enregistrements c'est un peu bete non ?

max
maxime.ohayon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2007, 15h22   #7
Membre à l'essai
 
Inscription : mai 2006
Messages : 137
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 137
Points : 20
Points : 20
Je développe un site où on peux ajouter des pages.
Par exemple, j'ajoute "ACCUEIL", "CONTACT", "PLAN DU SITE"... c'est pour en fait trier mes pages.
J'ai créé mes pages. J'ai :
ACCUEIL
CONTACT
PLAN DU SITE
Si je veux que le lien "PLAN DU SITE" soit avant le lien "CONTACT", il faut que j'intervertisse leur id.
gcvoiron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2007, 15h29   #8
Membre éclairé
 
Avatar de Asmodean
 
Inscription : février 2006
Messages : 311
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France

Informations forums :
Inscription : février 2006
Messages : 311
Points : 346
Points : 346
Envoyer un message via MSN à Asmodean
Ou tu utilise un champ supplémentaire qui sert justement a les classer.
Asmodean est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2007, 15h42   #9
Membre à l'essai
 
Inscription : mai 2006
Messages : 137
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 137
Points : 20
Points : 20
C'est galère avec un champ supplèmentaire. J'ai trouvé comment voir le champ précédent :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
$result = mysql_query("SELECT * FROM see_pages ORDER BY page_id ASC;");
for($i=0; $row=mysql_fetch_array($result); $i++)
{
	if($row['page_id'] == $id)
	{
		$id_prec = $temp;
	}
	else
	{
		$temp = $row['page_id'];
	}
}
echo "<br />$id";
Je ne sais pas si il y a moins lourd, mais avec 10-15 pages max, ça marche !

[EDIT] J'ai corrigé, il y avait une erreur.
gcvoiron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2007, 10h14   #10
Membre habitué
 
Avatar de maxime.ohayon
 
Inscription : mai 2007
Messages : 113
Détails du profil
Informations personnelles :
Âge : 24
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : mai 2007
Messages : 113
Points : 100
Points : 100
Salut
tu rajoute un champs ordre qui stockera l'ordre d'apparition de tes rubriques, il ne faut pas toucher à tes id se sont tes clés primaires.

Max
__________________
Faut faire l'ane pour avoir de l'avoine
maxime.ohayon est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h55.


 
 
 
 
Partenaires

Hébergement Web