estrazione dati da mysql in php e salvataggio in cartella del server

luigichi

Nuovo Utente
28 Feb 2017
29
1
3
34
ciao
se i venditori non sono molti forse ti conviene creare due array, uno con i nomi dei venditori e l'altro con i codici numerici
l'unica cosa da stare attenti che i due array abbiano lo stesso numero di elementi e usare ireplace che è caseinsensitive
PHP:
<?php
$venditori=array('Pinco','Pallo','Sempronio');
$codice=array('v1','v2','v3');
$stringa="1 11/11/2016,CLIENTE1,N.1 TAVOLON.2 SEDIE,Pallo";
echo "$stringa <br />";
$stringa = str_ireplace($venditori, $codice, $stringa);
echo "$stringa";
?>
Ciao,
Grazie per la risposta.
Volevo chiederti, è possibile inserire questo codice insieme a quello precedente in modo che faccia tutto in automatico?
Inoltre, come posso richiamare ($stringa="1 11/11/2016,CLIENTE1,N.1 TAVOLON.2 SEDIE,Pallo";) con ogni singola riga del mio database?
 

luigichi

Nuovo Utente
28 Feb 2017
29
1
3
34
Vi spiego inoltre qual'è il mio problema, e se risolvo questo finalmente posso utilizzare questa estrazione (grazie al vostro preziosissimo aiuto).

Ho bisogno di incrociare due tabelle per estrapolare il dato della colonna Venditore. Vi schematizzo il tutto:

tblprojects
id | name | description | status | deadline
19 | cliente1 | descrizione1 | 1 | 19/01/2016
22 | cliente2 | descrizione2 | 4 | 19/01/2016
23 | cliente3 | descrizione3 | 4 | 02/01/2016
27 | cliente4 | descrizione4 | 2 | 15/02/2016
77 | cliente5 | descrizione5 | 1 | 17/02/2016
...

e la tabella tblcustomfieldsvalues
id | relid | fieldid | fieldto | value
285 | 19 | 23 | projects | Pinco
285 | 22 | 23 | projects | Pallo
285 | 27 | 23 | projects | Sempronio
285 | 77 | 23 | projects | Tizio
...
(il relid della tabella tblcustomfieldvalues è collegato al campo id della tabella tblprojects. bisogna però richiamare il valore 23 del fieldid per dire allo script che deve controllare solo quei valori e lasciare perdere le righe della tabella del db che contengono altri valori numerici. come logica diciamo che dovrebbe pensare: cerca l'id x di tblprojects in relid di tblcustomfieldvalues e se il fieldid è 23 dammi il value(il corrispondente numerico) altrimenti lascia vuoto).

Ho bisogno che nel file che si estrapola con il .csv devono esserci le seguenti colonne:

name | description | status | deadline | Venditore

e come dicevo nel post precedente ho bisogno che i valori della colonna venditore siano numerici:
ad esempio a Pinco associo l'1, a Pallo associo il 2, a Sempronio il 3 e a Tizio il 4.

Spero si possa fare,
Grazie ragazzi!
 
Ultima modifica:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
devi usare la JOIN per collegare due tabelle
Codice:
SELECT *
FROM tblprojects t1
LEFT JOIN tblcustomfieldsvalues t2 ON t1.id = t2.relid
ORDER BY id
per il valore numerico devi crearti un array come diceva Borgo
 

luigichi

Nuovo Utente
28 Feb 2017
29
1
3
34
scusate ragazzi, ma non riesco proprio a farlo funzionare. qualcuno di voi sarebbe così gentile da postare il codice funzionante?
io sono arrivato fino a qui e funziona, ma aggiungendo il resto... niente da fare

PHP:
<?php
$host="xxx.xxx.xxx.xxx";
$user="my_user";
$pass="my_psw";
$db_name="my_db";
$table="tblprojects";
$conn = mysqli_connect($host,$user,$pass,$db_name) or die("Errore connessione");
$query = "SELECT status, deadline, name, description FROM $table";
$result = mysqli_query($conn,$query) or die("Errore della query");

//delete file old
unlink('./export/file.csv');

//Open a file in write-mode (he creates it, if it not exists)
$fp = fopen('./export/file.csv', 'w');

// output the column headings
fputcsv($fp, array('status','deadline','name','description'));

function utf8($value) {
    return str_replace("<br />", " - ", utf8_encode($value));
}

// loop over the rows, outputting them
while ($row = mysqli_fetch_assoc($result)) {
    fputcsv($fp, array_map(utf8, $row));
}

//close the handler
fclose($fp);
?>

per favore, abbiate pazienza...
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
prova cosi
PHP:
<?php

$host = "localhost";
$user = "root";
$pass = "password";
$db_name = "database";

$conn = mysqli_connect($host, $user, $pass, $db_name) or die("Errore connessione");
$query = "SELECT status,deadline,name,description,value FROM tblprojects T1 "
        . "LEFT JOIN tblcustomfieldsvalues T2 ON T1.id = T2.relid && fieldid = 23 "
        . "ORDER BY T1.id DESC";
$result = mysqli_query($conn, $query) or die("Errore della query");

//delete file old
if (file_exists("file.csv")) {
    unlink('file.csv');
}

//Open a file in write-mode (he creates it, if it not exists)
$fp = fopen('file.csv', 'w');

// output the column headings
fputcsv($fp, array('status', 'deadline', 'name', 'description', 'venditore'));

function utf8($value) {
    return str_replace("<br />", " - ", utf8_encode($value));
}

$venditori = array("", "pinco", "pallo", "tizio");

// loop over the rows, outputting them
while ($row = mysqli_fetch_assoc($result)) {
    $row['value'] = array_search($row['value'], $venditori);
    fputcsv($fp, array_map("utf8", $row));
}
//close the handler
fclose($fp);
 

luigichi

Nuovo Utente
28 Feb 2017
29
1
3
34
Grandissimo Criric, funziona alla meraviglia.
Ultima cosa, solo a description e status mi vengono i valori contenuti in "".
Come posso eliminarli in modo che tutto il file csv sia delimitato solo dalle ,
Oppure, come posso mettere gli "" anche agli altri campi??

Grazie!!
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
aggiungi il doppio apice nella funzione str_replace(), strano cmq a me non li mostra.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
PHP:
function utf8($value) {
    $value = str_replace("\"", "", $value);
    return str_replace("<br />", " - ", utf8_encode($value));
}
 

luigichi

Nuovo Utente
28 Feb 2017
29
1
3
34
niente da fare, ho sostituito il codice che mi hai riportato ma estrapolando il file continuo ad avere il problema.
Ti riporto una riga di esempio:
status,deadline,name,description,venditore
2,2017-03-13,"ANTICHE RISERVE","N. 1 TAVOLO F00452",4

se si riuscisse anche ad avere la data in formato dd-gg-yyyy sarebbe fantastico
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
riposta lo script per intero
formattare le date in php è semplice, ne abbiamo parlato anche in questa discussione
PHP:
$row['campodata'] = implode("/", array_reverse(explode("-", $row['campodata'])));
 

luigichi

Nuovo Utente
28 Feb 2017
29
1
3
34
ecco il codice completo.
Ho provato anche a inserire il codice per le date ma non funziona (ho provato anche a sostituire campodata con deadline (il campo con la data nel mio db) ma niente.

PHP:
<?php

$host="my_host";
$user="my_user";
$pass="my_pass";
$db_name="my_dbname";

$conn = mysqli_connect($host, $user, $pass, $db_name) or die("Errore connessione");
$query = "SELECT status,deadline,name,description,value FROM tblprojects T1 "
        . "LEFT JOIN tblcustomfieldsvalues T2 ON T1.id = T2.relid && fieldid = 23 "
        . "ORDER BY T1.id DESC";
$result = mysqli_query($conn, $query) or die("Errore della query");
$row['campodata'] = implode("/", array_reverse(explode("-", $row['campodata'])));

//delete file old
if (file_exists("./files/export.csv")) {
    unlink('./files/export.csv');
}

//Open a file in write-mode (he creates it, if it not exists)
$fp = fopen('./files/export.csv', 'w');

// output the column headings
fputcsv($fp, array('status', 'deadline', 'name', 'description', 'partners'));

function utf8($value) {
    $value = str_replace("\"", "", $value);
    return str_replace("<br />", " - ", utf8_encode($value));
}

$venditori = array("", "pinco", "pallo", "caio", "sempronio");

// loop over the rows, outputting them
while ($row = mysqli_fetch_assoc($result)) {
    $row['value'] = array_search($row['value'], $venditori);
    fputcsv($fp, array_map("utf8", $row));
}
//close the handler
fclose($fp);
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
la funzione per la data la devi mettere nel ciclo while prima dell fputcsv() con il nome del tuo campo deadline
 

luigichi

Nuovo Utente
28 Feb 2017
29
1
3
34
ok, la data ora funziona correttamente. l'unica cosa che resta è il fatto che i valori di description e name sono tra gli apici...
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
modifica la funzione cosi
PHP:
function utf8($value) {
    $value = str_replace("\"", "", $value);
    $value = str_replace("<br />", " - ", utf8_encode($value));
    echo $value . "<br/>";
    return $value;
}
dovrebbe stamparti a video tutte le stringhe formattate
 

luigichi

Nuovo Utente
28 Feb 2017
29
1
3
34
così facendo quando faccio invio alla pagina php mi stampa a video i dati (qui li visualizzo correttamente senza apici)
andando a verificare nel file csv invece non cambia nulla.. continuo a vedere gli apici.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
non ho altre soluzioni. A me funziona e non capisco perchè a te no.
 

luigichi

Nuovo Utente
28 Feb 2017
29
1
3
34
potrebbe essere un problema legato alla tabella di mysql? ho comunque controllato i due campi e non noto nulla di particolare.
in alternativa? come posso a questo punto fare in modo che tutti i valori siano tra le ""valore""?
a me interessa che sia omogeneo in modo che possa facilmente importarlo in altri gestionali o software che utilizziamo
 
Discussioni simili
Autore Titolo Forum Risposte Data
E Progressbar estrazione dati da tabella mySQL Ajax 9
P Menu a discesa con estrazione dati da datbase mysql PHP 21
A problema: estrazione dati da query mysql e assegnazione ad una variabile PHP 2
L Estrazione dati php Database 6
L Estrazione dati casuali non doppioni MySQL 1
D Chiave unica in estrazione dati da array php PHP 0
ronny1710 Estrazione Dati Tessera Sanitaria .NET Framework 1
creatorweb [PHP] estrazione ciclica dati con 2 dati alla volta PHP 2
Gigi87 [PHP] Estrazione dati da forum o da social network PHP 1
E [PHP] estrazione dati in modo non continuativo PHP 1
C Estrazione Dati da Pagine Gialle PHP 0
A Estrazione dati da tabella sql MySQL 27
T Codice per estrazione dati da db PHP 4
L estrazione dati per login PHP 0
W Estrazione dati da DB PHP 20
L Estrazione dati per settimana. PHP 13
L estrazione dati e immagini in contemporanea PHP 4
M estrazione dati casuali da database Database 0
C [PHP][MY SQL] - Estrazione dati database tramite form PHP 8
G estrazione dati da DB tramite PHP errore time out PHP 2
B Estrazione dati utente loggato MySQL 1
W Estrazione dati DB da lista MySQL 1
M Connessione Database ed estrazione dati Javascript 6
A [risolto] Istruzione per estrazione di dati casuali dal db PHP 25
B Estrazione dati Classic ASP 3
U Estrazione dati da un db con un menu selezione in cascata PHP 6
Sargon estrazione dati PHP 17
A Estrazione dati da file.html PHP 8
G estrazione dati da xml ed inserimento in db PHP 0
M problema con estrazione dati da più tabelle MySQL 1
L Estrazione dati PHP 32
M caratteri speciali ed estrazione dati Database 4
L Estrazione dati da 2 tabelle non relazionate Classic ASP 26
R Aiuto estrazione dati Database 0
G estrazione dati da più record in un solo nuovo campo Database 0
E Difficile estrazione dati da tabella PHP 3
K Estrazione di più risultati da tabelle correlate PHP 5
L Estrazione valori max su più campi MySQL 4
M [PHP] Estrazione random con nomi presi dal db PHP 22
gandalf1959 Estrazione e visualizzazione del simbolo dell'euro php/mysqli PHP 0
F Estrazione Email di persone selezionate e attive / facebook + invio di massa! Annunci servizi di Social Media Marketing 0
V Estrazione di una singola banda da file multi banda (RGB) con Python Programmazione 0
O [PHP] problema estrazione immagine da db PHP 12
V [PHP] Estrazione con SQL PHP 1
M [MS Access] Estrazione record multipli MS Access 1
S [PHP] estrazione dal DB complicata PHP 7
asevenx [Javascript] Estrazione dal database di un valore in base ad una scelta Javascript 7
S Php e mysql, estrazione da una tabella e inserimento in un'altra tabella PHP 14
P Probelma estrazione stringa PHP 5
L Estrazione Articoli Random da Tabella senza doppioni PHP 1

Discussioni simili