-
ciclo while in php
Buongiorno,
Ho un quesito che vorrei sapere è possibile risolvere in merito al ciclo While.
Mi spiego.
Tramite la query SQL visualizzo tutte le tabelle presenti nel mio database. Tra tutte le tabelle prendo in considerazione solo quelle che si chiamano in un certo modo e tra queste tabelle avrei bisogno di selezionare tutti i valori al suo interno ordinandoli per data. Ora... Il mio problema sta nel realizzare il codice per unire tutti i risultati affinchè il tutto sia ordinato per data. Vi posto il codice:
Codice PHP:
// selezionamo tutte le tabelle del database
$database = mysql_query("SHOW TABLES FROM my_ipazo");
while($tabella = mysql_fetch_array($database))
{
// escludiamo le tabelle che non sono gironi
$var=array("a_aqu","b_aqu","c_aqu","d_aqu","e_aqu","f_aqu","g_aqu","h_aqu","i_aqu","l_aqu","m_aqu","a_eso","b_eso","c_eso","d_eso","e_eso","f_eso","g_eso","h_eso","i_eso","l_eso");
if(in_array($tabella[0],$var))
{
$gare = mysql_query("SELECT * FROM $tabella[0] WHERE (codice_casa ='$codice' or codice_ospiti = '$codice') and (num_gara<>'0' AND spostamento='Falso' and ris_casa='')");
while($gara = mysql_fetch_array($gare))
// stampa a video le gare
Grazie in anticipo per l'aiuto
-
Posso chiederti una cosa?
Le tabelle che prendi in considerazione, hanno TUTTE un nome particolare e facilmente codificabile?
Te lo chiedo perchè l'approccio che usi non pare facilmente gestibile in caso di revisioni future. Immagina di ingrandire e parecchio il DB, ti metti li a modificare a mano l'elenco delle tabelle da prendere e quelle da escludere?
Se la risposta è si, le tabelle si chiamano con qualcosa del tipo TABELLA_A_1, TABELLA_A_2, ...
Potresti estrarti solo le tabelle interessate con una query del tipo
Codice PHP:
SHOW TABLES LIKE 'TABELLA_A_%';
quindi coi risultati ti crei una query SELECT per ogni record che unirai con una UNION e quindi esegui.
-
Ciao,
Grazie per la risposta.
Le tabelle cre prendo in considerazione sono e saranno sempre quelle con nome a_aqu b_aqu a_eso , b_eso. E' proprio il loro nome. solo che all'interno del database ho tabelle che si chiamano in modo completamente diverso che non devono essere prese in considerazione
-
Ok. Ho provato la query che dici tu ed effettivamente non mi sembra una cattiva idea. Il mio problema rimane cmq quando devo eseguire la UNION perchè se metto all'interno del ciclo while
una cosa del genere mysql_query("SELECT * ......... (istruzioni) UNION");
lui alla fine mi stampa una UNION finale e mi da errore giustamente nel database.
Il mio problema sta nel capire come posso risolvere questa cosa
-
Potresti salvare le query parziali in un array, e sfruttare la funzione implode() per realizzare la query finale.
Permettimi un suggerimento: hai così tanti scontri nel tuo database da giustificare la suddivisione dei record in varie tabelle, diverse nella struttura solo per il nome della tabella stessa? Non puoi considerare l'idea di una tabella unica con l'aggiunta di un campo (peraltro ridondante, se gestisci bene le singole squadre) chiamato "Girone"?
Stammi bene...
-
E come dovrei fare per salvare le query parziali? come potrei fare?
Risulta troppo complicato?
-
No, devi usare un array... per salvare un nuovo record all'interno del ciclo ti basta usare la sintassi
Codice PHP:
$query[] = "SELECT ... FROM ... WHERE ...";
Una volta ottenute le singole query parziali, quella definitiva sarà questa:
Codice PHP:
$final_query = implode (" UNION ", $query);
Stammi bene...
-
Problema risolto. Sei stato gentilissimo
Grazie
Paolo