Bonjour à tous et à toutes,

Avant de commencer, je précise que je suis débutant en PHP, donc merci par avance pour votre indulgence dans vos réponses.

J'ai un site sous Prestashop et je voudrais, à partir d'un élément fourni par Payzen (en l'occurrence l'id de transaction) obtenir le numéro de la facture correspondante.

A l'aide d'un script PHP que j'ai bidouillé à partir de 2 autres scripts, j'injecte un fichier csv qui a 2 colonnes :

id_transaction
client (avec le nom et prénom du client)

Ce fichier CSV comporte 4 lignes (hors entêtes) et est converti en array.

J'ai réussi à obtenir un résultat, mais le problème c'est que je n'en obtiens qu'un seul, celui correspondant à la dernière ligne de mon array/fichier CSV.

Sauriez-vous pourquoi SVP ?

Voici mon code :
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
$fileName = 'transactions.csv';
$lineHandler = 1; 
$arrayQuery = array();
$fieldSeparator = ";";
$row = 0;
$arrayKeys = array();
$arrayTransaction = array();
 
// IMPORTANT : Customizable vars
$id_transaction = 'id_transaction';
$client = 'client';
 
/**
 * Part 1 : translate csv to array.
 *
*/
 
if (($handle = fopen($fileName, "r")) !== FALSE)
{
    while (($data = fgetcsv($handle, 1000, $fieldSeparator)) !== FALSE) 
    {
		$num = count($data);$row++;
		if($row == 1)
			for ($c=0; $c < $num; $c++) 
			{
				$arrayKeys[] = $data[$c];
			}
		else
		{
			$arrayCursor = array();
			for ($c=0; $c < $num; $c++) 
			{
				$arrayCursor[$arrayKeys[$c]] = $data[$c];
			}
			array_push($arrayTransaction, $arrayCursor);
		}
    }
    fclose($handle);
	/**
	 * Part 2 : array treatment.
	 *
	*/
	foreach ($arrayTransaction as $id_transaction)
	{
		$sql = "
	SELECT op.order_reference
	FROM " . pSQL(_DB_PREFIX_) . "order_payment op
	WHERE op.transaction_id LIKE '%". $id_transaction['id_transaction'] ."'";
	$result = Db::getInstance()->executeS($sql);
	}	
}
foreach($result as $res)
	{
	$sql2 = "
	SELECT o.invoice_number
	FROM " . pSQL(_DB_PREFIX_) . "orders o
	WHERE o.reference = '". $res['order_reference'] ."'";
	$result2 = Db::getInstance()->executeS($sql2);
	}
echo "<ul>";
foreach($result2 as $res2) {
  echo "<li>FC-".$res2['invoice_number']."</li>";
}
echo "</ul>";
D'avance merci pour vos réponses.

Bonne journée