Newsgroup: it.comp.www.php
Titolo: select con php verso Mysql su piu' tabelle

Ciao, non riesco a fare questa select verso 2 tabelle dentro allo stesso 
database per un mini motore di ricerca:
<?php include("inclusione.php");?>
<?
$db = mysql_connect($db_host, $db_user, $db_password);
if ($db == FALSE)
die ("Errore nella connessione. Verificare i parametri nel file
inclusione.php");
mysql_select_db($db_name, $db)
or die ("Errore nella selezione del database.");
$keys = explode (",", $chiave);
$query = "";
reset ($keys);
while (list(,$parola) = each ($keys))
{ $parola = trim($parola);
if ($parola != "")
$query .= "Titolo LIKE '%$parola%' OR Testo LIKE '%$parola%' OR Sottotitolo
LIKE '%$parola%' OR ";
}
$query .= "0";
$query = "SELECT id, titolo, data FROM miatabella (e qui vorrei che mi
facesse il select per un'altra tabella o per 10 tabelle)  WHERE " . $query;
$result = mysql_query($query, $db);
while ($row = mysql_fetch_array($result))
{ echo "<a href=\"view.php?id=$row[id]\">" . date("j/n/y", $row[data]) . " -
$row[titolo]</a><br>"; }
?>
Dopo miatabella per aggiungerne un'altra cosa devo scrivere? and oppure or .
Ditemi cosa devo fare e se ci sono errori.
Grazie di cuore.
Andrea

 facesse il select per un'altra tabella o per 10 tabelle)  WHERE " . $query;
esempio con tre tabelle (tblA, tblB, tblC) e alcuni campi:
SELECT campo
  FROM tblA, tblB, tblC
  WHERE tblA.campo1=tblB.campo2 AND tblB.campo2=tblC.campo3 AND ...
  ... (eventuali, GROUP, ORDER)
oppure:
SELECT a.campo1
  FROM tblA as a, tblB as b, tblC as c
  WHERE a.campo1=b.campo2 AND b.campo2=c.campo3
  ... (eventuali, GROUP, ORDER)
puoi anche usare JOIN (il modo migliore della query dipende un po' da come
sono le tue tabelle in realta')
cmq. bella amazzata la tua query quando ne hai tanti dati (index non andra').
Attenzione anche che siano in qualche modo relati queste tabella (se no fara'
un crossproduct dei risultati singoli: m x n x o ecc.)
tra altro, meglio che chiami la variabile $query diverso, ad esempio $where


il problema č che quando metto la virgola sulla seconda tabella mi da 
errore, enn riesco a cpire perchč...
Cmq grazie 

 Cmq grazie
Crea la tua query, stampa a video, e fai copia incolla qui (con errore e tutto
necessario per capire un problema senza usare i mezzi telepatici).


Allora io devo fare questa cosa in modo semplice e non riesco a capire 
perchè quando metto la virgola dopo la prima tabella mi da un errore (che 
poi ti visualizzo), ecco la richiesta che viene da un form che passa "chiave 
" come parola di ricerca dentro alle 2 tabelle:
 <?php
mysql_connect("localhost","admin","password");
mysql_select_db("database");
if(trim($chiave) =="" or trim($chiave) ==" "){
echo "<b>Attenzione, non hai inserito nessuna parola da 
cercare!</b><br><br>";
}else{
$strsql = "select* from primatabella WHERE Titolo like '%%%$chiave%%%'  or 
Id  like '%%%$chiave%%%' ";
$query = mysql_query($strsql);
$conta = 0;
while($row=mysql_fetch_array($query)){
$Id = $row["Id"];
$Titolo = $row["Titolo"];
echo "Pagina: <A href=\"index.php?id=$id\"><b>$Titolo</b></A><br><font 
face=\"Verdana, Arial, Helvetica, sans-serif\ size=\"9px\" 
color=\"#000000\">Parola cercata: $chiave</font><br><br>";
$conta++;
}
if($conta == 0){echo "<b>Nessun risultato trovato !</b><br><br>";}
}
?>
-----------
Credo che cosi' sia molto semplice, allora io cerco una parola e se c'è su 
primatabella nel Titolo o nell'ID me la trova e io la posso processare. 
Appena aggiungo secondatabella dopo from primatabella, secondatabella - il 
tutto non funziona piu' e mi dice "  Warning: mysql_fetch_array(): supplied 
argument is not a valid MySQL result resource in ect.ect.
Come devo fare per cercare Titolo e Id (che tra l'altro quest'ultimo è 
variabile per ogni tabella quindi la possibilità che si assomigli è 
nell'ordine di miliardi..) su tutte e due le tabelle? Dove sbaglio? Sto 
impazzendo, correggi sopra all'esempio se puoi.
Grazie
Ciao Andrea

 $strsql = "select* from primatabella WHERE Titolo like '%%%$chiave%%%'  or
select* ===> SELECT *
(Di buona norma metti tutto cio' che sia sintassi mysql in maiuscolo [FROM
LIKE OR etc.])
questo sostituisci:
   $query = mysql_query($strsql);
con:
   $query = mysql_query($strsql) or
      die("Azzzzzz. Errore nella query: <$strsql>.
           Mysql-server mi sta dicendo:".mysql_error());
questo per ottenere un error piu' specifico

 questo per ottenere un error piu' specifico
Vedo che come me fai sempre tardi, seguiro' i tuoi consigli e poi ti faccio 
sapere, spero di non perdere questo trid (in italiano eheheh!!) perchè mi 
sta facendo impazzire sta' cosa
ciao a presto
Andrea
PS.e grazie della pazienza