Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: consiglio su una query

  1. #1

    consiglio su una query

    Ciao a tutti, questo è il mio problema:

    ho due tabelle:

    tab_avvisi
    id_avviso
    testo
    data

    e

    tab_news
    id_news
    testo
    data

    Ho una form del tipo "cerca nel sito..."
    nell'input metto una parte di testo che deve essere cercata in tutte e due le tabelle.
    come faccio però ad ordinare tutti i record estratti per data?

    Chi può darmi una mano che non so come scrivere la query?
    Grazie a tutti!
    aquatimer2000

  2. #2
    ordinare in che senso?

    fai la stessa query sia nella prima tabella che nella seconda e salvi i risultati in un unico array che ti ordini come vuoi...

  3. #3
    Scusa ma non conosco benissimo gli array.

    $sql="SELECT * FROM tab_avvisi WHERE testo LIKE '%$testo_cercato%'";
    $res=mysql_query($sql, $db) or die(mysql_error());
    $row=mysql_fetch_array($res);

    $row è un array, ma in questo caso ha un solo una riga estratta?

    Come faccio a creare un array che contenga tutte le righe estratte dalla SELECT?

    Sicuro che non c'è una soluzione che risolva il problema direttamente nella query?
    aquatimer2000

  4. #4
    $sql="SELECT * FROM tab_avvisi WHERE testo LIKE '%$testo_cercato%'";
    $res=mysql_query($sql, $db) or die(mysql_error());
    while($row=mysql_fetch_array($res))
    {
    // ogni ciclo corrisponde ad una riga trovata. se nella tabella hai il campo id, in $row["id"] hai l'id per ogni riga...capito?
    }

  5. #5
    questo già lo sapevo ma come faccio a confrontare le date della tabella avvisi con quelle della tabella news ??

    in questo modo il confronto della data può essere fatto solo tra le righe estratte per ogni singola tabella.
    aquatimer2000

  6. #6
    allora crei un array

    $date= array();

    $cont=0;
    $sql="SELECT * FROM tab_avvisi WHERE testo LIKE '%$testo_cercato%'";
    $res=mysql_query($sql, $db) or die(mysql_error());
    while($row=mysql_fetch_array($res))
    {
    $date[$cont]=$row["date"];
    $cont++;
    }

    $sql="SELECT * FROM tab_news WHERE testo LIKE '%$testo_cercato%'";
    $res=mysql_query($sql, $db) or die(mysql_error());
    while($row=mysql_fetch_array($res))
    {
    $date[$cont]=$row["date"];
    $cont++;
    }

    alla fine nell'array $date avrai tutte le date

  7. #7
    io nell'array $date ci dovrei buttare:

    data, testo, tipo (news o avviso)
    poi dovrei ordinare tutto l'array per data decrescente

    ed infine stampare:

    26.11.2009 - avviso
    testo dell'avviso...

    25.11.209 - news
    testo della news..

    24.11.2009 - news
    testo della news..

    23.11.2009 - avviso
    testo dell'avviso...


    non so come creare un array di questo tipo e non so come ordinarlo per data decrescente.
    aquatimer2000

  8. #8
    in php un array puo contenere chiavi ch hanno tanti valori.

    $arr = array("somearray" => array(6 => 5, 13 => 9, "a" => 42));

    echo $arr["somearray"][6]; // 5
    echo $arr["somearray"][13]; // 9
    echo $arr["somearray"]["a"]; // 42

    la data potresti salvare nel db in questo modo 20091108 (8 novembre 2009)
    in questo modo
    20091108 è maggiore di 20090812...quindi per ordinare in base alle date puoi usare questo schema usando un algortmo di ordinamento qualsiasi..

  9. #9
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922

    Re: consiglio su una query

    Originariamente inviato da aquatimer2000
    Ciao a tutti, questo è il mio problema:

    ho due tabelle:

    tab_avvisi
    id_avviso
    testo
    data

    e

    tab_news
    id_news
    testo
    data

    Ho una form del tipo "cerca nel sito..."
    nell'input metto una parte di testo che deve essere cercata in tutte e due le tabelle.
    come faccio però ad ordinare tutti i record estratti per data?

    Chi può darmi una mano che non so come scrivere la query?
    Grazie a tutti!
    codice:
    select * from tab_avvisi where ....
    union all
    select * from tab_news where....
    order by `data` desc

  10. #10


    speravo ci fosse una possibilità di farlo tramite query !!!

    domanda da un milione di dollari:

    se ho tre tabelle posso scrivere così:

    codice:
    select * from tab_avvisi where ....
    union all
    select * from tab_news where....
    union all
    select * from tab_altro where....
    order by `data` desc
    aquatimer2000

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.