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

Langage PHP Discussion :

Récupérer seulement les mots de plus de 5 lettres


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    173
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 173
    Points : 83
    Points
    83
    Par défaut Récupérer seulement les mots de plus de 5 lettres
    Bonjour à tous

    Je voulais savoir si il était possible et comment faire pour recuperer seulement les mots faisant plus de 5 lettres dans ma base mysql ?


    Merci d'avance

  2. #2
    Membre averti Avatar de icer
    Inscrit en
    Janvier 2006
    Messages
    332
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 332
    Points : 363
    Points
    363
    Par défaut
    C'est fort possible.

    Il doit bien exister une fonction qui retourne la longueur d'une chaîne de caratére en SQL, tu doit jeter un oeil dans la documentation...

    Pour l'instant on va dire que cette fonction s'appelle "STRING_LENGTH" :

    Ta requête SQL ressemblera à :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM dictionnaire WHERE STRING_LENGTH(mot) > 5 ;

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    173
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 173
    Points : 83
    Points
    83
    Par défaut
    Merci Icer, je regarde ça.

    A bientôt

  4. #4
    Membre habitué Avatar de mamiberkof
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Maroc

    Informations forums :
    Inscription : Avril 2005
    Messages : 290
    Points : 155
    Points
    155
    Par défaut
    Sous Mysql tu as CHARACTER_LENGTH.

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    Select * from MyTable where CHARACTER_LENGTH(mot)>5

    A+

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    173
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 173
    Points : 83
    Points
    83
    Par défaut
    Salut merci pour vos réponses.

    J etrouve plus de rensaignement sur CHARACTER_LENGTH, mais je ne m'en sort pas, impossible d'extraire quoi que se soit.

    Si matbale s'apelle astuce et le champ descritpion, comment faire pour sortir les mots de plus de cinq lettre ?
    j'ai essayé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql1 = 'SELECT * FROM astuce WHERE CHARACTER_LENGTH('.astuce_description.')>5';
    mais tout s'affiche sans distinction.
    j'ai aussi essayé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql1 = 'SELECT * FROM astuce WHERE CHARACTER_LENGTH(astuce.astuce_description)>5';
    mais c'est pareil, en plus je voudrais récuperer les mots de 5 lettres et plus en selectionnant un seul id.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql1 = 'SELECT * FROM astuce WHERE CHARACTER_LENGTH(astuce_id='.$_GET['ast'].')>5';
    Mais la page reste blanche, dans ce cas je comprend que rien ne s'affiche dans mes choix, vu que je ne lui indique aucun champ à limiter, mais je ne comprend vraiment pas et dans ce que je lis CHARACTER_LENGTH compte bien le nombre de caractère et je ne vois comment lui dire d'extraire les mots.

    Comme vous pouvez le voir je suis assez débutant, donc un peu d'aide avec une explication m'aiderai beaucoup.

    Merci

  6. #6
    Membre habitué Avatar de mamiberkof
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Maroc

    Informations forums :
    Inscription : Avril 2005
    Messages : 290
    Points : 155
    Points
    155
    Par défaut
    c'est bizzard si tu ne recupere rien, mais il faut que tu verifie ça d'abord en lançant la requete dans l'interpreteur de Mysql directement et regardes ce qu'il genere.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    173
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 173
    Points : 83
    Points
    83
    Par défaut
    bonsoir mamiberkof

    Je ne savais pas que l'on pouvait generer les requêtes dans l'interpreteur, c'est genial .

    Par contre quand je genere, c'est pareil pour les 2 premières requete ça m'affiche tout. Apparement le problème vient du fait que ça affiche tout parce que le tout fait plus de 5 lettres.

    comment lui dire d'isoler les mots de plus de 5 lettres, le problème est la.

    dans chaque champs astuce_description, il y a des phrases completes.

    Ce qui est bizarre c'est que si je mets jusqu'à >19 tout s'affiche à >20 plus rien ne s'affiche.

    Merci

  8. #8
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Ca marche tres bien c'est que tu n'utilise pas cela comme il faut!
    Ici : CHARACTER_LENGTH() dans les parenthèse ce qu'il faut mettre c'est une colonne de ta table...

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    173
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 173
    Points : 83
    Points
    83
    Par défaut
    Salut

    astuce_description est une colonne de la table et voila ce que ça affiche :

    http://www.teeshotweb.com/astuces/mot_essai.php

    la requete utilisée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php   
     
    $sql1 = 'SELECT * FROM astuce WHERE CHARACTER_LENGTH('.astuce_description.')>5';
    $req1 = mysql_query($sql1) or die('Erreur SQL !<br>'.$sql1.'<br>'.mysql_error());
     
    while($title = mysql_fetch_assoc($req1)) 
    	{  
    echo ''.$title['astuce_description'].'';
    }
    ?>
    je ne veux que les mots supérieur à 5 lettres et ne concernant qu'une astuce.

    Je veux bien que je l'utilise mal, mais comment l'utiliser bien ?

    Merci

  10. #10
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Si c'est une colonne alors ta requête devrai etre écrite comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql1 = 'SELECT * FROM astuce WHERE CHARACTER_LENGTH(astuce_description)>5';
    Et la ca marche

  11. #11
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Si j'ai bien compris ce que vous vouliez faire :

    Sur l'ensemble de la table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $query = mysql_query('SELECT * FROM astuce') or die(mysql_error());
    $mots = array();
    while ($array = mysql_fetch_assoc($query)) {
        preg_match_all('/\b(\w{5,})\b/U', $array['astuce_description'], $m);
        $mots = array_merge($mots, $m[1]);
    }
     
    print_r($mots);
    Sur un enregistrement précis de la table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $id = isset($_GET['id']) ? intval($_GET['id']) : 0;
    if (!$id) {
        die('Paramètre erroné !');
    }
    $query = mysql_query('SELECT * FROM astuce WHERE astuce_id = ' . $id) or die(mysql_error());
    $array = mysql_fetch_assoc($query);
    preg_match_all('/\b(\w{5,})\b/U', $array['astuce_description'], $m);
    $mots = $m[1];
     
    print_r($mots);

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    173
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 173
    Points : 83
    Points
    83
    Par défaut
    Citation Envoyé par cerede2000
    Si c'est une colonne alors ta requête devrai etre écrite comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql1 = 'SELECT * FROM astuce WHERE CHARACTER_LENGTH(astuce_description)>5';
    Et la ca marche
    Merci cerede2000, mais c'est la même chose que ma ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql1 = 'SELECT * FROM astuce WHERE CHARACTER_LENGTH('.astuce_description.')>5';
    et ça affiche tout.


    Merci julp, ça marche et c'est ce que je cherchais. Je comprend pas tout ton code, mais je vais chercher à comprendre.

    Merci

    A bientôt

  13. #13
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Au passage cette REGEX la aurait suffit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    preg_match_all('/\w{5,}\b/U', $array['astuce_description'], $m);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 23/05/2011, 15h50
  2. [ZF 1.7] Récupérer seulement les valeurs d'un displaygroup
    Par manuscle dans le forum Zend_Form
    Réponses: 3
    Dernier message: 02/04/2010, 11h29
  3. [AC-2003] Comment récupérer seulement les noms issu d'un tri sur form
    Par electrosat03 dans le forum VBA Access
    Réponses: 6
    Dernier message: 17/07/2009, 19h41
  4. Réponses: 6
    Dernier message: 19/10/2008, 07h56
  5. Récupérer tous les mots d'une chaine de caractère
    Par steps5ive dans le forum Access
    Réponses: 2
    Dernier message: 05/09/2006, 15h14

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