[PHP] repérer 1er pour traitement - explode()

Fermé
fabfabou Messages postés 4 Date d'inscription vendredi 9 mars 2007 Statut Membre Dernière intervention 16 mars 2007 - 16 mars 2007 à 10:54
fabfabou Messages postés 4 Date d'inscription vendredi 9 mars 2007 Statut Membre Dernière intervention 16 mars 2007 - 16 mars 2007 à 15:45
Bonjour !

Je débute en php et j'ai un petit souci : après un explode() sur un champ qui contient plusieurs personnes, j'ai besoin de repérer la première personne, la traiter d'une certaine manière, et de traiter les suivantes d'une autre façon.
Et je ne sais pas comment faire... quelqu'un peut-il me donner un petit coup de pouce ? Pour que je sache quelle piste suivre ?


Je vous donne les détails (ce sera peut-être plus clair que mon petit résumé du début).

A la base, dans la base de donnée, voici le genre de choses qu'on trouve :
"Nom1, Prénom1 / Nom2, Prénom2, / Nom3, Prénom3"

Et j'ai besoin d'afficher ça :
700 aPrénom1 bNom1
701 aPrénom2 bNom2
701 aPrénom3 bNom3

Donc pour le moment, j'ai un script qui sépare les différentes personnes (une personne = prénom + nom), dit quel élément est le prénom, quel élément est le nom.
Et qui obtient :

700 aPrénom1 bNom1
700 aPrénom2 bNom2
700 aPrénom3 bNom3

Par contre, je ne sais pas dire "écrit 700 puis le premier prénom (précédé d'un "a") et le premier nom (précédé d'un "b"), et ensuite, écrit 701 et le prénom et le nom et suivants (précédés d'un "a" ou d'un "b" comme ci-dessus), et pareil pour tous ceux qui suivent : 701 aPrénom bNom."

Je reprends le code de quelqu'un d'autre, et voici ce qu'il avait fait :


$tableau_personnes = array();
/*Recup des personnes*/
$personnes = explode(' / ', $interprete);
/*Séparation nom/prénom*/

foreach($personnes as $personne)
	{
	if(!ereg(",", $personne))
		{
		$nom = $personne;
		$prenom ="";
		array_push($tableau_personnes, $nom, $prenom);
		}
	else
		{
		$decompo = explode(',', $personne);
		array_push($tableau_personnes, $nom = $decompo[0], $prenom = $decompo[1]);
		}

	$listeinterprete = "701  a".$nom." b".$prenom;
	$listeinterprete2 = $listeinterprete2.print_r($listeinterprete, true);
	}



Quelqu'un peut-il éclairer ma lanterne ? En tout cas, merci par avance à tous ceux qui m'aideront !
A voir également:

3 réponses

kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
16 mars 2007 à 11:26
Je ne sais pas si j'ai bien compris ce que tu souhaite, mais je fais comme si tu voulais afficher apres coup ton tableau.
Tu peux ensuite adapter pour faire d'autre traitement que d'afficher les valeur prénom et nom des personnes du tableau.

Voici les qq lignes qui te permettront de le faire :

// --- Traitement du tableau deux cases par deux cases
// --- Puisque le tableau est de la forme suivante : [prenom1,nom1
// --- ,prenom2, nom2, ...]
for ($i=0; $i < sizeof($tableau_personnes); $i+=2 ){
       // --- Si premiere personne -> affiche 700
	if ( $i==0 )
		echo '<BR>700 a'.$tableau_personnes[$i].' b'.$tableau_personnes[$i+1];
       // --- Sinon affiche 701
	else
		echo '<BR>701 a'.$tableau_personnes[$i].' b'.$tableau_personnes[$i+1];
}


Bon courage pour la suite si j'ai répondu à ton probleme, sinon fais nous part du réel pb ^^
0
fabfabou Messages postés 4 Date d'inscription vendredi 9 mars 2007 Statut Membre Dernière intervention 16 mars 2007
16 mars 2007 à 11:40
J'avais pensé à ce genre de chose, que j'avais vu ailleurs sur une autre page du site rattaché à ma base de donnée, mais je n'étais arrivée à rien : je ne suis pas assez familiarisée avec les for, les $i et les tableaux (eh oui, je débute), et je n'ai pas réussi à m'en dépêtrer.
Je vais essayer ça, ça m'a tout l'air de bien correspondre à ce que je veux faire ! Merci merci beaucoup, je te tiens au courant !
0
fabfabou Messages postés 4 Date d'inscription vendredi 9 mars 2007 Statut Membre Dernière intervention 16 mars 2007
16 mars 2007 à 15:45
Après avoir inséré ce code dans le mien, il y a du mieux !

J'obtiens :

700 aNomint1 b Prénomint1
700 aNomint1 b Prénomint1
701 aNomint2 b Prénomint2
700 aNomint1 b Prénomint1
701 aNomint2 b Prénomint2
701 aNomint3 b Prénomint3

(Dans la base de données, j'ai mis ceci pour tester :
Nomint1, Prénomint1 / Nomint2, Prénomint2 / Nomint3, Prénomint3)

Cela se rapproche de ce que je cherche, mais en fait, je voudrais ceci :

700 aNomint1 bPrénomint1
701 aNomint2 bPrénomint2
701 aNomint3 bPrénomint3


Voici le code :

$tableau_personnes = array();
/*Recup des personnes*/
$personnes = explode(' / ', $interprete);
/*Séparation nom/prénom*/
foreach($personnes as $personne)
	{
	if(!ereg(",", $personne))
		{
		$nom = $personne;
		$prenom ="";
		array_push($tableau_personnes, $nom, $prenom);
		}
	else
		{
		$decompo = explode(',', $personne);
		array_push($tableau_personnes, $nom = $decompo[0], $prenom = $decompo[1]);

	
// --- Traitement du tableau deux cases par deux cases
// --- Puisque le tableau est de la forme suivante : [prenom1,nom1
// --- ,prenom2, nom2, ...]

for ($i=0; $i < sizeof($tableau_personnes); $i+=2 )
{
     // --- Si premiere personne -> affiche 700
	if ( $i==0 )
	echo '<BR>700 a'.$tableau_personnes[$i].' b'.$tableau_personnes[$i+1];

     // --- Sinon affiche 701
	else
	echo '<BR>701 a'.$tableau_personnes[$i].' b'.$tableau_personnes[$i+1];
} 

}



Que faut-il faire ?

Merci !
0