[RESOLU] Tableaux en php

Petit nouveau ! | 4 Messages

29 mars 2024, 18:21

Bonjour,

Vieux développeur passé du fortran au pascal, au C, au C#, au VB, j'essaie de me mettre au php avec le peu de neurones qui me restent pour développer un module joomla pour afficher les utilisateurs inscrits et la liste des champs de leur profil (champs optionnels) mais je n'arrive absolument pas à me faire à la logique des tableaux php.

Ce que j'ai fait :
1. Extraction des id d'utilisateurs dans un tableau $users
2. Pour chaque id d'utilisateur, extraction des labels et des valeurs de champs dans un tableau $champs

Ce que je n'arrive absolument pas à faire :
Combiner ces deux tableaux de façon à obtenir

$user1
$label1, $valeur1
$label2, $valeur2
$label3, $valeur3
...
$user2
$label1, $valeur1
$label2, $valeur2
$label3, $valeur3
etc...

Si quelqu'un pouvait éclairer ma lanterne, j'en serais ravi....et d'apprendre en même temps !

Merci

Philippe

Avatar du membre
Mammouth du PHP | 1609 Messages

29 mars 2024, 19:02

Salut phil91, ça serait plus simple de te guider en voyant le code que tu as testé. Sinon c'est quoi qui te dérange avec les tableaux php ?
Développeur web depuis + de 20 ans

Petit nouveau ! | 4 Messages

29 mars 2024, 21:01

Bonjour Saian,

Merci d'avoir réagi.
J'ai par exemple ceci dans le helper de mon module pour récupérer les infos :

for ($i=0;$i<count($users);$i++)
{
$user = $users[$i][0];
$users = ListeHelper::getUsers($db); <- tableau de retour des users
$champsPerso = ListeHelper::getValeurs(0, 0, $user, $db);
$champsPro = ListeHelper::getValeurs(0, 1, $user, $db);
}

$champsPerso et $champsPro sont des tableaux (label, valeur)

Ma question est sûrement d'un niveau de cp mais :
comment est-ce que je récupère toutes ces infos dans un même tableau $liste ?

C'est là que je coince :-)

Merci et désolé d'être aussi mauvais...

Avatar du membre
Mammouth du PHP | 1609 Messages

29 mars 2024, 21:11

Si je comprends bien les 3 méthodes de ListHelper, un exemple de ce que tu peux faire :
$data = [];
$users = ListeHelper::getUsers($db); <- tableau de retour des users
foreach ($users as $user) {
    $data[] = [
        'user' => $user,
        'champsPersos' => ListeHelper::getValeurs(0, 0, $user, $db),
        'champsPros' => ListeHelper::getValeurs(0, 1, $user, $db),
    ];
}
après tu peux boucler sur $data :
foreach ($data as $userData) {
    var_dump($userData['user']);
    foreach ($userData['champsPersos'] as $champs) {
        var_dump($champs);
    }
    foreach ($userData['champsPros'] as $champs) {
        var_dump($champs);
    }
}
Après je sais pas vraiment ce que je fais la si ce n'est te montrer un peu comment ça peut être manipuler/stocker. ^^

Dans l 'absolu rien ne t'empêche de faire les traitements dans la première boucle, tout dépend ce que tu cherches à faire et comment tu veux le faire.

PS : et selon le type de variable qu'est $user (tableau ? objet ?) tu pourrais même stocker les champs persos et champs pros directement dedans.
Développeur web depuis + de 20 ans

Petit nouveau ! | 4 Messages

30 mars 2024, 10:39

Bonjour,
Merci beaucoup pour ces exemples détaillés.
Je vais tester tes réponses aujourd’hui.
Mon but est simplement d’extraire toutes les données des utilisateurs inscrits (champs perso et pro) pour pouvoir en restotuer une liste dispo pour ces utilisateurs.
Le pb c’est que la structure du module joomla fait qu’il vaut mieux ne retourner qu’un seul tableau de données vers le fichier de template d’affichage.
Pour répondre à ta question sur la variable $user, c’est un tableau de retour d’un « select id from table_users » donc un tableau d’id
Merci !
Philippe

Petit nouveau ! | 4 Messages

30 mars 2024, 22:15

Merci pour ces infos qui collent bien et surtout m’apprennent cette @&€$ création/gestion de tableaux. :D
Je vais tâcher de m’en souvenir.
Cdlt
Philippe