Joomla.it Forum

Non solo Joomla... => Database => : borgi 07 Oct 2024, 12:30:55

: Estrai dati da tabella database Altervista
: borgi 07 Oct 2024, 12:30:55
Ciao a tuttiho realizzato un semplice form con ChronoForm8 su joomla5.I dati immessi vengono registrati in una determinata tabella del database.
Ho la neccessità di permettere l'estrazione di questi dati in un file.csv da frontend del sito.Per far questo ho inserito uno script PHP su una pagina dedicata ma non riesco a farlo funzionare...non sono un esperto di programmazione ma mi sono arenato su una sciocchezza presumo..chiedo aiuto a qualcuno di più esperto.Grazie
:
{source}<?php

$host 
'localhost';
$mydatabase 'my_miodatabase';
$user 'pippo';
$pass 'pluto';
try {
    
$db = new PDO('mysql:host='.$host.';dbname='.$mydatabase$user$pass);
} catch (
PDOException $e) {
    echo 
"Errore: " $e->getMessage();
    die();
}
$sql 'SELECT data, turno, utente, primo, secondo, contorno FROM prenotazioni ORDER BY id ';
$stmt $db->prepare($sql);
$stmt->execute();
$output '';
while(
$row $stmt->fetch(PDO::FETCH_ASSOC)){
    
$output.='"'.$row['data'].'";';
    
$output.='"'.$row['turno'].'";';
    
$output.='"'.$row['utente'].'";';
    
$output.='"'.$row['primo'].'";';
    
$output.='"'.$row['secondo'].'";';
    
$output.='"'.$row['contorno'].'";';
    if(
$output!= ''){$output.="\n";}
$file 'mio.csv';
$f fopen($file,'w');
fwrite($f,$output);
fclose($f);
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename="mio.csv");
echo 
$output;
exit;
}

?>

{/source}
: Re:Estrai dati da tabella database Altervista
: tomtomeight 08 Oct 2024, 17:35:15
Io non metterei i dati di accesso al db in un file non joomla. Usa le classi. Anzi fatti proprio una tua estensione, puoi farlo col componente JCB.
: Re:Estrai dati da tabella database Altervista
: jabba 10 Oct 2024, 09:34:32
Ciao, più che script dedicati valuta se usare un'estensione come ROcsvi ( https://rolandd.com/ (https://rolandd.com/) ) per configurare al meglio l'esportazione anche da frontend (e proteggerla da accessi non voluti grazie all'ACL di joomla).


Per quanto riguarda il tuo problema secondo me è colpa del tuo "while". Prova una cosa del genere (non sono sciuro che funzioni eh, però a naso dovrebbe):


:

<?php


$host 
'localhost';
$mydatabase 'my_miodatabase';
$user 'pippo';
$pass 'pluto';


try {
    
$db = new PDO('mysql:host='.$host.';dbname='.$mydatabase$user$pass);
} catch (
PDOException $e) {
    echo 
"Errore: " $e->getMessage();
    die();
}


$sql 'SELECT data, turno, utente, primo, secondo, contorno FROM prenotazioni ORDER BY id';
$stmt $db->prepare($sql);
$stmt->execute();


// qui creo il CSV con le intestazioni (valuta tu se ti serve)
$output 'data;turno;utente;primo;secondo;contorno' "\n";


while(
$row $stmt->fetch(PDO::FETCH_ASSOC)) {
    
$output .= '"' $row['data'] . '";';
    
$output .= '"' $row['turno'] . '";';
    
$output .= '"' $row['utente'] . '";';
    
$output .= '"' $row['primo'] . '";';
    
$output .= '"' $row['secondo'] . '";';
    
$output .= '"' $row['contorno'] . '"' "\n";
}

$file 'mio.csv';

// Qui invece scriviamo il file con tutto l'output, fuori dal while
$f fopen($file'w');
fwrite($f$output);
fclose($f);
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=mio.csv");
echo 
$output;


exit;


?>

: Re:Estrai dati da tabella database Altervista
: borgi 10 Oct 2024, 21:57:38
Grazie Jabbacon il tuo codice ho fatto un passo avanti almeno..il risultato però è bloccato dal browser "connessione sicura non riuscita"