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 11/03/2011, 13h50   #1
Invité de passage
 
Inscription : mars 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 7
Points : 0
Points : 0
Par défaut Requete SQL colonne virtuelle qui s'incrémente

Bonjour,

Pour faire un top, je cherche à créer une colonne virtuelle qui s'incrémente automatiquement est ce possible ? peut etre que ce n'est pas la meilleur solution, mais je n'en vois pas d'autre pour ressortir la position du classement.

Merci.
Gingirou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 13h56   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
Oui, avec AUTO_INCREMENT sur la colone et à condition qu'il n'y en ait pas une autre.
Sinon il faut que tu aies recours au triggers ou aux routines.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 15h08   #3
Invité de passage
 
Inscription : mars 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 7
Points : 0
Points : 0
Je ne trouve pas la synthaxe exacte, pouvez vous me donner un coup de main ?

J'ai testé avec une requete du genre mais ça ne fonctionne pas :
SELECT Auto_increment AS numero FROM `table_fiche`

merci.
Gingirou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 15h15   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
C'est pour faire quoi au juste ?
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 15h22   #5
Invité de passage
 
Inscription : mars 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 7
Points : 0
Points : 0
Exactement, disons que je calcul une note avec AVG pour un artiste (je tiens un petit site de critique cinéma) en fonction des critiques qu'il a reçu et des films dans lequel il joue, le tout avec une requete.

J'ai déjà la requete fonctionnelle qui me sort virtuellement dans l'ordre des notes :
-nom
-note

je voudrais pouvoir rajouter une autre colonne à partir de rien et virtuellement qui indiquerait la position, il suffirait juste d'un équivalent $i++.
Gingirou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 16h00   #6
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
Mais la position par rapport à quoi ?? Dans le classement ? Dans une liste à afficher ?
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 16h11   #7
Invité de passage
 
Inscription : mars 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 7
Points : 0
Points : 0
Une position par rapport à l'ordre des champs dans le résultat de requète, le premier champ retournant 1, le suivant le 2, etc...

mon resultat de requete actuelle est par exemple :
henry | 15
marc | 14.9
toto | 14.5

aprés amélioration de la requete j'ai
1 | henry | 15
2 | marc | 14.9
3 | toto | 14.5

de façon à ce que quand je fait un WHERE nom=toto ça me sorte le 3.
Gingirou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 16h25   #8
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
il faut mettre un index primaire à ta table avec un auto_increment, tu peux faire ca dans phpmyadmin, mais bon c'est la base du SQL ça...
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 16h46   #9
Invité de passage
 
Inscription : mars 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 7
Points : 0
Points : 0
Je sais évidemment mettre une clef primaire et un auto increment.

En fait les données que j'affichais à titre d'exemple sont le résultat d'une requete assez complexe, mais elles n'existent pas en tant que tel dans une table.

La note est calculée et créee en tant que colone de résultat avec un AVG() as MOYENNE.
Gingirou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 16h53   #10
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
Citation:
Envoyé par Gingirou Voir le message
Je sais évidemment mettre une clef primaire et un auto increment.

En fait les données que j'affichais à titre d'exemple sont le résultat d'une requete assez complexe, mais elles n'existent pas en tant que tel dans une table.

La note est calculée et créee en tant que colone de résultat avec un AVG() as MOYENNE.
les positions c'est à faire après lors de l'affichage
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 16h55   #11
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
Citation:
position par rapport à l'ordre des champs dans le résultat de requète
Utilise un compteur en PHP, je n'arrive toujours pas à comprendre où ça coince...

Code :
1
2
3
4
5
6
 
$compteur = 1;
while ($row = mysql_fetch_assoc($results)) {
  // affiche ton champ
  $compteur++;
}
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 17h08   #12
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Code :
1
2
SET @rank=0;
SELECT @rank:=@rank+1 as rank, autres_champs etc.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 17h28   #13
Invité de passage
 
Inscription : mars 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 7
Points : 0
Points : 0
Merci beaucoup Sabotage, cela m'avance grandement sur le sujet

Par contre pour execution dans un script php le SET fonctionne t-il ? ou doit-on l'initialiser dans la requete, du coup comment faire ?
Gingirou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 17h37   #14
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
tu dois le faire en 2 requêtes, (ou requête multiple avec mysqli)
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/03/2011, 17h09   #15
Invité de passage
 
Inscription : mars 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 7
Points : 0
Points : 0
Cela fonctionne, j'ai bien une requête qui me retourne une colonne avec le rank en première colonne et le nom de l'artiste, note...

il reste cependant un soucis : quand j'effectue une condition restrictive "Where idartiste=4" la colonne du rank est évidemment à 1 vu qu'il n'y a qu'un seul résultat.

Du coup je dois faire un while en php sur la requête sans aucune condition jusqu'à trouver l'id. Ce n'est pas très optimisé comme méthode vu qu'il y a 9000 champs à balayer à chaque fois...

Vous avez une idée pour que le champs rank soit le même après condition ?
(Sinon, la meilleure solution est peut être de créer une tache cron avec une nouvelle table qui reprend le top...).
Gingirou 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 00h15.


 
 
 
 
Partenaires

Hébergement Web