Signaler

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

Posez votre question webtoys 3Messages postés jeudi 13 juillet 2017Date d'inscription 17 juillet 2017 Dernière intervention - Dernière réponse le 17 juil. 2017 à 13:33 par webtoys
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 !!!!



Utile
+1
plus moins
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é ?  
Donnez votre avis
Utile
+1
plus moins
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;
}

Cette réponse vous a-t-elle aidé ?  
Donnez votre avis
Utile
+0
plus moins
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 3334Messages postés lundi 9 juin 2008Date d'inscription ContributeurStatut 19 septembre 2017 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 />");

   }
  }
Répondre
Donnez votre avis
Utile
+0
plus moins
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 !
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !