[PHP/MYSQL]
Résolu/Fermé
Bonjour,
J'ai un formulaire de recherche, ou je peux faire un multiselect.
Je veux qu'après avoir sélectionné ces personnes, le serveur me renvoie les adresses mails correspondantes.
Pour chaque noms renvoyés par mon formulaire, il faut qu'il m'envoie l'@ mail correspondante.
Quelqu'un peut il m'aider?
Merci d'avance
J'ai un formulaire de recherche, ou je peux faire un multiselect.
Je veux qu'après avoir sélectionné ces personnes, le serveur me renvoie les adresses mails correspondantes.
Pour chaque noms renvoyés par mon formulaire, il faut qu'il m'envoie l'@ mail correspondante.
Quelqu'un peut il m'aider?
Merci d'avance
A voir également:
- [PHP/MYSQL]
- Easy php - Télécharger - Divers Web & Internet
- Mysql community server - Télécharger - Bases de données
- Mysql gratuit ou payant - Forum MySQL
- Expert php pinterest - Télécharger - Langages
- Php natif - Forum PHP
6 réponses
Utilisateur anonyme
Modifié par baladur13 le 4/02/2011 à 17:40
Modifié par baladur13 le 4/02/2011 à 17:40
Bonjour,
Tout dépend de la structure de votre table MySQL, on l'avoir ?
Votre formulaire de recherche, c'est une balise SELECT dans laquelle il y a les noms de personnes, ou TEXT dans lequel les noms sont séparés ? Je n'ai pas compris avec le multiSelect désolé...
Mais au final le truc sera du genre :
$sql = 'select mail from table where nom in (';
ici traitement sur les données postées du formulaire pour compléter $sql
$sql .=') order by mail';
try {
$objBase = new PDO(DSN, USER, PWD);
$mails = $objBase->query($sql);
} catch (PDOException $e) {
exit;
}
foreach($mail as $mail) {
echo $mail;
}
Signature non conforme - Publicité supprimée Modération CCM
Tout dépend de la structure de votre table MySQL, on l'avoir ?
Votre formulaire de recherche, c'est une balise SELECT dans laquelle il y a les noms de personnes, ou TEXT dans lequel les noms sont séparés ? Je n'ai pas compris avec le multiSelect désolé...
Mais au final le truc sera du genre :
$sql = 'select mail from table where nom in (';
ici traitement sur les données postées du formulaire pour compléter $sql
$sql .=') order by mail';
try {
$objBase = new PDO(DSN, USER, PWD);
$mails = $objBase->query($sql);
} catch (PDOException $e) {
exit;
}
foreach($mail as $mail) {
echo $mail;
}
Signature non conforme - Publicité supprimée Modération CCM
En fait mon select renvoi les id de la table
ma table a 3 champs id , noms , et adressemail
Ce que je veux c'est que pour chaque id envoyé par mon form, que ça aille chercher dans ma table les adresses mails correspondante.
j'ai essayé avec foreach mais j'ai pas réussi.
ma table a 3 champs id , noms , et adressemail
Ce que je veux c'est que pour chaque id envoyé par mon form, que ça aille chercher dans ma table les adresses mails correspondante.
j'ai essayé avec foreach mais j'ai pas réussi.
Utilisateur anonyme
Modifié par baladur13 le 4/02/2011 à 17:40
Modifié par baladur13 le 4/02/2011 à 17:40
Mettons que la balise <SELECT> aie pour name='select[]', que votre formulaire soit posté (<form method='post'>), que la table contenant les mail soit table
Le code PHP pour récupérer les valeurs des mails serait celui-ci :
$sql = 'select mail from table where id in ('.implode(',' , $_POST['select']).') order by mail';
try {
$objBase = new PDO(DSN, USER, PWD);
$mails = $objBase->query($sql);
} catch (PDOException $e) {
exit;
}
foreach($mail as $mail) {
echo $mail;
}
Signature non conforme - Publicité supprimée Modération CCM
Le code PHP pour récupérer les valeurs des mails serait celui-ci :
$sql = 'select mail from table where id in ('.implode(',' , $_POST['select']).') order by mail';
try {
$objBase = new PDO(DSN, USER, PWD);
$mails = $objBase->query($sql);
} catch (PDOException $e) {
exit;
}
foreach($mail as $mail) {
echo $mail;
}
Signature non conforme - Publicité supprimée Modération CCM
J'ai essayé et ça ne fonctionne pas.
Au départ j'étais parti sur ceci :
$select=$_POST['select'];
$res=mysql_query ("SELECT mail FROM users WHERE id='$select'");
foreach ($select as $select)
{ echo $res;
};
Et ça m'affichait toujours "Resource id #5"
Au départ j'étais parti sur ceci :
$select=$_POST['select'];
$res=mysql_query ("SELECT mail FROM users WHERE id='$select'");
foreach ($select as $select)
{ echo $res;
};
Et ça m'affichait toujours "Resource id #5"
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai enfin réussi.
$select=$_POST['select'];
$rez = implode(',', $select);
$mysql = mysql_query("SELECT mail FROM users WHERE id IN($rez) ");
while ($row=mysql_fetch_array($mysql)){
echo $row['mail'];
echo '<br/>';
};
C'était tout simple en fait et j'ai vraiment galéré! Merci pour ton aide sans toi je n'aurai jamais pensé au "IN".
:p
$select=$_POST['select'];
$rez = implode(',', $select);
$mysql = mysql_query("SELECT mail FROM users WHERE id IN($rez) ");
while ($row=mysql_fetch_array($mysql)){
echo $row['mail'];
echo '<br/>';
};
C'était tout simple en fait et j'ai vraiment galéré! Merci pour ton aide sans toi je n'aurai jamais pensé au "IN".
:p
Utilisateur anonyme
Modifié par baladur13 le 4/02/2011 à 17:40
Modifié par baladur13 le 4/02/2011 à 17:40
Oui logique et désolé j'ai mis des coquilles dont mon code
écrit ceci à la place de ton code
// attention select est un tableau de valeurs
$res=mysql_query ("SELECT mail FROM users WHERE id in ('.implode(',' , $_POST['select']).')
while ($row = mysql_fetch_assoc($res)) {
echo $row['mail'].'<br/>';
}
J'explique, tout d'abord tu fais bien un mysql_connect quelque part avant ça, sinon ça ne marchera pas. Il faut se connecter à la base.
Ensuite tu reçois dans $_POST['select'] un tableau (array) de id
implode(',',...) va transformer ce tableau en chaine de caractère avec les id séparés par des virgules 2,4,6 par exemple
donc la requête devient select mail from users where id in (2,4,6) ok ?
Ta requête va donc renvoyer plusieurs lignes $res, n'est qu'une ressource système inexploitable via echo, rien à voir donc, pour parcourir les valeurs de ta requête tu dois utiliser mysql_fetch qui te renvoie un tableau associatif, $row ici, contenant tous les champs demandés dans ta requête, ici juste 'mail'
Tu boucle avec un while jusqu'à ce que mysql_fecth renvoie false, c'est à dire plus de valeur
$row['mail'] contient le mail pour une ligne donnée
regarde ce lien pour plus d'info https://www.php.net/manual/fr/function.mysql-query.php
Signature non conforme - Publicité supprimée Modération CCM
écrit ceci à la place de ton code
// attention select est un tableau de valeurs
$res=mysql_query ("SELECT mail FROM users WHERE id in ('.implode(',' , $_POST['select']).')
while ($row = mysql_fetch_assoc($res)) {
echo $row['mail'].'<br/>';
}
J'explique, tout d'abord tu fais bien un mysql_connect quelque part avant ça, sinon ça ne marchera pas. Il faut se connecter à la base.
Ensuite tu reçois dans $_POST['select'] un tableau (array) de id
implode(',',...) va transformer ce tableau en chaine de caractère avec les id séparés par des virgules 2,4,6 par exemple
donc la requête devient select mail from users where id in (2,4,6) ok ?
Ta requête va donc renvoyer plusieurs lignes $res, n'est qu'une ressource système inexploitable via echo, rien à voir donc, pour parcourir les valeurs de ta requête tu dois utiliser mysql_fetch qui te renvoie un tableau associatif, $row ici, contenant tous les champs demandés dans ta requête, ici juste 'mail'
Tu boucle avec un while jusqu'à ce que mysql_fecth renvoie false, c'est à dire plus de valeur
$row['mail'] contient le mail pour une ligne donnée
regarde ce lien pour plus d'info https://www.php.net/manual/fr/function.mysql-query.php
Signature non conforme - Publicité supprimée Modération CCM