Remplir un tableau avec une boucle php [Résolu]

webtoys 3 Messages postés jeudi 13 juillet 2017Date d'inscription 17 juillet 2017 Dernière intervention - 13 juil. 2017 à 15:47 - Dernière réponse : webtoys 3 Messages postés jeudi 13 juillet 2017Date d'inscription 17 juillet 2017 Dernière intervention
- 17 juil. 2017 à 13:33
Bonjour,

Je souhaite remplir un tableau de deux colonnes automatiquement grâce à une boucle.
Je galère un truc de fou.

Voici mon code :



public static function getListeCMS()
{
$sqlListeCMS = "SELECT `id_cms` FROM `cms`";
$ListeCMS = Db::getInstance()->ExecuteS($sqlListeCMS);//contient un tableau une colonne avec les ID cms
$monTableau = array('ID','Type');
$i=0;

foreach($ListeCMS as $ArticleCMS){
$type = '';

if(CMS::isCookBook($ArticleCMS)){//renvoie 1 ou 0
$type = 'CookBook';
}else{
if(CMS::isLookBook($ArticleCMS)){//renvoie 1 ou 0
$type = 'LookBook';
}
}
if ($type != ""){
$monTableau[$i]['ID'] = $ArticleCMS;
$monTableau[$i]['Type'] = $type;
$i++;
}
}
print_r($monTableau);
}


à la fin il devrait y avoir un tableau du genre

Colonne ID | colonne Type
------------------------------
1 | CookBook |
2 | LookBook |
3 | LookBook |
4 | LookBook |
12 | CookBook |
14 | CookBook |
21 | LookBook |
------------------------------

Merci pour votre aide, je vais criser lol !!!!



Afficher la suite 

5 réponses

Répondre au sujet
yg_be 4605 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 16 février 2018 Dernière intervention - 13 juil. 2017 à 19:41
+2
Utile
bonsoir, quelques suggestions pour ramer au lieu de galérer:
- lire ceci: http://php.net/manual/fr/function.array.php
- décrire ce qu'affiche
print_r($monTableau);

- avant le foreach, ajouter
print_r($ListeCMS);

- avant
if ($type
, afficher le contenu de $ArticleCMS, de $i, de $type
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de yg_be
jordane45 19973 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 16 février 2018 Dernière intervention - 13 juil. 2017 à 22:23
+1
Utile
Bonjour,

Vu la structure du tableau attendu ... ce code
if ($type != ""){
     $monTableau[$i]['ID'] = $ArticleCMS;
     $monTableau[$i]['Type'] = $type;
     $i++;
    }

ne te donnera pas satisfaction en effet...


si $ArticleCMS est l' ID ...
Dans ce cas Essaye tout simplement :
if (!empty($type)){
  $monTableau[$ArticleCMS] = $type;
}



Ta fonction se résumant en quelques lignes (en utilisant l'écriture ternaire) :
public static function getListeCMS(){
  $sqlListeCMS = "SELECT `id_cms` FROM `cms`";
  $ListeCMS = Db::getInstance()->ExecuteS($sqlListeCMS);//contient un tableau une colonne avec les ID cms
  $monTableau = array('ID','Type');
   
  foreach($ListeCMS as $ArticleCMS){   
    $type = CMS::isCookBook($ArticleCMS) ? 'CookBook' : (CMS::isLookBook($ArticleCMS) ? 'LookBook' : "");
    if (!empty($type)){
     $monTableau[$ArticleCMS] = $type;
    }
  }
  print_r($monTableau);
  return $monTableau;
}

Commenter la réponse de jordane45
webtoys 3 Messages postés jeudi 13 juillet 2017Date d'inscription 17 juillet 2017 Dernière intervention - Modifié par webtoys le 17/07/2017 à 12:16
0
Utile
1
Merci à tous !!
J'ai fait ce qui est noté dans les exemples jordane45 que j'ai adapté et tout fonctionne.

Le contenu de mon tableau est donc celui ci :


Array ( [0] => ID [1] => Type [64] => CookBook [70] => LookBook [71] => LookBook [72] => LookBook [73] => LookBook [75] => LookBook [76] => LookBook [77] => LookBook [78] => LookBook [79] => LookBook [81] => LookBook [82] => CookBook [83] => CookBook [84] => CookBook [85] => CookBook [86] => CookBook [106] => CookBook [120] => CookBook [121] => CookBook [122] => CookBook [123] => CookBook [124] => CookBook [125] => CookBook [128] => CookBook [129] => CookBook [131] => LookBook [134] => CookBook [135] => CookBook [136] => LookBook [137] => CookBook [138] => LookBook [141] => CookBook [142] => LookBook [143] => CookBook [144] => CookBook [145] => LookBook [146] => CookBook [147] => CookBook [148] => CookBook [149] => CookBook [150] => LookBook [151] => LookBook [152] => LookBook [153] => CookBook [156] => LookBook [160] => CookBook [161] => LookBook [163] => LookBook [164] => LookBook [165] => CookBook [166] => CookBook [167] => CookBook [168] => CookBook [169] => LookBook [170] => LookBook [171] => LookBook [172] => CookBook [173] => LookBook [174] => CookBook [175] => CookBook [176] => CookBook [177] => LookBook [178] => LookBook [179] => CookBook [180] => LookBook [181] => CookBook [182] => CookBook [184] => CookBook [186] => LookBook [187] => LookBook [188] => LookBook [191] => LookBook [192] => CookBook [193] => CookBook [194] => CookBook [195] => CookBook [196] => LookBook [197] => CookBook [198] => CookBook [199] => LookBook [200] => CookBook [201] => CookBook [202] => LookBook [203] => LookBook [204] => LookBook [207] => LookBook [208] => LookBook [209] => CookBook [210] => LookBook [211] => CookBook [213] => LookBook [214] => CookBook [215] => LookBook [216] => LookBook [217] => CookBook [218] => LookBook [220] => LookBook [221] => CookBook [222] => LookBook [223] => LookBook [224] => CookBook [225] => LookBook [226] => LookBook [227] => LookBook [228] => CookBook [229] => LookBook [230] => CookBook [231] => LookBook [232] => LookBook [233] => CookBook [235] => CookBook [236] => CookBook [237] => CookBook [238] => CookBook [239] => LookBook [240] => LookBook [241] => CookBook [242] => LookBook [243] => LookBook [244] => CookBook [245] => LookBook [251] => LookBook [252] => LookBook [253] => CookBook )




Je souhaite faire maintenant une fonction qui va faire appel à ce tableau...
je comptais faire ceci :


public static function affichageInspiration(){
$data = CMS::getListeCMS();
//print_r($data);
foreach($data as $ligne){
echo($ligne['ID']."<br />");

}
}


Pour simplement afficher tous les IDs contenu dans le tableau mais je prends pleins d'erreurs. Normal car je me rends compte que 'ID' n'est pas le nom de la colonne. En fait il n'y a tout simplement pas d’entête.
Si je fais

echo $data[253];

Il va me retourner "CookBook". Ok mais pour qu'il le retourne il faut que je connaisse l'ID.

Comment du coup puis-je faire pour afficher les données afin que je puisse les utiliser ??
Car à la base plutot que d'enregistrer l'ID dans le tableau on a enregistré la position...

Comment puis-je m'en sortir ?

Merci beaucoup !
yg_be 4605 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 16 février 2018 Dernière intervention - 17 juil. 2017 à 12:52
peut-être ainsi:

public static function affichageInspiration(){
   $data = CMS::getListeCMS();
   //print_r($data);
   foreach($data as $id=>$ligne){
    echo($id."<br />");

   }
  }
Commenter la réponse de webtoys
webtoys 3 Messages postés jeudi 13 juillet 2017Date d'inscription 17 juillet 2017 Dernière intervention - 17 juil. 2017 à 13:33
0
Utile
Alors grâce à vous et aux documentations trouvées ici et là...

voici mon code qui fonctionne à merveille !

Pour remplir mon tableau à deux colonnes :

foreach($ListeCMS as $ArticleCMS){
$type = CMS::isCookBook($ArticleCMS['id_cms']) ? 'CookBook' : (CMS::isLookBook($ArticleCMS['id_cms']) ? 'LookBook' : "");
if (!empty($type)){
$monTableau[$ArticleCMS['id_cms']] = $type;
array_push($seb, array("ID"=>$ArticleCMS['id_cms'],"Type"=>$type));
}
}
print_r($seb);
echo"<br /><br /><br />";
return $seb;
}



Et pour afficher le tableau et le parcourir

public static function affichageInspiration(){
$data = CMS::getListeCMS();

echo"<br /><br /><br />";
foreach($data as $ligne){
echo('ID : '.$ligne['ID'].' Type: '.$ligne['Type'].'<br />');
}
}


Merci les collègues !
Commenter la réponse de webtoys