Partage
  • Partager sur Facebook
  • Partager sur Twitter

Un foreach unpeu spécial

    13 mai 2022 à 14:45:01

    Bonjour à tous, j'ai un sérieux problème de compréhension. En effet, je suis en train de suivre le cours de Mathéo sur le PHP et MySQL.je suis au niveau du modèle MVC et je ne comprends pas le fonctionnement de la boucle foreach suivante:
    include_once '/home/vhosts/monblog.com/web/model/blog/get_news.php';
    
    	$news = get_news();
    
    	foreach ($news as $key => $new) 
    	{
    		$news[$key]['titre'] = htmlspecialchars($new['titre']);
    		$news[$key]['contenu'] = htmlspecialchars($new['contenu']);
    		$news[$key]['good_date'] = htmlspecialchars($new['good_date']);
    	}
    
    	include_once '/home/vhosts/monblog.com/web/view/blog/homepage.php';
    sachant que $news vient viens d'une fontions get_news et le suivant:
    include_once '/home/vhosts/monblog.com/web/include/db_connect.php';
    				
    		function get_news()
    		{
    			// code...
    		global $db;
    	$sql = 'SELECT id, titre, contenu, DATE_FORMAT(date_creation, \'%d/%m/%Y à %Hh%imin%ss\') AS good_date FROM billets ORDER BY id DESC';
    
    	$reply = $db->query($sql);
    
    	$news = $reply->fetchAll();
    
    	return $news;
    
           }

    et pour etre afficher c'est grace a ce code:

    foreach ($news as $new) 
    {
    	// Affichage des dernier billets 
    ?>
    		<div class="news" >
    			<h3>
    				<?php echo $new['titre'] ." le ".$new['good_date']; ?>
    			</h3>
    			<p>
    				<?php echo $new['contenu']; ?><br>
    				<a href="commentaires.php?id=<?php echo $new['id']; ?>">Commmentaires</a>
    			</p>
    		</div>
    
    <?php
           }

    Ce code fonctione tres bien mais je n'ai pas tres bien compris ce qui c'est passer quelqu'un pourrait m'expliquer svp

    Soit dite en passant j'ai un problème avec mes include je suis obligé de  donner en paramètre le chemin complets du fichier comment régler ça svp

    Merci d'avance pour vos éventuelles s'aide.

    • Partager sur Facebook
    • Partager sur Twitter
      13 mai 2022 à 15:52:06

      Salut, 

      Pour ce qui est de cette boucle 

        $news = get_news();
       
          foreach ($news as $key => $new)
          {
              $news[$key]['titre'] = htmlspecialchars($new['titre']);
              $news[$key]['contenu'] = htmlspecialchars($new['contenu']);
              $news[$key]['good_date'] = htmlspecialchars($new['good_date']);
          }

      Je dirai qu'elle transforme ce qui est contenu dans le tableau $news. 

      Sachant que htmlspecialchars convertie le caractères spéciaux en entités html ca donne un truc comme ça 

      <?php
      $new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
      echo $new; // donnera ça  &lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;
      ?>

      Dans ton code imaginons : 

      $news = [ 
          "hello"=> [
              "titre" =>"<a href='test'>Test</a>",
          ] 
      ]

      cela affichera un lien "test" si tu fait un echo de $news["hello"]["titre"]

      après la fonction si tu fais un echo de la même chose tu auras "<a href='test'>Test</a>"

      (sachant que tu tu tapes

      &lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt

      dans ton IDE cela équivaut à <a href='test'>Test</a>

      Concernant les includes tu peux faire un __DIR__ . "ton chemin" 

      -
      Edité par maximeLassort 13 mai 2022 à 15:54:34

      • Partager sur Facebook
      • Partager sur Twitter
        13 mai 2022 à 22:20:56

        $news semble avoir cette structure:
        news: [
            'key1': [
                 'title': ...
                 'contenu': ...
                 'gooddate': ...
            ],
            'key2': [
                 'title': ...
                 'contenu': ...
                 'gooddate': ...
            ],
            'key2': [
                 'title': ...
                 'contenu': ...
                 'gooddate': ...
            ],
        ..
        ]
        
        Maintenant:
          foreach ($news as $key => $new)
          {
              $news[$key]['titre'] = htmlspecialchars($new['titre']);
              $news[$key]['contenu'] = htmlspecialchars($new['contenu']);
              $news[$key]['good_date'] = htmlspecialchars($new['good_date']);
          

        foreach ($news as key => $new) dit en quelque sorte Pour chaque ligne(element) de $news ayant pour cle $key et pour contenu $new...

        Conformement a l'esquisse precedent, chaque element de $new est composé de:

            'key1': [   // Une cle comme identificateur pour son parent
             // et son contenu, qui ici est un tableau
                 'title': ...
                 'contenu': ...
                 'gooddate': ...
            ]

        $news[$key]['titre'] = htmlspecialchars($new['titre']); fera donc Le champ 'titre' de la  ligne(element) avec pour cle $key prendra la valeur...
         

        Pareil pour les autres instructions.

        Bonsoir

        • Partager sur Facebook
        • Partager sur Twitter
          14 mai 2022 à 4:03:25

          maximeLassort a écrit:

          Salut, 

          Pour ce qui est de cette boucle 

            $news = get_news();
           
              foreach ($news as $key => $new)
              {
                  $news[$key]['titre'] = htmlspecialchars($new['titre']);
                  $news[$key]['contenu'] = htmlspecialchars($new['contenu']);
                  $news[$key]['good_date'] = htmlspecialchars($new['good_date']);
              }

          Je dirai qu'elle transforme ce qui est contenu dans le tableau $news. 

          Sachant que htmlspecialchars convertie le caractères spéciaux en entités html ca donne un truc comme ça 

          <?php
          $new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
          echo $new; // donnera ça  &lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;
          ?>

          Dans ton code imaginons : 

          $news = [ 
              "hello"=> [
                  "titre" =>"<a href='test'>Test</a>",
              ] 
          ]

          cela affichera un lien "test" si tu fait un echo de $news["hello"]["titre"]

          après la fonction si tu fais un echo de la même chose tu auras "<a href='test'>Test</a>"

          (sachant que tu tu tapes

          &lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt

          dans ton IDE cela équivaut à <a href='test'>Test</a>

          Concernant les includes tu peux faire un __DIR__ . "ton chemin" 

          -
          Edité par maximeLassort il y a environ 12 heures


          Merci pour ton message mais j'ai pas de véritable problème avec htmlspecialchars() mon problème c'etait de savoirs quel genre de tableau est retourné par fetchAll() et comment le foreach fait pour le rendre plus simple

          En ce qui concerne __DIR__ ca ne règle tout simplement pas mon problèmes

          • Partager sur Facebook
          • Partager sur Twitter
            14 mai 2022 à 9:26:57

            NouemssiIsmael a écrit:

            maximeLassort a écrit:

            Salut, 

            Pour ce qui est de cette boucle 

              $news = get_news();
             
                foreach ($news as $key => $new)
                {
                    $news[$key]['titre'] = htmlspecialchars($new['titre']);
                    $news[$key]['contenu'] = htmlspecialchars($new['contenu']);
                    $news[$key]['good_date'] = htmlspecialchars($new['good_date']);
                }

            Je dirai qu'elle transforme ce qui est contenu dans le tableau $news. 

            Sachant que htmlspecialchars convertie le caractères spéciaux en entités html ca donne un truc comme ça 

            <?php
            $new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
            echo $new; // donnera ça  &lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;
            ?>

            Dans ton code imaginons : 

            $news = [ 
                "hello"=> [
                    "titre" =>"<a href='test'>Test</a>",
                ] 
            ]

            cela affichera un lien "test" si tu fait un echo de $news["hello"]["titre"]

            après la fonction si tu fais un echo de la même chose tu auras "<a href='test'>Test</a>"

            (sachant que tu tu tapes

            &lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt

            dans ton IDE cela équivaut à <a href='test'>Test</a>

            Concernant les includes tu peux faire un __DIR__ . "ton chemin" 

            -
            Edité par maximeLassort il y a environ 12 heures


            Merci pour ton message mais j'ai pas de véritable problème avec htmlspecialchars() mon problème c'etait de savoirs quel genre de tableau est retourné par fetchAll() et comment le foreach fait pour le rendre plus simple

            En ce qui concerne __DIR__ ca ne règle tout simplement pas mon problèmes


            Bonjour,

            Tu peux faire des var_dump($variable); pour voir tous les détails d'une variable et entre autre, le contenu.

            Concernant le chemin contenu dans l'include, il doit obligatoirement être entier (du début de ton système vers ton fichier).

            Pour éviter ça : _DIR_ -> retourne le chemin de ton fichier, sans ton fichier, par exemple _DIR_ . '/mon-fichier.php'

            • Partager sur Facebook
            • Partager sur Twitter

            Un foreach unpeu spécial

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown