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

Discussione: Ricerca su 2 tabelle

  1. #1

    Ricerca su 2 tabelle

    codice:
    <?
    include "../include/db.php";
    include "../include/pag.php";
    include "../include/date-time_function.inc.php";
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>Cerca nel Forum</title>
    <link rel="stylesheet" type="text/css" href="../stile.css" media="screen" />
    </head>
    <body>
    <? include "menu.php";
    echo "
    ";
    ?>
    <table width="100%" padding="1" bgcolor="#FFFFFF"><tr><td>
    <?
    $Parola = $_POST["Parola"];
    $query = "SELECT * FROM Forum_Discussioni WHERE Titolo LIKE '%$Parola%' ORDER BY Ultimo DESC";
    $result = mysql_query($query, $db);
    $argomenti = mysql_num_rows($result);
    if ($argomenti==0) {
    echo "<center>Non sono stati trovati risultati
    
    <a href=javascript:history.back()>Indietro</a></center>";
    } else {
    while ($row = mysql_fetch_array($result)) {
    $discussione1 = $row["ID"];
    $click1 = $row["Click"];
    $tit1 = $row["Titolo"];
    $tit1 = htmlspecialchars($tit1);
    $query2 = "SELECT * FROM Forum_Messaggi WHERE Discussione = $discussione1 ORDER BY ID DESC";
    $result2 = mysql_query($query2, $db);
    $row2 = mysql_fetch_array($result2);
    $messaggi1 = mysql_num_rows($result2);
    $ultimo1 = $row2["Utente"];
    $data_dal_db1 = $row2["Data"];
    $anno_db1 = getYear($data_dal_db1);
    $mese_db1 = getMonth($data_dal_db1);
    $giorno_db1 = getDay($data_dal_db1);
    $ora_db1 = getHour($data_dal_db1);
    $minuti_db1 = getMinutes($data_dal_db1);
    $secondi_db1 = getSeconds($data_dal_db1);
    $inserito1 = $giorno_db1."-".$mese_db1."-".$anno_db1." ".$ora_db1.":".$minuti_db1.":".$secondi_db1;
    $query3 = "SELECT * FROM Forum_Messaggi WHERE Discussione = $discussione1 ORDER BY ID";
    $result3 = mysql_query($query3, $db);
    $row3 = mysql_fetch_array($result3);
    $primo1 = $row3["Utente"];
    $query4 = "SELECT * FROM Forum_Messaggi WHERE Discussione = $discussione1 AND Risposta = '1' ORDER BY ID DESC";
    $result4 = mysql_query($query4, $db);
    $risposte1 = mysql_num_rows($result4);
    echo "<div style=\"background-color: #FFF; height: 70px; width: 33%; border: 1px solid #000; float: left; margin: 0;\"><a href=\"messaggio.php?ID=".$row["ID"]."\">$tit1</a>";
    echo "</div><div style=\"background-color: #FFF; height: 70px; width: 18%; border: 1px solid #000; float: left; margin: 0;\" align=\"center\">Iniziato da:
    <a href=\"../utenti/index.php?Utente=$primo1\">$primo1</a></div><div style=\"background-color: #FFF; height: 70px; width: 13%; border: 1px solid #000; float: left; margin: 0;\" align=\"center\">Risposte:
    $risposte1</div><div style=\"background-color: #FFF; height: 70px; width: 19%; border: 1px solid #000; float: left; margin: 0;\" align=\"center\">Ultimo messaggio:
    $inserito1 di
    <a href=..\utenti/index.php?Utente=$ultimo1\" target=\"_blank\">$ultimo1</a></div><div style=\"background-color: #FFF; height: 70px; width: 13%; border: 1px solid #000; float: left; margin: 0;\" align=\"center\">Visite:
    $click1</div>";
    }
    }
    ?>
    </td></tr></table>
    </div>
    
    
    
    <form action="argomento.php" method="post" name="argomento">
    Vai ad un altro forum:
    
    <select name="Argomento">
    <?
    $query = "SELECT * FROM Forum_Argomenti ORDER BY ID";
    $result = mysql_query($query, $db);
    while ($row = mysql_fetch_array($result)) {
    $argomento = $row["ID"];
    echo "<option value=\"\">--> ".$row["Titolo"]."</option>";
    $query2 = "SELECT * FROM Forum_Sottoargomenti WHERE Argomento = $argomento ORDER BY ID";
    $result2 = mysql_query($query2, $db);
    while ($row2 = mysql_fetch_array($result2)) {
    if ($sottoargomento==$row2["ID"]) {
    $selected = "selected";
    } else {
    $selected = "";
    }
    echo "<option value=\"".$row2["ID"]."\" $selected>".$row2["Titolo"]."</option>";
    }
    }
    ?>
    </select>
    <input name="Invia" type="submit" value="Vai" />
    </form>
    </body>
    </html>
    $query = "SELECT * FROM Forum_Discussioni WHERE Titolo LIKE '%$Parola%' ORDER BY Ultimo DESC";
    questa ricerca devo farla anche su
    $query = "SELECT * FROM Forum_Messaggi WHERE Titolo LIKE '%$Parola%' ORDER BY Ultimo DESC";
    ma integrandole, come fare?

  2. #2
    non ho ben capito cosa intendi fare; ma se intendi unire i risultati delle query ne puoi fare una sola usando il comando UNION [a partire dalla versione 4 di mysql]

    http://dev.mysql.com/doc/mysql/en/union.html

    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  3. #3
    E se le tabelle hanno campi differenti funziona?

  4. #4
    io sinceramente le union non le ho mai usate, prova ad eseguirla da phpmyadmin e vedi se ti restituisce il risultato che chiedi

    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  5. #5
    ok! ho provato il funzionamento e devo dire che lavora in modo completamente diverso da come me l'aspettavo.
    Per funzionare necessita che le 2 tabelle abbiano lo stesso numero di colonne e praticamente ti fa vedere i risultati uno sopra l'altro.
    per capirci, se tu fai
    codice:
    SELECT * FROM tabella1 UNION SELECT * FROM tabella2
    supponi che le due tabelle abbiano 3colonne ciascuna [il numero di righe è indifferente] lui ti restituisce una tabella con 3 colonne e prima i campi della tabella1 e sotto ad essi i campi della tabella2; tenendo però come nomi delle colonne i nomi della tabella1.
    ti vanno quindi persi i nomi dei campi della tabella2.
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  6. #6
    E quindi come posso fare?

  7. #7
    si può fare anche così:

    $query = "SELECT DISTINCT(A.id),A.titolo FROM Forum_Discussioni A, Forum_Messaggi B WHERE (A.id=B.id_discussione) AND (A.Titolo LIKE '%$Parola%' OR B.Titolo LIKE '%$Parola%') ORDER BY A.Ultimo DESC";

    se invece operi con union devi far sì che ogni query restituisca solo l'id della discussione

  8. #8
    Ho fatto:

    Codice PHP:
    $query "SELECT DISTINCT(A.id),A.titolo FROM Forum_Discussioni A, Forum_Messaggi B WHERE (A.id=B.id_discussione) AND (A.Titolo LIKE '%$Parola%' OR B.Testo LIKE '%$Parola%') ORDER BY A.Ultimo DESC";
    $result mysql_query($query$db);
    $argomenti mysql_num_rows($result); 
    Ma da':

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/web/www.sito.it/website/forum/cerca.php on line 21

    dove la riga 21 è $argomenti = mysql_num_rows($result);

  9. #9
    probabilmente c'è un errore nella query, prova a mettere la segnalazione dell'errore:
    codice:
    $result = mysql_query($query, $db)or die(mysql_error());
    ti restituisce qualche errore?

    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  10. #10
    Unknown column 'B.id_discussione' in 'where clause'

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.