Bonjour et merci à pour ce très bon forum.

D'habitude j'ai toujours trouvé mes réponses sans poster mais là ça bloque. Désolé de vous embêter avec une question qui peut vous paraître de base mais ça fait deux jours que je galère dessus.

J'ai monté un site avec paiement en ligne paypal. Paypal me renvoie des variables à la fin de la transaction pour que je puisse updater ma base de données.

Mon problème est que je sais l'updater depuis un formulaire qui va sur une autre page, mais pas en script automatique.
Voilà la page qui récupère les variables de paypal:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php
// read the post from PayPal system and add 'cmd'
$req = 'cmd=_notify-validate';
 
foreach ($_POST as $key => $value) {
$value = urlencode(stripslashes($value));
$req .= "&$key=$value";
}
 
// post back to PayPal system to validate
$header .= "POST /cgi-bin/webscr HTTP/1.0\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
$fp = fsockopen ('www.paypal.com', 80, $errno, $errstr, 30);
 
// assign posted variables to local variables
$item_name = $_POST['item_name'];
$item_number = $_POST['item_number'];
$payment_status = $_POST['payment_status'];
$payment_amount = $_POST['mc_gross'];
$payment_currency = $_POST['mc_currency'];
$txn_id = $_POST['txn_id'];
$receiver_email = $_POST['receiver_email'];
$payer_email = $_POST['payer_email'];
 
if (!$fp) {
// HTTP ERROR
} else {
fputs ($fp, $header . $req);
while (!feof($fp)) {
$res = fgets ($fp, 1024);
if (strcmp ($res, "VERIFIED") == 0) {
// check the payment_status is Completed
// check that txn_id has not been previously processed
// check that receiver_email is your Primary PayPal email
// check that payment_amount/payment_currency are correct
// process payment
}
else if (strcmp ($res, "INVALID") == 0) {
// log for manual investigation
}
}
fclose ($fp);
}
 
?>
Et là je ne sais pas où insérer ni comment formuler mon update de la base.

Je voudrais ça mais ça marche pas:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
UPDATE commande SET ETAT = 8 WHERE ETAT = 9 SELECT *
FROM commande
WHERE commande.IDCLIENT = colname

colname étant = à Si vous avez la solution ou si vous pouvez m'aiguiller concrètement, ce serait très très gentil.

D'avance merci!