Liste PHP

Résolu
SOUMIE Messages postés 24 Statut Membre -  
SOUMIE Messages postés 24 Statut Membre -

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. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     

    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...


    0
  2. SOUMIE Messages postés 24 Statut Membre 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'];
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      0
  3. SOUMIE Messages postés 24 Statut Membre 1
     

    Encore une fois, un grand merci, c'est parfait !

    Merci beaucoup.

    0