Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Administration
Administration Forum d'entraide sur l'administration de 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 27/03/2006, 12h42   #1
Candidat au titre de Membre du Club
 
Inscription : décembre 2005
Messages : 42
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 42
Points : 14
Points : 14
Par défaut Recupération multiple de données avec mysql_fetch_array

Bonjour

je souhaite pouvoir inverser deux numéros de ligne dans une table mysql.

Mon problème se trouve au niveau de la récupération des données.
Ainsi, je récupère mon identifiant avec
Code :
1
2
3
4
while ($data=mysql_fetch_array($requete)) {
 
$data['NUM'];
}
et je voudrais l'inverser avec le NUM de l'enregistrement précédent.

Existe t-il une commande telle $data[-1]['NUM'] pour récupérer la valeur de la ligne précédente ?
Cordialement
jfjava2002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2006, 12h43   #2
Membre confirmé
 
Avatar de allyson
 
Inscription : août 2003
Messages : 248
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 248
Points : 232
Points : 232
Envoyer un message via Yahoo à allyson
salut
tu souhaites mettre à jour ta table en remplaçant les NUM par ceux des enregistrements précédents? je ne comprends pas bien?
__________________
.: and Justice for all :.
------------------------------------------------------------
Membre du jury de l'élection de Mister DVP.com
les règles du forum
de penser au tag
allyson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2006, 12h49   #3
Candidat au titre de Membre du Club
 
Inscription : décembre 2005
Messages : 42
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 42
Points : 14
Points : 14
en fait,admettons qu'un enregistrement X possède le NUM 3 et Y le NUM 6.

je veux pouvoir lister mes enregistrements, pour que quand j'arrive sur Y, je puisse récupérer la valeur de X, la mettre en tampon, lui donner la valeur de Y et redonner a Y l'ancienne valeur de X (tampon).

Il s'agit d'un simple échange de valeur mais pour cela il me faut récupérer la valeur précédent la ligne actuelle, ce dont je n'arrive pas!

ps : merci d'avoir répondu aussi vite!
jfjava2002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2006, 12h53   #4
Membre confirmé
 
Avatar de allyson
 
Inscription : août 2003
Messages : 248
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 248
Points : 232
Points : 232
Envoyer un message via Yahoo à allyson
ah ok!
tu peux dans ton while sauvegarder la valeur précédente...
Code :
1
2
3
4
while (condition)
{
$val_prec = $val_actu;
}
tu devras sauvegarder l'id des enregistrement X et Y afin de pouvoir faire la mise à jour!
__________________
.: and Justice for all :.
------------------------------------------------------------
Membre du jury de l'élection de Mister DVP.com
les règles du forum
de penser au tag
allyson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2006, 13h07   #5
Membre confirmé
 
Inscription : février 2003
Messages : 285
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 285
Points : 255
Points : 255
Envoyer un message via ICQ à Sion_Sempai Envoyer un message via MSN à Sion_Sempai Envoyer un message via Yahoo à Sion_Sempai
tu peux déplacer le pointeur de résultat avec mysql_data_seek()

en fait, plutot que de faire une boucle "normale" avec un fetch_array, il faudra, si j'ai bien tout compris paskeu j'ai jamais utiliser data_seek, que tu parcours tes enregistrements à la main

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
$qry = mysql_query($sql) OR die(mysql_error()); // ON lance la requete
$nb_result = mysql_num_rows(); // ON demande le nombre de résultats renvoyés;
 
FOR($i = 0; $i <= $nb_result; $i++){ // Boucle jusqu'à la fin des résultats
  if ($i > 0) {  // Si on est sur la deuxieme ligne de résultat (pour pouvoir récuperer la précedente avant de faire l'echange)
    $tab = mysql_fetch_array($qry); // ON récupere les valeur dans un tableau tampon
    mysql_data_seek($qry, -1); // ON remonte les resultats d'une ligne
    $tab2 = mysql_fetch_array($qry); // On mets les valeurs dans un autre tableau tampon
    mysql_data_seek($qry, 2); // On redescent sur la ligne de résultat suivante de celle où on était
    /* Code de traitement des tableaux pour inversement des valeurs */
  }
  mysql_data_seek($qry, 1); // On continue de descendre dans les résultats
}
j'ai jamais travaillé comme ca, mais je SUPPOSE que ca marche de cette facon
a toi de voir le code pour les inversement de valeurs

[Edit] J'ai un peu commenté le code
Sion_Sempai est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2006, 13h34   #6
Membre confirmé
 
Inscription : février 2003
Messages : 285
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 285
Points : 255
Points : 255
Envoyer un message via ICQ à Sion_Sempai Envoyer un message via MSN à Sion_Sempai Envoyer un message via Yahoo à Sion_Sempai
en fait, je crois que j'ai fait une petite erreur...
hum....
Oui, il faudrait descendre non pas une ligne après l'autre, mais 2 lignes par 2 lignes !

j'édite le code
Sion_Sempai est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2006, 13h41   #7
Candidat au titre de Membre du Club
 
Inscription : décembre 2005
Messages : 42
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 42
Points : 14
Points : 14
Bon, les deux solutions me conviennent, je vais tester et je prendrais celle qui marche.

J'avoue que je n'avais pas pensé à enregistrer la valeur précédente dans une variable, surtout que j'utilise les sessions...

En tout cas, merci de vos réponses !
jfjava2002 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 02h25.


 
 
 
 
Partenaires

Hébergement Web