Visualizzazione risultati 1 fino 8 di 8

Discussione: ciclo while in php

  1. #1
    Guest

    Predefinito 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

  2. #2
    Guest

    Predefinito

    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.

  3. #3
    Guest

    Predefinito

    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

  4. #4
    Guest

    Predefinito

    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

  5. #5
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    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...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  6. #6
    Guest

    Predefinito

    E come dovrei fare per salvare le query parziali? come potrei fare?

    Risulta troppo complicato?

  7. #7
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    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...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  8. #8
    Guest

    Predefinito

    Problema risolto. Sei stato gentilissimo

    Grazie

    Paolo

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •