[RESOLU] Récupération dans variable incrémentale d'une requête MYSQL

Petit nouveau ! | 3 Messages

17 juil. 2013, 18:50

Bonjour à tous,

Je bloque sur un point concernant une requête sur mysql.

La synoptique est la suivante :
Je dois récupérer dans une table les emails associés à un ID. Nota : il y a un un nombre indéterminé d'emails.

IMPORTANT : seul un des emails est désigné comme email principal et c'est lui que je vais utiliser pour mettre en destinataire principal ! Le ou les autres seront en copies.

La tronche de ma table_email :
ID | Email | Email_Principal
12 email1 1
12 email2 0
12 email3 0

IMPORTANT / RAPPEL : Lorsque je fais ma requête, je ne sais donc pas combien d'email je vais récupérer !!!

Mon code :
------------------------------------------------------------------
$mysqli = new mysqli("localhost", "user", "pw", "database");
if ($mysqli->connect_errno) {
echo "Echec lors de la connexion à MySQL : (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;}

if (!($stmt = $mysqli->prepare("
SELECT email,email_principal from table_email where ID ='12'")
{
echo "Echec lors de la préparation de la requête : (" . $mysqli->errno . ") " . $mysqli->error;
}

if (!$stmt->execute()) {
echo "Echec lors de l'exécution de la requête : (" . $stmt->errno . ") " . $stmt->error;
}

if (!($res = $stmt->get_result())) {
echo "Echec lors de la récupération du jeu de résultats : (" . $stmt->errno . ") " . $stmt->error;
}

for ($row_no = ($res->num_rows - 1); $row_no >= 0; $row_no--) {
$res->data_seek($row_no);
var_dump($res->fetch_assoc());
}
$res->close();
$mysqli->close();

-------------------------------------------
Le hic de mon code c'est que j'obtiens un ARRAY que je ne sais pas exploiter.

En effet, j'utilise PHPMAILER pour ceux qui connaissent et je souhaite envoyer, pour reprendre notre exemple, un email à email1 et mettre tous les autres en copies ... et je rappel que ne ne sais pas par avance combien de personnes en copies je vais avoir

Quelqu'un à une idée svp ?

Moultes thanks :lol:

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

17 juil. 2013, 23:19

Salut,

Voici le corrigé :
$mysqli = new mysqli("localhost", "user", "pw", "database");
if ($mysqli->connect_errno) {
echo "Echec lors de la connexion à MySQL : (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;}

if (!($stmt = $mysqli->prepare("
SELECT email,email_principal from table_email where ID ='12'")
{
echo "Echec lors de la préparation de la requête : (" . $mysqli->errno . ") " . $mysqli->error;
}

if (!$stmt->execute()) {
echo "Echec lors de l'exécution de la requête : (" . $stmt->errno . ") " . $stmt->error;
}

if (!($res = $stmt->get_result())) {
echo "Echec lors de la récupération du jeu de résultats : (" . $stmt->errno . ") " . $stmt->error;
}

//lecture de la liste des emails trouvés en vue de remplir les variables $A et $CC
$A = ''; $CC = '';
while ($row = $res->fetch_assoc()) {
  //l'email principal dans la rubrique "A" sinon dans "CC"
   if ( $row['email_principal']==1 ) { $A .= $row['email'].';'; } else  { $CC .= $row['email'].';'; } 
}
$res->close();
$mysqli->close();

//La suite sera l'envoi du message en utilisant les variables $A et $CC
...
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Petit nouveau ! | 3 Messages

18 juil. 2013, 00:29

wow t'assures un max !

Je me suis fait des nœuds à la tête et je n'avais pas vu que l'on pouvait le traiter aussi simplement que ça !

Merci !

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

18 juil. 2013, 21:24

Modération :
Si ta question est résolue, pense à l'indiquer pour que les futures personnes qui voudront consulter ce sujet sachent qu'il contient une solution.
Tu peux réaliser cette opération toi-même en cliquant sur le bouton vert "Mettre le sujet en tant que Résolu" situé en haut de la page à côté du titre du sujet.
Il en faut peu pour être heureux ......