Est ce que je peux réduire ce code ?

WRInaute impliqué
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:
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'];		
	}
 
WRInaute discret
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.
 
WRInaute impliqué
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 ?
 
WRInaute discret
Pourquoi tu n'ajoute pas une fonction à l'objet view dans laquelle tu passe l'id et les paramètres ?
Code:
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:
public function Ajoute($id, $text, $url, $tooltip){
        $v = [];
        $v['text'] = $text;
        $v['url'] = $url;
        $v['tooltip'] = $tooltip;
        $this->MesDonnesBienRangees[$id] = $v;
}
 
WRInaute impliqué
Merci pour ta réponse, mais j'ai malheuresement une erreur :

Uncaught Error: Call to undefined method Template::Ajoute() in ...
 
WRInaute discret
Tu as bien modifié la classe de l'objet view ?
Il faut aussi créer la variable $MesDonnesBienRangees dans la class.
 
Discussions similaires
Haut