Forum Clubic

[RESOLU]problème de double foreach PHP - fonction strtr pour les pros

Bonjour à tous,
je suis en train de réaliser un script pour la création de fiches unimarcs (fiches bibliothécaires), et je me heurte à un problème assez important :
il faut que je décompose une série de nom comme ceux ci :

pour la transformer comme cela :

Je pensai au départ faire une éspèce de division des mots, en séparant ceux qui contiennent une , et ceux qui n’en contiennent pas, puis remanier tout ça, mais je me heurte (et oui encore une fois et ça fait mal :paf: ) alors au problème du dernier nom.
C’est peut-être plus un problème de logique que de programmation au final.

Enfin, j’offre un BR à celui qui arrivera à résoudre ce problème (le BR c’est bon mangez en ! :miam: )


$tableau_personnes = array();
$string = 'Mohammed Metina, Cyril Lecomte, Jacques Bastide,  Jeanne Dhivers';
//Recup des personnes
$personnes = explode(', ', $string);
//Séparation nom/prénom
foreach($personnes as $personne)
{
$decompo = explode(' ', $personne);
$tableau_personnes[] = ('prenom' => $decompo[0], 'nom' => $decompo[1]);
}

Déjà, ca devrait tout te mettre dans un tableau $tableau_personnes le nom et le prénom de chacun ^^

ok, ça marche presque, merci pour ton aide, par contre ta mise en tableau a pas l’air de fonctionner, mais j’ai fait un :

Qui a bien marché,
mais pourquoi n’as tu pas mis la méthode array_push ???

Je trouves ca beacoup moins clair a la lecture ^^

Et comment vais-je pouvoir faire un BR sur ta fleur :stuck_out_tongue: ???

Fallais pas t’engager ^^

Ton BR est en prépa, j’ai une petite idée là dessus, par contre maitre Jedi, j’aurais besoin d’un autre conseil,
ce mini script est inclus dans un script plus gros :

Je récupere des ids dans une BDD, je les traite, et j’en sors un fichier texte. Pour cela, j’ai modifié la fin de la commande pour qu’elle ressemble à ça :

Le soucis, c’est qu’il ne me retourne que le dernier acteur en double, ce qui est logique dans un sens, vu que je ferme mon foreach.Si je le ferme à la fin du script, il va me sortir une fiche pour chaque acteur (ce qui est logique), or il doit me sortir une fiche pour chaque ID (qui sont aussi traités dans un foreach).

En fait, ce qu’il me faudrait, c’est que le résultat de $listeacteurs à la fin de cette boucle foreach puisse être mise en mémoire et utilisée pour le reste du script (après la } ).

Suis-je assez compréhensible?

J’ai rien capter à ton bazar :heink:, tu peux pas expliquer simplement ce que tu veux faire à partir de ta BDD, parce que là ton code avec des variables de variables de variables, c’est pas super lisible ^^

En fait, pour être plus clair, j’ai besoin de récuperer plusieurs ids dans une base, et après de lancer un traitement sur ces ids (je récupere les différentes infos du film, genre, réalisateur, editeur, …), et j’en sors ce qu’on appelle une fiche unimarc. Je l’ai déjà fait avec un autre type de média (les cd audios), où les noms sont déjà dans le bon sens.
Pour te montrer le résultat d’un fiche unimarc (simplifiée) :

C’est ignoble, mais c’est normal, c’est validé par la BNF :stuck_out_tongue: .
Donc pour faire ce genre de chose, j’ai déjà un :

foreach ID -> traite moi tout ça et mets le moi au format unimarc.
donc là, j’ai besoin de mon deuxième foreach pour qu’il me mette mes noms d’acteurs au bon format, or, c’est là que ça coince, c’est que mon $listeacteurs n’est actif que dans le foreach que tu m’as fait (plus après la } ).

En fait, j’ai un :

et donc, dans mon $texteaecrire, je ne trouve pas le résultat de $listeacteurs (il me sert qu’un seul acteur, le dernier mis deux fois).

J’ai relevé une faille dans ton script Dalaï Lama, lorsque le nom comporte trois noms comme Arthur “Conan Doyle”, il ne prends pas le troisième nom (mais c’est pas trop grave, il suffira de l’ajouter manuellement), par contre j’ai toujours pas trouvé la solution à mon problème de foreach imbriqué…

C’est bon, c’était une bétise de ma part au niveau du print_r :
il fallait faire un

avec à la fin de mon traitement de script

afin qu’il ne m’ajoute pas les nouveaux noms aux anciens.
Merci Dalaï Lama, quand j’aurais le temps je te filerai ton BR bien mérité ! :stuck_out_tongue: