Ciclo foreach dentro un ciclo while

Marco83

Nuovo Utente
3 Dic 2011
2
0
0
Salve,

Complimenti innanzitutto per la bella community e per il sito ricchissimo di contenuti (dai quali attingo di frequente).

Espongo qui il mio problema cercando di essere il più chiaro possibile.

Ho due tabelle "macchine" e "concessionarie" così strutturate:

Tab Macchine
Codice:
|id_macchina|nome_macchina| ecc ecc
|     1     |    fiesta   | ecc ecc
|     2     |     panda   |
|     3     |     punto   |
|     4     |    twingo   |
|    ecc    |      ecc    |

Tab Concessionarie
Nella colonna con_macchine, tramite form, inserisco come array gli id delle corrispondenti auto.
Codice:
|con_id|con_nome|con_macchine| ecc ecc
|  1   |  Fiat  |     2,3    | ecc ecc
|  2   |  Ford  |     1      |
|  3   |Renault |     4      |
|  ecc |  ecc   |     ecc    |

Ora vorrei riuscire ad ottenere una pagina in cui si visualizzano le seguenti informazioni:

Nome concessionaria - Macchine
Fiat - Panda, Punto
Ford - Fiesta
Renault - Twingo

Per estrarre il nome della concessionaria non ho problemi, ma non so come estrarre il nome delle macchine da id.

Ho provato in questo modo:

PHP:
$concessionarie_sql = $data->query("SELECT * FROM concessionarie ORDER BY con_nome ASC");

while($concessionarie_obj = $data->estrai($concessionarie_sql)){
  //Estraggo i dati relativi alle concessionarie
	$con_id[] = $concessionarie_obj->con_id;
	$con_nome[] = $concessionarie_obj->con_nome; 
	ecc ecc	 

  //Ora provo ad estrarre gli id delle macchine e a trasformarli in nomi.
       $con_macchine[] = $concessionarie_obj->con_macchine;
       $con_macchine[] = explode(',',$con_macchine);	
 
       $auto = array(); 

         foreach ($con_macchine AS $macchina) {     
            $macchine_sql = $data->query("SELECT nome_macchine FROM macchine WHERE id_macchina = '$macchina'");
              while($macchine_obj = $data->estrai($macchine_sql)){
                 $auto[] = stripslashes($macchine_obj->nome_macchina)." ";       
               }
         } 
}

Lo so, il codice è un pò confuso ma dopo vari tentativi, almeno con questo sono riuscito a fare un piccolo passo avanti. Solo che per ogni concessionaria, il codice restituisce solo il primo elemento dell'array, quindi ad esempio per fiat ottengo solo "panda" e non "panda,punto".

Avete suggerimenti?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
secondo me, ma può essere che sbagli, il tuo problema nasce con un "peccato originale".
essendo la tabella delle marche auto (fiat, ford....) una tabella che contiene dati più generali rispetto a quelle dalle auto dovresti fare in modo che le due tabelle fossero fatte così:
tab concessionarie
Codice:
|con_id|con_nome| ecc ecc
|  1     |  Fiat      | ecc ecc
|  2     |  Ford     |
|  3     |Renault   |
| ecc   |  ecc      |
tab macchine
Codice:
|id_macchina|id_con|nome_macchina| ecc ecc
|     1         |   2    |   fiesta           | ecc ecc
|     2         |   1    |   panda          |
|     3         |   1    |   punto          |
|     4         |   3    |  twingo         |
|    ecc       | ecc   |  ecc             |
da qui con delle join poi estrai tutto quello che vuoi es.

SELECT c.con_nome, m.nome_macchina concessionarie AS c, macchine AS m WHERE m.id_con=c.id_con .....
 

Marco83

Nuovo Utente
3 Dic 2011
2
0
0
Ti ringrazio innanzitutto per la risposta.

Si, facendo il quel modo risolverei il problema e credo che verrebbe fuori un codice anche più pulito e ordinato; il problema è che la tabella concessionarie viene popolata dagli utenti registrati... cioè, il proprietario della concessionaria si registra e tramite form invia le credenziali della sua azienda (nome, via, ecc.) e le automobili disponibili.

Se adottassi la tua soluzione dovrei far eseguire due query al momento della registrazione, una per popolare la tabella concessionarie e una per inserire gli id delle auto nella tabella macchine... il che creerebbe altri disordini credo.

Sono un pò in palla...
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
scusa una (o due) domanda:
ma la concessionara che si registra non riceve una pass o username?
non controlli chi si registra per poi autorizzare l'inserimento?
perchè non fai cosi può registrarsi uno qualsiasi (es io che con le concessionarie non ho nulla a che fare) e potrei inserire, es., delle foto di alex (orribile visu)
inoltre da quello che intuisco la consessionaria inserisce una o più automobili con determinate caratteristiche, ma se le caratteristiche cambiano o l'auoto non c'è più, la concessionaria può modificare o eliminare?
se è così (senza pass) la concessionaria A può andare a modificare/eliminare l'auto della concessionaria B (e non mi sembra una cosa corretta)
 

minatore

Utente Attivo
25 Set 2007
410
0
0

Ciao Marco83, secondo me è meglio seguire il consiglio di chi ne sa di piu, è vero è antipatico, ma sei fai come ti hano detto tirerai fuori un bel progetto.
Ricorda un db ben strutturato è quasi la metà del progetto
Ciao
 
Discussioni simili
Autore Titolo Forum Risposte Data
P Iterazione Foreach dentro un ciclo for PHP 9
I Eecuzione di javascript in ciclo foreach php. PHP 7
S [PHP] Ciclo foreach su più array PHP 2
maxnegri [PHP] Eliminare risultati duplicati da ciclo foreach ottenuti da una select php mysqli PHP 18
M [PHP] Errore in ciclo foreach PHP 1
M Problema con ciclo foreach per chiusura apertura div in base al numero di record in database PHP 1
otto9due Problema inserimento ciclo foreach o while in variabile PHP 1
M Aiuto su come procedere con un ciclo foreach PHP 4
M ciclo foreach che non funziona PHP 5
M problema con ciclo foreach per estrarre dati da un database PHP 22
M elimina valori doppi in ciclo foreach PHP 3
C Risultati ciclo foreach in tabella PHP 13
nim inserire dati in tabella con ajax (ciclo foreach) Ajax 10
E Inviare variabile a PHP da ciclo in JS Javascript 0
W fare la somma di un valore estratto da un ciclo while Classic ASP 0
B [PHP] formula e ciclo PHP 5
M [PHP] Come inserire codice html in un ciclo while PHP 2
T con oop creare un ciclo per una pagina dinamica html con php PHP 3
G [PHP] totale per ogni id di un ciclo PHP 1
P Incrementare nodo in ciclo for-each XML 6
M UPDATE non aggiorna db se lo inserisco in un ciclo Database 1
N [PHP] Controllare condizione ciclo While PHP 9
N [PHP] Registrare variabili all'interno di un ciclo PHP 3
MattiaBL [PHP] Problema ciclo while PHP 3
V Ciclo for per Pulsante in JavaScript Javascript 7
elpirata [PHP][RISOLTO] Sommare gli importi estratti da un ciclo while PHP 3
C [PHP] Ciclo for dinamico PHP 14
gandalf1959 [PHP] query all'interno di un ciclo while PHP 3
Z [PHP] ciclo for PHP 9
valvasori [PHP] Problema ciclo for PHP 12
A [PHP] metodo di una classe per estrarre i dati con ciclo while PHP 1
H [PHP] Ciclo per calcolare i chilometri PHP 4
S [PHP] Recupero più dati da form realizzata ciclo FOR PHP 5
gandalf1959 [PHP] ciclo while non scrive dove dovrebbe... PHP 2
Monital [PHP] ciclo su un file json molto grande PHP 1
O Ciclo non visualizzato PHP 1
M problema ciclo javascript Javascript 4
G Ciclo if php per far comparire un pulsante solo nel caso in cui una variabile sia 0 PHP 2
F Problema codice in un ciclo while PHP 2
T ciclo $.each non va jQuery 4
V Generare array da ciclo while e prendere valori casuali PHP 4
I tabella con ciclo, recupero dati PHP 3
Monital Problema con un ciclo for. PHP 1
S Ciclo PHP molto complesso PHP 2
minatore Ciclo while PHP 3
D ciclo while mi genera due campi vuoti PHP 5
K Problema con update di un database in un ciclo Classic ASP 1
P JAVA 8 Ciclo For all'interno di un altro Ciclo For Java 2
B ciclo in PHP per creare numero progressivo PHP 2
M Caricare più google maps con un ciclo Javascript 1

Discussioni simili