Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    20

    Query in più tabelle mysql

    Vi chiedo aiuto... devo fare una query da un dato ottenuto tramite GET in più tabelle, praticamente nelle varie tabelle devo trovare il dato con il nome corrispondente.

    Prendo dalla pagina precedente tramite GET la variabile "cerca" che corrisponde al parametro "nomeweb" che c'è in ogni tabella del db. Devo tra tutte le tabelle del db nelle quali faccio la ricerca (i "nomeweb" sono univoci per ogni record del db) trovare in quale db è presente la voce corrispondente, poi da porto la voce in un select e la mando a un js. Avevo, leggendo un po in giro, pensato di usare UNION per fare la query ma non riesco a farla funzionare. Se faccio la query in una tabella singola funziona tutto, ma purtroppo devo fare la ricerca in 4 tabelle.

    Grazie in anticipo!

    Codice PHP:
    <?php $start1 $_GET["cerca"]; ?><?php


    <?php
    $db 
    mysql_connect($db_host$db_user$db_password) or die ('Errore durante la connessione');
    mysql_select_db($db_name$db) or die ('Errore durante la selezione del db');

    $query1 = (" (SELECT * FROM `musei` WHERE `nomeweb` LIKE '%$start1%') UNION (SELECT * FROM `monumenti` WHERE `nomeweb` LIKE '%$start1%') UNION (SELECT * FROM `itinerari` WHERE `nomeweb` LIKE '%$start1%') UNION (SELECT * FROM `Shopping` WHERE `nomeweb` LIKE '%$start1%') "); 

    $result mysql_query($query1);
    ?>

    <?php 
          
          
    while ($line mysql_fetch_assoc($result)) { 
    ?>
             
            
            <select id="end">
              <option value="<?php echo $line['nome'];?>"><?php echo $line['nome'];?></option>
         
         <?php
          
    }
          
    ?>
            </select>
            <br>
          </p>
          <p>
            <input type="submit" onclick="calcRoute();">

  2. #2
    Utente di HTML.it L'avatar di Disema
    Registrato dal
    Sep 2014
    Messaggi
    63
    Se le tabelle hanno numero di colonne diverse l'union da errore (non so se succede anche se hanno nomi diversi).
    Ma se invece di fare un unica query ne fai 4 divise? e Poi con 4 while ti fai l'output(lo so può sembrare ripetitivo, ma non essendo esperto di union lo risolverei in questo modo).

    P.S. Se quel <select id="end"> sta dentro il while ne stamperai tanti quanti sono gli option, quindi non ti funzionerò l'html, devi mettero prima del while.

  3. #3
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    Union va bene, ma non con l'asterisco per i campi perché se le tabelle hanno numero di campi differente o tipi di dato diversi va in errore

    Da ogni tabella scegli i campi che ti servono (ad esempio, 3 per tutte le tabelle) e aggiungi il nome della tabella tra i campi che ti deve restituire (lo fai mettendo 'nome tabella' as nome tra i campi nella query)

    Poi gestisci i risultati con php

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    20
    Grazie, adesso funziona!

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    20
    Ho dovuto modificare un po' la pagina, e non mi funziona più nulla... qualcuno ha idea del perchè? praticamente la query mi trova in quale delle tabelle è presente la variabile e mi dovrebbe stampare il contenuto delle tabelle dentro la select, solo che che provo a visualizzare il campo nome ed a metterlo anche come valore funziona, se provo a mettere il campo indirizzo come value della select non funziona più! il problema credo stia nella query ma non riesco ad uscirne!

    il valore $start1 lo ottengo tramite GET dalla pagina precedente, non ho incluso quella parte di codice che funziona

    Codice PHP:
    <?php

    $db_host 
    "";
    $db_user "";
    $db_password "";
    $db_name "";

    //connetto il database

    $db mysql_connect($db_host$db_user$db_password) or die ('Errore durante la connessione');
    mysql_select_db($db_name$db) or die ('Errore durante la selezione del db');

    $query1 = (" (SELECT * FROM `prova1` WHERE `nomeweb` LIKE '%$start1%') UNION (SELECT * FROM `prova2` WHERE `nomeweb` LIKE '%$start1%') UNION (SELECT * FROM `prova3` WHERE `nomeweb` LIKE '%$start1%') UNION (SELECT * FROM `prova4` WHERE `nomeweb` LIKE '%$start1%') "); 


    $result mysql_query($query1);
          
          while (
    $line mysql_fetch_array($resultMYSQL_ASSOC)) { 
    ?>           
          <option value="<?php echo $line['indirizzo'];?>"><?php echo $line['nome'];?></option>     
         <?php
          
    }
          
    ?>
            </select>
            <br>
          </p>
          <p>
            <input type="submit" onclick="calcRoute();">

  6. #6
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    Hai verificato nel sorgente della pagina che $line['indirizzo'] contenga i valori che ti aspetti?

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    20
    si, $line['indirizzo'] contiene un indirizzo, il problema è che da quando ho inserito anche indirizzo non mi estrae nemmeno il valore di $line['nome']

  8. #8
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    Eh?
    Dove dovrebbe estrarre qualcosa? Io vedo una query basata su unione di 4 tabelle da cui prendi tutti i campi e di questi due li inserisci in una serie di option (tra l'altro non vedo neppure l'apertura del tag select in HTML)

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    20
    si, esattamente. L'inizio della select mi deve essere rimasto a giro nel copia e incolla. Il problema è che nella select non mi inserisce i valori e non capiso perchè. me li inseriva finchè cercavo di aggiungere solo nome, come metto anche indirizzo non funziona più

  10. #10
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    Sinceramente non riesco ad aiutarti
    Se la query ti restituisce un risultato, i campi sono pieni e i nomi che usi come chiave nell'array $line corrispondono ai campi restituiti dalla query deve funzionare per forza

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 © 2025 vBulletin Solutions, Inc. All rights reserved.