Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    509

    [php/sql]aiuto per un query

    ciao, sinceramente non sapevo quale titolo dare dato il genere di problema.

    in pratica ho due tabelle.
    in una ho scritto i nomi di città con i rispettivi id

    nell'altra dati vari tra cui le città visitate che vengono inserite nel bd in forma numerica

    in questo caso nella cella città potrei avere "1 4 25 23" etcc

    quello che vorrei fare io è recuperare tutte le città (city.name) ricavando gli id dalla cella (varie.city)

    avete qualche consiglio? ho fatto deverse prove ma mi stampa sempre e solo il primo id e poi si ferma.


    attualmente eseguo una query per recuperare tutti i dati
    eseguo un while per la stampa dei risultati e all'interno ho messo un ciclo for per far si che tutto venga intabellato come voglio io


  2. #2
    Utente di HTML.it L'avatar di kodode
    Registrato dal
    Sep 2002
    Messaggi
    1,896
    prova a postare il codice, perchè non è che sia molto chiaro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    509
    Codice PHP:
       <?php
           
    if (isset($_POST['cerca'])){
               
    $operatore=$_POST['oper'];
               
    $stagione=$_POST['stag'];
               
    $regione=$_POST['reg'];
               
    $result=(trova($operatore,$stagione,$regione));
        }else
        {
            
    $result=(safe_query("SELECT * FROM cataloghi,paes_region,operator,stagione WHERE cataloghi.operat = operator.op_id AND  cataloghi.region=paes_region.id AND cataloghi.stag=stagione.stag_id ORDER BY pos ASC"));
                }
         if (!empty(
    $result)){         
             while (
    $row mysql_fetch_array($result)){
                 echo 
    "<td height=\"40\" align=\"left\" valign=\"center\">";
                 echo 
    "<a target=\"new\" href=\"change.php?id=".$row[0]."\">".$row[1]."</a></td>";
                 echo 
    "<td align=\"left\" ><a target=\"new\" href=\"change.php?id=".$row[0]."\">".ucfirst(strtolower($row[3]))."</a></td>";
                 echo 
    "<td align=\"left\"><a target=\"new\" href=\"change.php?id=".$row[0]."\">".ucfirst(strtolower($row[10]))."</a></td>";
                 echo 
    "<td align=\"left\"><a target=\"new\" href=\"change.php?id=".$row[0]."\">".ucfirst(strtolower($row[12]))."</a></td>";
                 echo 
    "<td align=\"left\"><a target=\"new\" href=\"change.php?id=".$row[0]."\">".ucfirst(strtolower($row[8]))."</a></td>";
                 echo 
    "<td align=\"left\"><a target=\"new\" href=\"#\" onclick=\"confirmation($row[0])\" class=\"rosso\" style=\"color:red;\" >x</a>
    <font style=\"font:11px;\">Elimina</font></td></tr>"
    ;
             }
        } 
    ?>
    questo è più o meno quanto..
    ho dovuto mettere tutte quelle ugualianze perchè se no mi restituiva i valori moltiplicati per tutte le tabelle a cui mi connetto...

    stavo pensando di andare a prendermi il valore trasformarlo in un array eseguire un ciclo e per ogni voce andare ad eseguire una query...solo che ho la nette senzazione che sia un pessima idea e che appesentirebbe troppo il tutto...dato che per ogni voce posso avere 1 o 6 regioni. e che la prima quesry mi stampa sulle 300 righe

  4. #4
    Devi usare la LEFT JOIN:

    SELECT city.* FROM varie LEFT JOIN city ON varie.city=city.id

    Ciao!
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    509
    ho cambiato alcuni nomi delle celle
    allora questa è la mia query:
    Codice PHP:
    SELECT FROM cataloghi,paes_region,operator,stagione WHERE cataloghi.operat operator.op_id AND  cataloghi.region=paes_region.id AND cataloghi.stag=stagione.stag_id ORDER BY pos ASC 
    le tabelle a cui fa riferimento sono:
    Codice PHP:
    tab cataloghi

    id 
    |  region  |  stag  |  pos  operat
    --------------------------------------
    1  |  2 4 23 |  3      |  a1   |    


    tab stagione

    id  
    |  nome
    ------------------
     
    estate  
     2 
    primavera
     3 
    inverno
     4 
    autunno


    tab citta

    id 
    nome
    --------------
    padova
    milano
    torino
    napoli
    bari

    23
    caserta


    tab oper

    id  
    nome
    ---------------
     
    luca
     2 
    ferdiandno 
    con la query in pratica vorrei trovare il risultato di :

    ferdinando, a1 , inverno , milano napoli caserta.

    invece al momento trovo :
    ferdinando, a1 , inverno , milano

    ho provato con left join..ma probabilmente non ho capito come usarlo perchè non riesco ad ottenere il risultato che voglio

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    14
    scusa, ma non capisco il formato del record dato che hai scritto:
    id | region | stag | pos | operat
    --------------------------------------
    1 | 2 4 23 | 3 | a1 | 2

    qual'è dei seguenti casi?

    caso 1:
    id=1
    region=2
    stag=3
    pos=a1
    operat=2

    caso2:
    id=1
    region=2 4 23(ovvero 3 region differenti tutte in un record)
    stag=3
    pos=a1
    operat=2

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    509
    il fatto è che le città sono una scelta multipla che seleziono tramite checkbox.
    e le faccio inserire in un unico record.

    quindi nelle città mi trovo la città 2 la 4 la 9 la 20 per esempio divise da uno spazio.

    riesco a scrivere nel db a leggerlo e nel caso voglio modificare le mie scelte mi trovo i singoli ceckbox selezionati.

    ma quando voglio vedere tutte le registrazioni che ho fatto in generale mi trovo la prima città sola. in pratica legge solo il primo valore del campo.

    in pratica dovrei ottenere una query che dica trova tutte le voci di prima e in piu le città che hanno come id quelli contenuti nella cella region.

    il caso 2 insomma.

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    14
    prima di fare l'operazione devi ricavare i valori "singolarmente" e poi fai le queri che ti servono... sinceramente io cambierei la tabella cataloghi così:

    id
    stag
    pos
    operat

    e poi creerei un'altra tabella contenente l'id di cataloghi e l'id di region:

    id_cataloghi
    id_region

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    509
    aggiungendo una nuova tabella pero dovrei andare a fare degli upload multipli per inserire piu città e se volessi cambiarle mi risulterebbe un po complessa...

    a questo punto non mi rimane che prendermi i valori singolarmente ed andare a fare query...


    c'è un sistema per mettere un ciclo in un query o bisogna mettere la query nel ciclo?


    esiste una cosa del genere ? magari con un case o uno switch
    select * from tabella where nome = (ciclo per i vari valori)


    oppure devo fare un ciclo e all'interno far ripetere la query per ogni valore?

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    14
    Insert puo' inserire piu' record alla volta
    codice:
    INSERT INTO tabella (campo1,campo2) VALUES(valore1,valore2),(valore1,valore2),(valore1,valore2);
    potresti inserire le scelte in un array e lavorare su quello

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.