IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

la requête SELECT SUBSTR


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 53
    Par défaut la requête SELECT SUBSTR
    Comment utilisez la requête SELECT SUBSTR ??

    En fait j'aimerais afficher sur une page toute les lettres d'un champ de ma table pour faire sur cette lettre un lien vers tout les mots commençant par cette lettre...C'est bien cette requête qu'il faut utilisez ??
    Merci pour votre aide.

    @+

  2. #2
    Membre Expert Avatar de Nemesys
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 895
    Par défaut
    C'est pas tres clair mais je pense que c'est la bonne fonction.

    http://www.adp-gmbh.ch/ora/sql/substr.html

  3. #3
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 53
    Par défaut
    Je m'explique

    J'ai un champ dans ma table avec des mots quelconques...

    Architecte
    Armoire
    Bagnoire
    Ordinateur

    J'aimerais une requête SQL qui me donne comme résultat

    A B O

    La première lettre des mots.

    Vous voyez maintenant ??

  4. #4
    Membre Expert

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Par défaut
    la doc est la pour ca :

    http://dev.mysql.com/doc/refman/4.1/...html#id2868968
    donc :

    SELECT DISTINCT SUBSTR(colonne, 0, 1) as PremiereLettre FROM ta_table ORDER BY PremiereLettre ASC

  5. #5
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 53
    Par défaut
    j'ai donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $retour = mysql_query("SELECT DISTINCT SUBSTR(dj, 0, 1) AS PremiereLettre FROM liens ORDER BY PremiereLettre ASC");
    $donnees = mysql_fetch_array($retour);
    lorsque je tente d'afficher
    je met :

    echo $donnees['dj']; // j'ai droit à une erreur

    et lorsque je met $donnees['PremiereLettre']; // rien ne s'affiche

    Il faut que je mette quoi ??

  6. #6
    Membre Expert

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Par défaut
    Regle n°1 et Regle n°2 sur $donnees (cf signature)

  7. #7
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 53
    Par défaut
    ca me donne ca :

    array(2) { [0]=> string(0) "" ["PremiereLettre"]=> string(0) "" }


  8. #8
    Invité
    Invité(e)
    Par défaut
    substr n'est pas exacetment identique en php et mysql

    Substr pour php
    au lieu de faire le substr dans ta requete , recupere juste la valeur de dj;
    ensuite tu boucle sur TOUS tes resultats et tu affiche en faisant ici le substr

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $retour = mysql_query("SELECT DISTINCT(dj) AS PremiereLettre FROM liens ORDER BY PremiereLettre ASC");
    while($donnees = mysql_fetch_array($retour))
    {
    echo "<br>".substr($donnees['PremiereLettre'],0,1);
    }
    Un peu de lecture (explication de la differnce substr en php et mysql)
    MySQL 4.1 supporte désormais la fonction SUBSTR() pour extraire une partie de chaîne, tout comme PHP. Cette fonction n'est pas documentée, et sert à la même chose que la fonction MID(). Notez aussi que SUBSTR() supporte les offsets négatifs, tout comme MID. Ce n'était pas le cas en 4.0. Par exemple : select substr('12345',4,1); retourne 4 select substr('12345',-4,1); retourne 2 select substr('12345', 2,-1); retourne '' : Et oui, cette fonction n'est pas un clone du substr() bien connue de PHP. Le support des offsets négatifs vous évitera d'utiliser length() dans votre requête pour faire commencer la sous-chaîne depuis la fin. select substr('12345',-4,1); est équivalent à select substr('12345',length('12345')-4,1); .

  9. #9
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 53
    Par défaut
    Idem, rien ne s'affiche à l'écran, pas même d'erreur...

  10. #10
    Invité
    Invité(e)
    Par défaut
    moi ça marche nikel, es tu sur davoir des données dans ta table?

  11. #11
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Par défaut
    pour etre sur teste la requete pas via php (phpmyadmin...) et tu seras si le probleme vien de la requete (mauvias nom pas de donnéeS...) ou de php

  12. #12
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 53
    Par défaut
    Lorque j'effectue ma requête dans phpmyadmin il me renvoie


    PremiereLettre
    Modifier Effacer Aycan
    Modifier Effacer Cascada
    Modifier Effacer Jessy


    alors que sur ma page web, rien du tout !

  13. #13
    Invité
    Invité(e)
    Par défaut
    si ta page web est blanche c'est que ta requete se fait correctement et quil ny a aucune valeur a retourner

  14. #14
    Membre Expert

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Par défaut
    essaye avec LEFT(dj, 1), ca sera deja plus propre, au lieu de SUBSTR(dj, 0, 1)

    si ca ne marche toujours pas, remplace le LEFT... par dj tout court (ie : SELECT dj...)

    si ca ne marche toujours pas, c'est que ta requete ne s'execute pas... tu as bien respecté la regle n°1 ?

    fait un echo mysql_num_rows($retour); aussi

  15. #15
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 53
    Par défaut
    Citation Envoyé par rbaatouc
    si ta page web est blanche c'est que ta requete se fait correctement et quil ny a aucune valeur a retourner
    aperçu de ma base ---> http://img141.imageshack.us/img141/8206/table3tv.jpg

    code identique a celui du haut

    aperçu resultat ---> http://img83.imageshack.us/img83/2269/result3oh.jpg


    Merci pour votre aide !!

  16. #16
    Invité
    Invité(e)
    Par défaut
    fais un mysql_num_rows pour savoir si ça te retourne des lignes;
    sinon affiche les noms complets dans un premier temsp pour voir si ça fais pareil

  17. #17
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 53
    Par défaut
    je viens de faire un test tout bête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    $retour = mysql_query("SELECT dj FROM liens");
     
    while($donnees = mysql_fetch_array($retour));
    {
     
     
    echo $donnees['dj'];
     
    }
    Résultat : ca ne m'affiche rien non plus...

    Je comprend pas...

  18. #18
    Membre Expert

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Par défaut
    Citation Envoyé par kilkikou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $retour = mysql_query("SELECT dj FROM liens");
    mais oui, je vais rester calme... une derniere fois, apres t'aura droit a du texte taille 7 ;o)

    Regle 1

    et
    echo mysql_num_rows($retour);

  19. #19
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 53
    Par défaut
    Je suis calme, donc reste calme aussi...

    Le résultat de ton code m'affiche 3

  20. #20
    Membre Expert

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Par défaut
    donc :

    Regle n°2 sur $retour
    Regle n°2 sur $donnees

Discussions similaires

  1. Résultat commençant par un chiffre avec requête SELECT
    Par nicolas.pissard dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/04/2010, 13h31
  2. C'est possible dans une requête SELECT ?
    Par Kokito dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/04/2005, 16h59
  3. Insertion multiple à base de sous requête SELECT
    Par drinkmilk dans le forum Langage SQL
    Réponses: 8
    Dernier message: 14/04/2005, 16h34
  4. SQL Server 7.0 - Requête Select
    Par sangokus dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 23/03/2004, 10h32
  5. Optimisations mysql sur les requêtes SELECT: index
    Par leo'z dans le forum Débuter
    Réponses: 2
    Dernier message: 29/11/2003, 13h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo