Consultez la formation SEO spéciale Wordpress
par WebRankInfo / Ranking Metrics

Messages: 460

Enregistré le: 3 Fév 2005

Message le Mar Avr 04, 2017 17:57

Bonjour,

je souhaite savoir si je peux réduire ce code et plus précisement la boucle, car elle comporte plusieurs éléments similaires. J'ai essayé diverses techniques mais sans succès. Merci d'avance
Code: Tout sélectionner
try {
   $test = $pdo->prepare("SELECT id, link_text, link_url, link_tooltip FROM categories");
   $test->execute();
 
   $rowAll = $test->fetchAll(PDO::FETCH_ASSOC);
} catch (PDOException $e){ echo 'Erreur SQL : '. $e->getMessage().'<br/>'; die(); }
 

   foreach ($rowAll as $key => $row)
   {
      $link_text = 'link_text_'.$row['id'];
      $view-> $link_text = $row['link_text'];
      
      $link_url = 'link_url_'.$row['id'];
      $view-> $link_url = $row['link_url'];
      
      $link_tooltip = 'link_tooltip_'.$row['id'];
      $view-> $link_tooltip = $row['link_tooltip'];      
   }
Haut
5 Réponses
Messages: 112

Enregistré le: 22 Fév 2016

Message le Mar Avr 04, 2017 18:31

réduire le contenu du while, pas vraiment.
après, il ne sert à rien de faire une boucle car la valeur des variables affectées sera, après la boucle, celle du dernier enregistrement de la table.
Haut
Messages: 460

Enregistré le: 3 Fév 2005

Message le Mar Avr 04, 2017 18:35

Justement je veux récupérer l'intégralité des enregistrements de la table (4 enregistrements) donc une boucle est forcement nécessaire pour tous les récupérer. Non ?
Haut
Messages: 140

Enregistré le: 17 Oct 2009

Message le Mer Avr 05, 2017 0:59

Pourquoi tu n'ajoute pas une fonction à l'objet view dans laquelle tu passe l'id et les paramètres ?
Code: Tout sélectionner
foreach($rowAll as $key => $row) {
      $view->Ajoute($row['id'], $row['link_text'], $row['link_url'], $row['link_tooltip']);
}

Et plutôt que d'utiliser des variables en vrac, utilise un tableau c'est plus propre.
Code: Tout sélectionner
public function Ajoute($id, $text, $url, $tooltip){
        $v = [];
        $v['text'] = $text;
        $v['url'] = $url;
        $v['tooltip'] = $tooltip;
        $this->MesDonnesBienRangees[$id] = $v;
}
Haut
Messages: 460

Enregistré le: 3 Fév 2005

Message le Mer Avr 05, 2017 20:48

Merci pour ta réponse, mais j'ai malheuresement une erreur :

Uncaught Error: Call to undefined method Template::Ajoute() in ...
Haut
Messages: 140

Enregistré le: 17 Oct 2009

Message le Ven Avr 07, 2017 11:07

Tu as bien modifié la classe de l'objet view ?
Il faut aussi créer la variable $MesDonnesBienRangees dans la class.
Haut

Formation recommandée sur ce thème :

Formation SEO spéciale Wordpress : apprenez à optimiser le référencement naturel d'un site fait avec Wordpress... Formation Ranking Metrics animée par un expert SEO / Wordpress.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.