Problème strpos

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème strpos

par Loulibalou » 20 juin 2008, 10:36

Es-tu certain qu'il soit nécessaire d'afficher homme ou femme alors que le titre le précise ? Est-ce que l'affichage suivant ne serait pas suffisant ?
Oui !

Merci ! :)

par AB » 19 juin 2008, 23:18

Es-tu certain qu'il soit nécessaire d'afficher homme ou femme alors que le titre le précise ? Est-ce que l'affichage suivant ne serait pas suffisant ?
Homme :
- Florien
Femme :
- Elodie
Ce qui donnerait
$tri = explode ("-", $données);//tri des lignes

foreach($tri as $ligne)
{
$ligne = trim($ligne);

$mots = explode(' ',$ligne);

$titre = null;

if (stripos($ligne,'homme') !== false) $titre = 'Homme :<br/>'; 
else if (stripos($ligne,'femme') !== false) $titre = 'Femme : <br />';

if (isset($titre,$mots[0])) echo $titre.'-'.$mots[0].'<br />'; else echo $ligne.'<br />';
} 
Pour avoir les deux premiers mots de ta ligne il faudrait faire
if (isset($titre,$mots[0],$mots[1])) echo $titre.'-'.$mots[0].' '.$mots[1].'<br />'; else echo $ligne.'<br />';
Mais ce dernier code ne fonctionnera correctement que s'il n'y a qu'un seul espace entre le premier mot et le second. Autrement il faudrait faire quelques aménagements pour vérification

par Loulibalou » 19 juin 2008, 22:33

Merci AB !

Dernière question, le résultat obtenu est bien le suivant :
Homme :
- Florien Homme 18ans
Femme :
- Elodie Femme 20 ans
Comment faire en sorte que lorsque les données insérées sont :
Florien Homme 18ans Ville Hobbies
Elodie Femme 20 ans Ville Hobbies
Les informations après le sexe de la personne soient effacées automatiquement lors de l'affichage ?

Ce qui donnerait comme résultat :
Homme :
- Florien Homme
Femme :
- Elodie Femme
Merci.

Re: Problème strpos

par AB » 17 juin 2008, 18:13

Si c'est uniquement pour l'affichage tu peux faire un truc trivial comme ça :
$tri = explode ("-", $données);//tri des lignes

foreach($tri as $ligne)
{
$ligne = trim($ligne);
$titre = null;
if (stripos($ligne,'homme') !== false) $titre = 'Homme :<br/>'; 
else if (stripos($ligne,'femme') !== false) $titre = 'Femme : <br />';
if (isset($titre)) echo $titre.'-'.$ligne.'<br />'; else echo $ligne.'<br />';
}

par katagoto » 17 juin 2008, 17:37

Tu crée 2 tableaux, un homme, l'autre femme
tu explore ton tableau générale et tu te sert de preg_match(), si c'est un homme, il le place dans homme, si c'est un femme elle la place dans femme, puis deux boucles une pour lister le tableau femme, l'autre pour lister le tableau homme :lol:

Problème strpos

par Loulibalou » 17 juin 2008, 16:35

Bonjour à tous,

Je vous explique en quelques mots ce que je souhaite faire.

Une page php où il apparait une champ texte. Dans ce champ texte, j'y insères des données du type :
- Florien Homme 18ans
- Elodie Femme 20 ans
... etc
Ensuite j'envoi à l'aide de la méthode post les données à récupérer. Jusqu'à là pas de soucis !

Maintenant, ce que je souhaiterais faire, c'est un script qui me tri automatiquement mes données. Je m'explique :

Imaginons, les données sont les suivantes :
- Florien Homme 18ans
- Elodie Femme 20 ans
Et bien je souhaiterais que les données récupérées soient triées.

Pour cela j'ai utilisé la fonction explode dans un premier temps pour délimiter les chaines de caractères grâce au tiret.

Code : Tout sélectionner

$tri = explode ("-", $données);
Si j'exécute une boucle while avec un simple echo du style :

Code : Tout sélectionner

$boucle=0; while ( $boucle < count($tri) ) { echo $tri[$boucle]; $boucle++; }
Pas de soucis les données s'affiche bien de la façon suivante :
- Florien Homme 18ans
- Elodie Femme 20 ans
Ce que je souhaiterais, c'est que ces données s'affiche de cette façon :
Homme :
- Florien Homme 18ans
Femme :
- Elodie Femme 20 ans
En clair, qu'à partir du moment où il detecte le mot Homme ou Femme dans une chaîne de caractères, qu'il me le mette en dessous d'homme ou de femme.

J'ai essayé la méthode suivante :

Code : Tout sélectionner

$boucle=0; while ($boucle < count($tri) && ( $trip2 = strpos($tri, "Homme") ) == false ) { echo "".$tri[$boucle]."<br>"; $boucle++; }
Le problème, c'est qu'à chaque fois, ca m'affiche toutes les données et pas seulement les hommes.

Merci de votre aide. :)