Liste PHP

Résolu

Bonjour à tous,

Je voudrais savoir comment m'y prendre pour faire plus simple. En effet, j'ai environ 300 mails et j'imagine qu'il y a beaucoup plus simple que de faire ce que je fais trois cents fois.

<?php
$pre_classement_mail = "SELECT mail FROM membre";
$connect_classement_mail = $connect->query($pre_classement_mail);
while ($classement_mail = mysqli_fetch_array($connect_classement_mail))
{
$mail[] = $classement_mail['mail'];
}

$liste_mail = $mail[0].','.$mail[1].','.$mail[2].','.$mail[3].','.$mail[4].','.$mail[5].','.$mail[6].','.$mail[7];
?>

Je vous en remercie d'avance.

3 réponses

  1. Modérateur

    Bonjour,

    Il y aurait plusieurs choses à améliorer dans ton code.

    Donc, déjà, au lieu de faire une boucle tel que tu le fais pour juste reconstruire un array ensuite, ill existe la méthode fetchAll()

    https://www.php.net/manual/fr/mysqli-result.fetch-all.php

    Ensuite, pour fusionner un array, tu aurais pu faire une boucle qui fasse la concaténation au lieu de l'écrire à la main ( surtout que cette liste est sûrement vouée à évoluer.. puisqu'elle provient d'une base de donnée.

    Il existe aussi des fonctions pour manipuler les array, en utilisant, par exemple, la fonction implode

    par exemple :

    // Use implode() function to join
    // comma in the array
    $List = implode(', ', $Array);

    Et puis encore plus simple ... directement dans ta requête, faire un GROUP_CONCAT

    https://sql.sh/fonctions/group_concat

    ainsi, la concaténation sera déjà faite... et là .. plus besoin de boucle... ni de fusionner un array...


    1. Merci beaucoup jordane45 !! Je ne connaissais pas du tout GROUP_CONCAT.  C'est top comme fonction sql. Cependant, j'ai un nouveau problème. Je n'arrive pas à extraire plus de 1024 caractères. Je ne vois pas du tout pourquoi ?

      Si tu as une idée je suis preneur.

      $pre_classement_mail = "SELECT mail, GROUP_CONCAT(mail) as liste FROM praticien";
      $connect_classement_mail = $connect->query($pre_classement_mail);
      $classement_mail = mysqli_fetch_array($connect_classement_mail);
      
      $mail_liste = $classement_mail['liste'];
    2. Encore une fois, un grand merci, c'est parfait !

      Merci beaucoup.