Pourquoi je n'ai que la dernière ligne d'un array?
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:
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 ;)