Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [RISOLTO] Multy query, risparmio di energie.

    Ciao a tutti ragazzi.
    Come al solito mi ritrovo di fronte ad un problema.
    Sto realizzando uno script per WP. La sua funzione per adesso si limita alla registrazione ed alla visualizazzione delle palestre. Il concetto è molto semplice, ma uno dei miei problemi per adesso riscontrati riguardano la stampa dei "Comuni", "Province" e "Regioni".

    Elenco subito il mio codice per venire al dunque.
    Codice PHP:
    <?php
    //Creo una funzione che mi seleziona automaticamente il nome della provincia, la prima variabile definisce cosa devo selezionare, l'altra l'id di riga da selezionare
    function display_nome($a$b){
    //Dichiaro globale la variabile di connesione
        
    global $conn;

    //Verifico se $a è uguale a Regione e seleziono la tabella Regione
        
    if($a=='Regione'){
    //Assegno a display  la selezione della riga con id = $b;
            
    $display "select regione from ipl_regioni where id = $b";
        } else if (
    $a=='Provincia'){
            
    $display "SELECT provincia FROM ipl_province WHERE id=$b";
        } else if (
    $a=='Comune'){
            
    $display "select comune from ipl_comuni where id = $b";
        }
    //Restituisco il valore di $display
        
    return mysql_query($display$conn);
    }

    // Query selezione tutte le regioni.
    $sql "select * from ipl_palestre order by id"
    global 
    $wpdb;

    // Eseguo la query. 
    $result mysql_query($sql$conn); 

    //Passo in While e stampo i campi
    while($palestre mysql_fetch_array($result)) {
    ?>
    <tr>
    <td class="nome_ipl"><?php echo $palestre['nome']; ?></td>
    <td class="tel_ipl"><?php echo $palestre['telefono']; ?></td>
    <td class="web_ipl">[url="<?php echo $palestre['web']; ?>"]<?php echo $palestre['web']; ?>[/url]</td>
    //In Poche parole chiamo La funzione display_nome e assegno alla prima variabile Regione e alla seconda l'id estratto dall'array della tabella $palestre.
    <td class="regione_ipl"><?php display_nome('Regione'$palestre['regione']); ?></td>
    <td class="provincia_ipl"><?php display_nome('Provincia'$palestre['provincia']); ?></td>
    <td class="comune_ipl"><?php display_nome('Comune'$palestre['comune']); ?></td>
    <td class="id_ipl"><?php echo $palestre['id']; ?></td>
    </tr>
    <?php
    }
    ?>
    In breve ho creato questa funzione dove la richiamo nel ciclo while.
    Oltre a non funzionare, (Errore di sintassi ), è concepibile che è un'enorme spreco di energie.

    Sapete come posso ottenere lo stesso in un'altra maniera? Avete dei Tutorial? Quali sono le migliorie?

    Grazie, per qualsiasi aiuto (divino e non).
    PS: Scusate se magari l'argomento è stato già trattato ma non saprei come cercarlo.
    Ideabile - Web Design
    Me on Flickr
    http://www.flickr.com/photos/m3kh

    Soit qui mal y pense...

  2. #2

    [RISOLTO]

    Come per magia Risolto!
    Ecco il nuovo codice
    Codice PHP:
    <?php
    // Query selezione tutte le regioni.
    $sql "select P.id, P.nome, P.telefono, P.web, R.regione, PR.provincia, C.comune from ipl_palestre as P, ipl_regioni as R, ipl_province as PR, ipl_comuni as C where R.id = P.regione and PR.id = P.provincia and C.id = P.comune order by P.id"
    global 
    $wpdb;
    // Eseguo la query. 
    $result mysql_query($sql$conn);     
    while(
    $palestre mysql_fetch_array($result)) {
    ?>
    <tr><td class="nome_ipl"><?php echo $palestre['nome']; ?></td><td class="tel_ipl"><?php echo $palestre['telefono']; ?></td><td class="web_ipl">[url="<?php echo $palestre['web']; ?>"]<?php echo $palestre['web']; ?>[/url]</td><td class="regione_ipl"><?php echo $palestre['regione']; ?></td><td class="provincia_ipl"><?php echo $palestre['provincia']; ?></td><td class="comune_ipl"><?php echo $palestre['comune']; ?></td><td class="id_ipl"><?php echo $palestre['id']; ?></td></tr>
    <?php
    }
    ?>
    Scusate se non è comentato.
    Comunque la soluzione anche se è banale è utilizzare il Join. (Come ho fatto a non pensarci prima :master: )
    Scusate se cerco sempre soluzioni impossibili.

    Ciao.

    Ideabile - Web Design
    Me on Flickr
    http://www.flickr.com/photos/m3kh

    Soit qui mal y pense...

  3. #3
    direi, devi lanciare un numero enorme di query ))

    Devi utilizzare le JOIN per fare queste cose, ovvero con una query di select colleghi varie tabelle tra loro utilizzando dei vincoli specifici (sia le tabelle sia i vincolo vengono specificati per l'appunto nella join).

    Ad esempio

    codice:
    SELECT
    *
    
    FROM
      ipl_palestre AS pa
      INNER JOIN ipl_regioni AS r ON r.id = pa.regione
      INNER JOIN ipl_province AS pr ON pr.id = pa.provincia
      INNER JOIN ipl_comuni AS c ON c.id = pa.comune
    
    ORDER BY
      pa.nome ASC
    (dovrebbe andare se non ho sbagliato a scrivere i vincoli)

    PS: ordinate per nome è meglio
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.