Question
Je teste la MassPay de Paypal en utilisant leur « MassPay NVP exemple et j'avoir de la difficulté à essayer de modifier le code afin que les données entrées de ma base de données MySql.
En gros je table utilisateur MySql qui contient l'adresse e-mail, état du paiement (payé, impayé) et l'équilibre.
CREATE TABLE `users` (
`user_id` int(10) unsigned NOT NULL auto_increment,
`email` varchar(100) collate latin1_general_ci NOT NULL,
`status` enum('unpaid','paid') collate latin1_general_ci NOT NULL default 'unpaid',
`balance` int(10) NOT NULL default '0',
PRIMARY KEY (`user_id`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci
Données:
1 test1@example.net paid 100
2 test2@example.net unpaid 11
3 test3@example.net unpaid 20
4 test4@example.net unpaid 1
5 test5@example.net unpaid 20
6 test6@example.net unpaid 15
Je puis ai créé une requête qui sélectionne les utilisateurs avec un solde impayé de 10 $ et plus:
$conn = db_connect();
$query=$conn->query("SELECT * from users WHERE
balance >='10'
AND status = ('unpaid')");
Ce que je voudrais est pour chaque enregistrement de la requête retourné pour lui pour remplir le code ci-dessous:
Maintenant, le code que je crois que je dois modifier comme suit:
for($i = 0; $i < 3; $i++) {
$receiverData = array( 'receiverEmail' => "user$i@paypal.com",
'amount' => "example_amount",);
$receiversArray[$i] = $receiverData;
}
Cependant, je ne peux pas le faire au travail, je l'ai essayé d'utiliser mysqli_fetch_array puis remplacé « user$i@paypal.com » avec $ row [ « email »] et « example_amount » avec row [ « équilibre »] dans diverses méthodes de codage, mais il ne fonctionne pas. Aussi je besoin de boucle cependant de nombreuses lignes qui ont été extraites de la requête comme <3 dans la boucle ci-dessus.
Ainsi, le résultat final Je cherche est la chaîne nvpStr $ pour passer quelque chose comme ceci:
$nvpStr = "&EMAILSUBJECT=test&RECEIVERTYPE=EmailAddress&CURRENCYCODE=USD&L_EMAIL0=$test2@example.net&L_Amt=11&L_EMAIL1=$test3@example.net&L_Amt=11&L_EMAIL2=$test3@example.net&L_Amt=20&L_EMAIL3=$test5@example.net&L_Amt=20&L_EMAIL0=$test6@example.net&L_Amt=15";
Merci
La solution
J'ai résolu le problème après quelques essais et erreurs:
<?php
$nvpStr="&EMAILSUBJECT=$emailSubject&RECEIVERTYPE=$receiverType&CURRENCYCODE=$currency";
$conn = db_connect();
$query=$conn->query("SELECT email,balance from users WHERE
balance >='10'
AND status = ('unpaid')");
$i = 0;
while ($i <= mysqli_fetch_row) {
while($row = mysqli_fetch_object($query)) {
$nvpStr.="&L_EMAIL$i=$row->email&L_Amt$i=$row->balance";
$i++;
}
}
?>