Buonasera a tutti, dal titolo non riesco a spiegare bene, ci provo qua.
Sto lavorando con le WOOCOMMERCE API ed in localhost mi scarico a chiamata un JSON a cui faccio il decode, su cui poi c'è un cliclo foreach che genera le righe di una tabella in cui io mi stampo solo i campi che mi servono. STampo in totale 100 righe.
Ultimamente mi si sta creando la necessita di prendere solo alcune di queste info e di generare un CSV mappato che poi vado a caricare su un sito che mi carica le distinte di spedizione.
Io ho pensato di racchiudere la tabella in un form con method="post" e action="createcsv.php" che dovrà ricevere le info inviate mediante post.
Ho messo nel primo<td> un checkbox che mi servirà a spuntare la riga della quale io voglio inviare le info. Come faccia ad inviare le info solo di queste righe selezionate?
Io ho provato a vare cosi, ma vedo che è un sistema fallimentare:
nella tabella ho immesso un solo campo input hidden nella quale stampo in dinamico a mò di stringa separati da virgola solo i valori che voglio del tipo:
poi nel file createcsv.php faccio questo:
nel mio essere limitato ho ciclato sul campo buyer e poi con esplode lo trasformo in array. Il controllo su "selected" che sarebbe il checkbox risulta come ho notato TRUE perche basta spuntarne solo uno affinche la condizione sia soddisfatta. Credo che questo controllo non vada proprio bene.
Il CSV mi viene stampato, e solo che mi stampa sempre dalle righe da 1 a 43 e poi iniza a dare errori sulle righe successive e non ho capito perche.
MA intanto cmq non mi stampa solo le righe che avevo richiesto.
Vi chiedo gentilmente di aiutarmi, grazie a tutti
Sto lavorando con le WOOCOMMERCE API ed in localhost mi scarico a chiamata un JSON a cui faccio il decode, su cui poi c'è un cliclo foreach che genera le righe di una tabella in cui io mi stampo solo i campi che mi servono. STampo in totale 100 righe.
Ultimamente mi si sta creando la necessita di prendere solo alcune di queste info e di generare un CSV mappato che poi vado a caricare su un sito che mi carica le distinte di spedizione.
Io ho pensato di racchiudere la tabella in un form con method="post" e action="createcsv.php" che dovrà ricevere le info inviate mediante post.
Ho messo nel primo<td> un checkbox che mi servirà a spuntare la riga della quale io voglio inviare le info. Come faccia ad inviare le info solo di queste righe selezionate?
Codice:
<td><input type="checkbox" name="selected" id=""></td>
Io ho provato a vare cosi, ma vedo che è un sistema fallimentare:
nella tabella ho immesso un solo campo input hidden nella quale stampo in dinamico a mò di stringa separati da virgola solo i valori che voglio del tipo:
Codice:
<input type="hidden" name="buyer" value="<?= $row['shipping']['first_name']; ?>,<?= $row['shipping']['last_name']; ?>,<?= $row['shipping']['address_1']; ?>,<?= $row['shipping']['postcode']; ?>,<?= $row['shipping']['city']; ?>,<?= $row['shipping']['state']; ?>,<?= $row['billing']['email']; ?>,<?= $row['billing']['phone']; ?>">
poi nel file createcsv.php faccio questo:
Codice:
<?php
function outputCSV($data,$file_name = 'file.csv') {
# output headers so that the file is downloaded rather than displayed
header("Content-Type: text/csv");
header("Content-Disposition: attachment; filename=$file_name");
# Disable caching - HTTP 1.1
header("Cache-Control: no-cache, no-store, must-revalidate");
# Disable caching - HTTP 1.0
header("Pragma: no-cache");
# Disable caching - Proxies
header("Expires: 0");
# Start the ouput
$output = fopen("php://output", "w");
# Then loop through the rows
foreach ($data as $row) {
# Add the rows to the body
fputcsv($output, $row); // here you can change delimiter/enclosure
}
# Close the stream off
fclose($output);
}
if (isset($_POST['submit'])) {
foreach ($_POST['buyer'] as $key => $value) {
if ($_POST['selected']) {
$arr = explode(",", $value);
outputCSV(array($arr),'download.csv');
}
}
}
nel mio essere limitato ho ciclato sul campo buyer e poi con esplode lo trasformo in array. Il controllo su "selected" che sarebbe il checkbox risulta come ho notato TRUE perche basta spuntarne solo uno affinche la condizione sia soddisfatta. Credo che questo controllo non vada proprio bene.
Il CSV mi viene stampato, e solo che mi stampa sempre dalle righe da 1 a 43 e poi iniza a dare errori sulle righe successive e non ho capito perche.
MA intanto cmq non mi stampa solo le righe che avevo richiesto.
Vi chiedo gentilmente di aiutarmi, grazie a tutti