Liste PHP

Résolu/Fermé
SOUMIE Messages postés 24 Date d'inscription mercredi 1 octobre 2008 Statut Membre Dernière intervention 2 octobre 2022 - 1 oct. 2022 à 18:59
SOUMIE Messages postés 24 Date d'inscription mercredi 1 octobre 2008 Statut Membre Dernière intervention 2 octobre 2022 - 2 oct. 2022 à 10:09

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

jordane45 Messages postés 38034 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 février 2024 4 621
1 oct. 2022 à 19:27

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


.
Cordialement,
Jordane

0
SOUMIE Messages postés 24 Date d'inscription mercredi 1 octobre 2008 Statut Membre Dernière intervention 2 octobre 2022 1
1 oct. 2022 à 20:38

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
jordane45 Messages postés 38034 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 février 2024 4 621
Modifié le 1 oct. 2022 à 21:12
0
SOUMIE Messages postés 24 Date d'inscription mercredi 1 octobre 2008 Statut Membre Dernière intervention 2 octobre 2022 1
2 oct. 2022 à 10:09

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

Merci beaucoup.

0