esportare in file .csv risultato di query mysql

giacomo9783

Utente Attivo
24 Ago 2016
80
0
6
36
dopo aver eseguito la query

PHP:
$result = mysql_query("SELECT campo1, campo2 FROM tabella")

while($row = mysql_fetch_array( $result ))
devo esportare in un file .csv il risultato;
mi servirebbe in output un file .csv "organizzato" come segue:

campo1|campo2|
campo1|campo2|
etc...

in pratica i due campi che siano separati dal carattere "pipe" e lo stesso faccia da separatore di ogni riga.

Il campo2 (sempre un numero) in formato "0000". Per capirsi: se campo1 = "12" -> "0012"; se campo1 = "2" -> "ooo2".
 

macus_adi

Utente Attivo
5 Dic 2017
1.034
59
48
IT/SW
lo stesso faccia da separatore di ogni riga.
Scusa spiegati meglio....
Cmq qui avevo scritto una piccola Lib per un Query Builder e l'esportazione dei dati relativi reperibile qui, se può esserti utile, ho modificato una parte in base a quanto da te richiesto, ossia per gli id anteporre degli "0".

Per quanto riguarda la generazione della stringa ID / Numerica puoi anche vedere qui ed è esattamente la tua richiesta https://forum.mrwebmaster.it/threads/php-aiuto-creazione-form-php-per-completamento-modello-word.51255/
 
Ultima modifica:

giacomo9783

Utente Attivo
24 Ago 2016
80
0
6
36
si, mi spiego meglio.

ho la tabella PRODOTTI che contiene i campi QUANTITA, DESCRIZIONE, MINSAN

dovrei esportare il contenuto di questa tabella in formato .csv dei soli campi MINSAN e QUANTITA, nel seguente formato:

MINSAN|QUANTITA|

es. se MINSAN è 932707565 e QUANTITA è 12

932707565|0012|

si può fare???
 

giacomo9783

Utente Attivo
24 Ago 2016
80
0
6
36
salve a tutti, mi riaggancio a questa vecchia discussione puntualizzando che ho risolto quanto chiesto sopra. adesso ho la necessità di esportare in .csv, dopo la query, solo determinati campi. questo è il codice:

PHP:
$result=mysql_query("SELECT PRODOTTO, sum(QTA/CONF) as SUMSCATOLE, MINSAN AS COD FROM PAZIENTI INNER JOIN ORDINI ON PAZIENTI.PCATEGORIA = ORDINI.OCATEGORIA AND PAZIENTI.CF = ORDINI.OCF AND PAZIENTI.PERIODO = ORDINI.OPERIODO INNER JOIN PRODOTTI ON PAZIENTI.PRODOTTO = PRODOTTI.DESCRIZIONE WHERE INDICE = 'MENSILITA' AND PRODOTTO<>'ALIMENTI APROTEICI' AND PERIODO between '$data2' and '$data3' AND QTA<>0 AND PRODOTTO<>'ALIMENTI APROTEICI' group by PRODOTTO ORDER BY PRODOTTO ASC");
 
//$q = "SELECT MINSAN FROM PRODOTTI WHERE MINSAN<>'' AND DESCRIZIONE<>'' ORDER BY DESCRIZIONE ASC";

$row = mysql_query($result);

header("Content-Type: text/csv");
header("Content-Disposition: attachment;filename=ORDINE_" . $data5 . ".sca");

$row = mysql_fetch_assoc($result);
if ($row) {
    echocsv(array_keys($row));
}

while ($row) {
    echocsv($row);
    $row = mysql_fetch_assoc($result);
}

function echocsv($fields)
{
    $separator = '|';
    foreach ($fields as $field) {
        $field = strip_tags($field);
        $field = html_entity_decode($field, ENT_QUOTES, 'ISO-8859-1');
        if (preg_match('/\\r|\\n|,|"/', $field)) {
        $field = '"' . str_replace('"', '""', $field) . '"';
                }
            echo $field . $separator;
            
    }
    echo "\r\n";
}
?>
mi rendo conto che è complesso, ma così come è, il codice mi produce un file .csv che contiene, da sinistra a destra, i seguenti campi: PRODOTTO, SUMSCATOLE, COD

vorrei ottenere un .csv con solo i campi COD e SUMSCATOLE, nel suddetto ordine. Si può fare, agendo sul codice che ho postato?