[PHP-MYSQL] Array
-
abranca
- Scoppiettante Seguace

- Messaggi: 306
- Iscrizione: mercoledì 23 gennaio 2013, 11:48
- Desktop: Gnome
- Distribuzione: Ubuntu GNOME 15.04
- Sesso: Maschile
[PHP-MYSQL] Array
Ciao a tutti ragazzi,
sono a chiedere consiglio a qualcuno di voi più esperto di me.
Ho fatto un corso di programmazione php-mysql, e sto mettendo in pratica gli insegnamenti appresi ma ora ho un problema che non so come risolvere.
Spiego brevemente.
Ho due tabelle:
una di "accettazione cliente" in cui passo tutti i dati che mi servono: idCliente, data ingresso, data uscita, accessori e sintomi;
la seconda "accessori" che contiene l'elenco degli accessori e l'id.
Nel form iniziale, ho un elenco a discesa dove seleziono il cliente, dei campi dove inserisco le date, sintomi dove scrivo i sintomi e il campo accessori dove posso fare una selezione multipla.
Quando salvo l'accettazione salvo il campo accessori come array.
Nel database mi trovo, ad esempio:
idAccettazione = 1
idCliente = 5
dataIngresso = xx-xx-xxxx
dataUscita = xx-xx-xxxx
sintomi = testo scritto da me
accessori = 1,5,8 che corrispondono agli id degli accessori.
Ora mi trovo in questa situazione: compongo la scheda del lavoro ma vorrei che nel campo accessori, al posto dei numeri, corrispondano le descrizioni (accessorio1, accessorio5, accessorio8).
Mi trovo in difficolta.
Premetto che questo corso che ho seguito non è stato molto completo, cioè non sono stati fatti esempi pratici sufficienti per potermi far comprendere bene le viste, join, o altro.
Credo che il problema si possa risolvere con una join, ma non ho ben compreso il funzionamento.
Spero possiate aiutarmi!
Grazie in anticipo a tutti
sono a chiedere consiglio a qualcuno di voi più esperto di me.
Ho fatto un corso di programmazione php-mysql, e sto mettendo in pratica gli insegnamenti appresi ma ora ho un problema che non so come risolvere.
Spiego brevemente.
Ho due tabelle:
una di "accettazione cliente" in cui passo tutti i dati che mi servono: idCliente, data ingresso, data uscita, accessori e sintomi;
la seconda "accessori" che contiene l'elenco degli accessori e l'id.
Nel form iniziale, ho un elenco a discesa dove seleziono il cliente, dei campi dove inserisco le date, sintomi dove scrivo i sintomi e il campo accessori dove posso fare una selezione multipla.
Quando salvo l'accettazione salvo il campo accessori come array.
Nel database mi trovo, ad esempio:
idAccettazione = 1
idCliente = 5
dataIngresso = xx-xx-xxxx
dataUscita = xx-xx-xxxx
sintomi = testo scritto da me
accessori = 1,5,8 che corrispondono agli id degli accessori.
Ora mi trovo in questa situazione: compongo la scheda del lavoro ma vorrei che nel campo accessori, al posto dei numeri, corrispondano le descrizioni (accessorio1, accessorio5, accessorio8).
Mi trovo in difficolta.
Premetto che questo corso che ho seguito non è stato molto completo, cioè non sono stati fatti esempi pratici sufficienti per potermi far comprendere bene le viste, join, o altro.
Credo che il problema si possa risolvere con una join, ma non ho ben compreso il funzionamento.
Spero possiate aiutarmi!
Grazie in anticipo a tutti
- ienaplinsky
- Scoppiettante Seguace

- Messaggi: 954
- Iscrizione: giovedì 21 gennaio 2010, 9:56
- Località: Napoli
Re: [PHP-MYSQL] Array
ma il problema è l' sql ? non ho capito
se è l' sql
se è l' sql
Codice: Seleziona tutto
SELECT campi, che, ti, servono
FROM tabellaA JOIN tabellaB on tabellaA.campo = tabellaB.campo
WHERE condizione di una delle due tabelle o entrambe-
abranca
- Scoppiettante Seguace

- Messaggi: 306
- Iscrizione: mercoledì 23 gennaio 2013, 11:48
- Desktop: Gnome
- Distribuzione: Ubuntu GNOME 15.04
- Sesso: Maschile
Re: [PHP-MYSQL] Array
Grazie per la risposta.
In realtà entrambi! Il corso l'ho fatto online ma non sono stati molto chiari su alcuni passaggi.
Per inserire gli id articoli dal form php ho usato la funzione
che mi ha permesso di salvare la selezione multipla nella variabile $arrAccessori per poi fare una insert e salvarla nel database.
E fin qui tutto ok.
Il mio problema era come impostare la query per trasformare gli id della colonna accessori in descrizioni e come poter impostare, in php, la "stampa" nella scheda cliente delle descrizioni e non degli id.
In poche parole sono interessato sia alla sintassi mysql che php. mi piace capire e cercare di approfondire.
Ho provato con la query che mi hai segnalato nell'editor del db ma mi viene restituita vuota.
Ti allego 3 immagini per farti capire meglio.
La prima riguarda la tabella di accettazione per il cliente numero 5.
Come puoi vedere in accessori ci sono tre id identificativi.
Facendo la tua query mi viene restituita vuota (img2).
La img3 è il risultato del "gestionale" in php.
Quello che vorrei fare è trasformare la colonna articoli da valore id a descrizione.
Forse vedendo cosa voglio fare si può comprendere meglio il problema.
Spero di essere riuscito a spiegarmi bene. Scusate se faccio un po' di confusione ma sono agli inizi della programmazione php e faccio ancora un po' di confusione
In realtà entrambi! Il corso l'ho fatto online ma non sono stati molto chiari su alcuni passaggi.
Per inserire gli id articoli dal form php ho usato la funzione
Codice: Seleziona tutto
$arrAccessori = implode(",", $accessori);E fin qui tutto ok.
Il mio problema era come impostare la query per trasformare gli id della colonna accessori in descrizioni e come poter impostare, in php, la "stampa" nella scheda cliente delle descrizioni e non degli id.
In poche parole sono interessato sia alla sintassi mysql che php. mi piace capire e cercare di approfondire.
Ho provato con la query che mi hai segnalato nell'editor del db ma mi viene restituita vuota.
Ti allego 3 immagini per farti capire meglio.
La prima riguarda la tabella di accettazione per il cliente numero 5.
Come puoi vedere in accessori ci sono tre id identificativi.
Facendo la tua query mi viene restituita vuota (img2).
La img3 è il risultato del "gestionale" in php.
Quello che vorrei fare è trasformare la colonna articoli da valore id a descrizione.
Forse vedendo cosa voglio fare si può comprendere meglio il problema.
Spero di essere riuscito a spiegarmi bene. Scusate se faccio un po' di confusione ma sono agli inizi della programmazione php e faccio ancora un po' di confusione
- ienaplinsky
- Scoppiettante Seguace

- Messaggi: 954
- Iscrizione: giovedì 21 gennaio 2010, 9:56
- Località: Napoli
Re: [PHP-MYSQL] Array
allora ricapitoliamo nella tabella cliente hai una colonna in cui ci sono più interi per gli accessori ?
cioè hai la colonna accessori di cliente che contiene più id di accessori ?
se si secondo me è progettato male il db, dovresti avere una tabella con i clienti, una tabella con gli accessori e una tabella intermedia con id cliente e id accesori
cioè hai la colonna accessori di cliente che contiene più id di accessori ?
se si secondo me è progettato male il db, dovresti avere una tabella con i clienti, una tabella con gli accessori e una tabella intermedia con id cliente e id accesori
-
abranca
- Scoppiettante Seguace

- Messaggi: 306
- Iscrizione: mercoledì 23 gennaio 2013, 11:48
- Desktop: Gnome
- Distribuzione: Ubuntu GNOME 15.04
- Sesso: Maschile
Re: [PHP-MYSQL] Array
allora il db è strutturato così:
gestionale
|_clienti (che contiene id, nome, cognome, cellulare, telfisso, email)
|_accessori (che contiene id, descrizione)
|_tipologia (id, descrizione)
|_accettazione (id,idCliente,dataIngresso,dataUscita,idTipologia,idAccessori,sintomi)
ora il "problema" è che un cliente può presentare più accessori e quando inserisco una scheda lavoro se ha tre accessori devo poterli salvare tutti e tre!
Se no dovrei fare x colonne dove salvare i vari id, ma non penso sia la soluzione corretta.
Domani aumentano gli accessori e cosa faccio? ricostruisco il db? direi di no.....
L'immagine riassuntiva allegata prima (img3) è la vista della tabella accettazione che contiene l'id cliente (di cui ho estratto il nome), codice lavoro (che sarebbe l'id della tabella accettazione), data accettazione e data consegna, l'id hardware (che sarebbe l'id della tipologia) e gli id degli accessori.
Come dicevo all'inizio sicuramente faccio un errore io o non so come impostare al meglio, ma sono agli inizi e mi piacerebbe capire e migliorare.
tu come imposteresti il db?
dato che ho usato implode per salvare la scelta multipla in un campo della tabella, con explode riesco a ricomporre l'array e con una query associare i vari idAccessori alla loro descrizione?
è questa la mia domanda a cui non so che soluzione applicare....
gestionale
|_clienti (che contiene id, nome, cognome, cellulare, telfisso, email)
|_accessori (che contiene id, descrizione)
|_tipologia (id, descrizione)
|_accettazione (id,idCliente,dataIngresso,dataUscita,idTipologia,idAccessori,sintomi)
ora il "problema" è che un cliente può presentare più accessori e quando inserisco una scheda lavoro se ha tre accessori devo poterli salvare tutti e tre!
Se no dovrei fare x colonne dove salvare i vari id, ma non penso sia la soluzione corretta.
Domani aumentano gli accessori e cosa faccio? ricostruisco il db? direi di no.....
L'immagine riassuntiva allegata prima (img3) è la vista della tabella accettazione che contiene l'id cliente (di cui ho estratto il nome), codice lavoro (che sarebbe l'id della tabella accettazione), data accettazione e data consegna, l'id hardware (che sarebbe l'id della tipologia) e gli id degli accessori.
Come dicevo all'inizio sicuramente faccio un errore io o non so come impostare al meglio, ma sono agli inizi e mi piacerebbe capire e migliorare.
tu come imposteresti il db?
dato che ho usato implode per salvare la scelta multipla in un campo della tabella, con explode riesco a ricomporre l'array e con una query associare i vari idAccessori alla loro descrizione?
è questa la mia domanda a cui non so che soluzione applicare....
- ienaplinsky
- Scoppiettante Seguace

- Messaggi: 954
- Iscrizione: giovedì 21 gennaio 2010, 9:56
- Località: Napoli
Re: [PHP-MYSQL] Array
io voglio capire solo una cosa
in questa tabella
accettazione (id,idCliente,dataIngresso,dataUscita,idTipologia,idAccessori,sintomi)
nella colonna idAccessori quanti id ci metti? di norma ne andrebbe inserito 1 e con una join puoi risolvere il problema della descrizione.
quindi per ogni accessorio del cliente crei una riga identica dove cambia appunto solo l' id accessorio e per questo suggerivo di creare una nuova tabella id_cliente id_accessorio rimuovendo la colonna idAccessori da accettazione.
se invece nella colona idAccessori salvi più di un id allora la join non puoi usarla e devi salvare gli id degli accessori in un array e poi per ogni id fai le query
in questa tabella
accettazione (id,idCliente,dataIngresso,dataUscita,idTipologia,idAccessori,sintomi)
nella colonna idAccessori quanti id ci metti? di norma ne andrebbe inserito 1 e con una join puoi risolvere il problema della descrizione.
quindi per ogni accessorio del cliente crei una riga identica dove cambia appunto solo l' id accessorio e per questo suggerivo di creare una nuova tabella id_cliente id_accessorio rimuovendo la colonna idAccessori da accettazione.
se invece nella colona idAccessori salvi più di un id allora la join non puoi usarla e devi salvare gli id degli accessori in un array e poi per ogni id fai le query
-
abranca
- Scoppiettante Seguace

- Messaggi: 306
- Iscrizione: mercoledì 23 gennaio 2013, 11:48
- Desktop: Gnome
- Distribuzione: Ubuntu GNOME 15.04
- Sesso: Maschile
Re: [PHP-MYSQL] Array
si esattamente.
come ho scritto all'inizio salvo più id in quanto è una select multipla e passo i campi come array
Quindi si, è un array.
Ora come devo comportarmi?
Devo usare explode?
come ho scritto all'inizio salvo più id in quanto è una select multipla e passo i campi come array
Codice: Seleziona tutto
$arrAccessori = implode(",", $accessori);Ora come devo comportarmi?
Devo usare explode?
- ienaplinsky
- Scoppiettante Seguace

- Messaggi: 954
- Iscrizione: giovedì 21 gennaio 2010, 9:56
- Località: Napoli
Re: [PHP-MYSQL] Array
se sei riuscito a creare un array con gli id basta che per ogni elemento fai la select
una cosa del tipo
cosi nell' array descrizioni hai tutte le descrizioni dei prodotti, nella view fai il foreach e te le prendi
una cosa del tipo
Codice: Seleziona tutto
$descrizioni = array();
forach($array as $id) {
$query = 'select descrizione from tabella where id=' . $id;
$result = mysql_query($query);
$dati = mmysql_fetch_array($result);
$descrizioni[] = $dati['descrizione'];
} -
abranca
- Scoppiettante Seguace

- Messaggi: 306
- Iscrizione: mercoledì 23 gennaio 2013, 11:48
- Desktop: Gnome
- Distribuzione: Ubuntu GNOME 15.04
- Sesso: Maschile
Re: [PHP-MYSQL] Array
Niente non ci sono riuscito!
Mi scuso per il ritardo ma ho avuto dei problemi col pc.
Comunque sia.
Con questo sono riuscito a dividere i campi:
e mi scrive tutti i valori uno sotto l'altro, ossia da
a
con il secondo codice che posto, faccio una select sulla tabella accessori:
èd è già un risultato!
Ora il problema qual'è....che mi scrivi solo l'ultimo idAccessorio rilevato ossia il numero 5.

Mi scuso per il ritardo ma ho avuto dei problemi col pc.
Comunque sia.
Con questo sono riuscito a dividere i campi:
Codice: Seleziona tutto
$stringa = $idAccessori;
$ex = explode(',', $stringa);
foreach ($ex as $key) {
echo $key."<br />" ;
}
Codice: Seleziona tutto
1,4,5Codice: Seleziona tutto
1
4
5
Codice: Seleziona tutto
$query = "select * from $tabAccessori where id=$key";
$eseguiquery = mysql_query($query,$conn);
while ($ris = mysql_fetch_assoc($eseguiquery)) {
echo $ris['tipologia']."<br />";
}
Ora il problema qual'è....che mi scrivi solo l'ultimo idAccessorio rilevato ossia il numero 5.
- ienaplinsky
- Scoppiettante Seguace

- Messaggi: 954
- Iscrizione: giovedì 21 gennaio 2010, 9:56
- Località: Napoli
Re: [PHP-MYSQL] Array
suppongo che l' id sia la primary key di accessori quindi questa
ritorna una singola riga
questo while è ridondante dato che come detto la riga è unica,
il problema è che le query le devi fare come ti ho descritto sopra
per ogni id dell' array fai la select e in un nuovo array salvi la colonna che ti serve
Codice: Seleziona tutto
$query = "select * from $tabAccessori where id=$key";Codice: Seleziona tutto
while ($ris = mysql_fetch_assoc($eseguiquery)) {
echo $ris['tipologia']."<br />";
}il problema è che le query le devi fare come ti ho descritto sopra
per ogni id dell' array fai la select e in un nuovo array salvi la colonna che ti serve
-
abranca
- Scoppiettante Seguace

- Messaggi: 306
- Iscrizione: mercoledì 23 gennaio 2013, 11:48
- Desktop: Gnome
- Distribuzione: Ubuntu GNOME 15.04
- Sesso: Maschile
Re: [PHP-MYSQL] Array
ma secondo te, aver strutturato il db in questo modo è sbagliato?
ossia passando un array degli id accessori?
come è possibile modificarlo e migliorarlo?
ossia passando un array degli id accessori?
come è possibile modificarlo e migliorarlo?
- ienaplinsky
- Scoppiettante Seguace

- Messaggi: 954
- Iscrizione: giovedì 21 gennaio 2010, 9:56
- Località: Napoli
Re: [PHP-MYSQL] Array
la relazione tra cliente e accessori è N a N poichè un cliente può avere più accessori e un accessorio può appartenere a più clienti, in questi casi la relazione si implementa creando una nuova tabella.
la tabella clienti va bene, la tabella accessori va bene, la tabella tipologia va bene, la tabella accettazione se il cliente può avere più tipologie o accessori rimuovi le colonne, e crea altre due tabelle, con tre colonne una id_cliente id_acettazione e id_accessorio, e un altra con id_cliente id_accettazione e id_tipologia, cosi per ogni accessorio che appartiene al cliente inserisci una riga nella prima tabella, stesso discorso per le tipologie inserendo nella seconda tabella.
la tabella clienti va bene, la tabella accessori va bene, la tabella tipologia va bene, la tabella accettazione se il cliente può avere più tipologie o accessori rimuovi le colonne, e crea altre due tabelle, con tre colonne una id_cliente id_acettazione e id_accessorio, e un altra con id_cliente id_accettazione e id_tipologia, cosi per ogni accessorio che appartiene al cliente inserisci una riga nella prima tabella, stesso discorso per le tipologie inserendo nella seconda tabella.
-
abranca
- Scoppiettante Seguace

- Messaggi: 306
- Iscrizione: mercoledì 23 gennaio 2013, 11:48
- Desktop: Gnome
- Distribuzione: Ubuntu GNOME 15.04
- Sesso: Maschile
Re: [PHP-MYSQL] Array
grazie mille per la spiegazione!
scusa per il ritardo della risposta ma sono stato preso.
quindi una volta create le altre due tabelle, premendo il pulsante "inserisci" oltre alla tabella accettazione (che non ha più le colonne tipo e accessori) faccio eseguire altre due query (in totale 3) che vadano a compilare tutte le tabelle.
ora quello che non mi torna e che non riesco a focalizzare.
i campi (vedi immagine allegata) sono di selezione multipla.
come faccio a passare in un colpo solo tutti gli id inseriti???
grazie nel frattempo per le tue spiegazioni e per avermi fatto vedere un modo diverso di costruire il database!
scusa per il ritardo della risposta ma sono stato preso.
quindi una volta create le altre due tabelle, premendo il pulsante "inserisci" oltre alla tabella accettazione (che non ha più le colonne tipo e accessori) faccio eseguire altre due query (in totale 3) che vadano a compilare tutte le tabelle.
ora quello che non mi torna e che non riesco a focalizzare.
i campi (vedi immagine allegata) sono di selezione multipla.
come faccio a passare in un colpo solo tutti gli id inseriti???
grazie nel frattempo per le tue spiegazioni e per avermi fatto vedere un modo diverso di costruire il database!
- ienaplinsky
- Scoppiettante Seguace

- Messaggi: 954
- Iscrizione: giovedì 21 gennaio 2010, 9:56
- Località: Napoli
Re: [PHP-MYSQL] Array
allora o prepari una insert ad hoc che fa
tipo
oppure per ogni id accessorio fai una insert
tipo
Codice: Seleziona tutto
insert into tabella (id_cliente, id_id_accettazione, id_accessorio) values (1, 2, 3), (1, 2, 4), (1, 2, 5);-
abranca
- Scoppiettante Seguace

- Messaggi: 306
- Iscrizione: mercoledì 23 gennaio 2013, 11:48
- Desktop: Gnome
- Distribuzione: Ubuntu GNOME 15.04
- Sesso: Maschile
Re: [PHP-MYSQL] Array
mi scuso nuovamente per il ritardo della risposta, ma ho dovuto abbandonare temporaneamente il progetto.
volevo chiederti un chiarimento.
i values che mi hai scritto nella query, sarebbero gli id degli accessori?
se cosi fosse non voglio passarli io a mano...
volevo chiederti un chiarimento.
i values che mi hai scritto nella query, sarebbero gli id degli accessori?
se cosi fosse non voglio passarli io a mano...
- ienaplinsky
- Scoppiettante Seguace

- Messaggi: 954
- Iscrizione: giovedì 21 gennaio 2010, 9:56
- Località: Napoli
Re: [PHP-MYSQL] Array
eh no non le devi inserire a mano, la stringa la devi creare tu
esempio primo caso (un unica insert)
esempio secondo caso (una insert per ogni id)
esempio primo caso (un unica insert)
Codice: Seleziona tutto
$idCliente = $_POST['idCliente'];
$idAccettazione = $_POST['idAccettazione];
$idAccessori = $_POST['idAccessori'];
$query = "INSERT INTO TABELLA (id_cliente, id_accettazione, id_accessorio) VALUES";
$virgola = false;
foreach($idAccessori as $idAccessorio) {
if($virgola) {
$query .= ","
}
$query .= " ($idCliente, $idAccettazione, $idAccessorio) ";
$virgola = true;
}
mysql_query($query);Codice: Seleziona tutto
foreach($idAccessori as $idAccessorio) {
$query = "INSERT INTO TABELLA (id_cliente, id_accettazione, id_accessorio) VALUES ($idCliente, $idAccettazione, $idAccessorio)";
mysql_query($query);
}-
abranca
- Scoppiettante Seguace

- Messaggi: 306
- Iscrizione: mercoledì 23 gennaio 2013, 11:48
- Desktop: Gnome
- Distribuzione: Ubuntu GNOME 15.04
- Sesso: Maschile
Re: [PHP-MYSQL] Array
ottimo, ora mi è più chiaro dopo aver letto gli esempi!
procedo con le mie prove e ti aggiorno!
grazie mille per la disponibilità ad insegnarmi!
procedo con le mie prove e ti aggiorno!
grazie mille per la disponibilità ad insegnarmi!
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 3 ospiti