Back to top

Autore Topic: Estrai dati da tabella database Altervista  (Letto 340 volte)

Offline borgi

  • Esploratore
  • **
  • Post: 66
  • Sesso: Maschio
    • Mostra profilo
Estrai dati da tabella database Altervista
« il: 07 Ott 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
Codice: [Seleziona]
{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}

Offline tomtomeight

  • Global Moderator
  • Fuori controllo
  • ********
  • Post: 32046
  • Sesso: Maschio
  • Gli automatismi aiutano ma non insegnano nulla.
    • Mostra profilo
Re:Estrai dati da tabella database Altervista
« Risposta #1 il: 08 Ott 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.

Offline jabba

  • Nuovo arrivato
  • *
  • Post: 42
  • Sesso: Maschio
  • pixed.it
    • Mostra profilo
Re:Estrai dati da tabella database Altervista
« Risposta #2 il: 10 Ott 2024, 09:34:32 »
Ciao, più che script dedicati valuta se usare un'estensione come ROcsvi ( 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):


Codice: [Seleziona]

<?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;


?>

Gianluca Gabella - PIXED
www.pixed.it

Offline borgi

  • Esploratore
  • **
  • Post: 66
  • Sesso: Maschio
    • Mostra profilo
Re:Estrai dati da tabella database Altervista
« Risposta #3 il: 10 Ott 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"

 



Web Design Bolzano Kreatif