Autor Zpráva
ShanoyX
Profil *
Dobrý den, mám kód: SELECT * FROM home WHERE (nadpis like '%$vyraz%') OR (text like '%$vyraz%') ORDER BY ID DESC LIMIT ".$zaciatok.", $stranky a potrebujem aby to nevyhladávalo iba v jednej tabulke ale v celej databáze ň.. som tu skusal pomocou AND no nefunguje to..poradite mi?
Kajman_
Profil *
Pro každou tabulku bude nutný nový select. Pokud budou z těchto selectů vypadávat stejné sloupečky, můžete je spojit přes union.
ShanoyX
Profil *
a to ako je cez UNION?
nightfish
Profil
SELECT * FROM tabulka1 WHERE (nadpis like '%$vyraz%') OR (text like '%$vyraz%') ORDER BY ID DESC LIMIT ".$zaciatok.", $stranky
UNION SELECT * FROM tabulka2 WHERE (nadpis like '%$vyraz%') OR (text like '%$vyraz%') ORDER BY ID DESC LIMIT ".$zaciatok.", $stranky
UNION SELECT * FROM tabulka3 WHERE (nadpis like '%$vyraz%') OR (text like '%$vyraz%') ORDER BY ID DESC LIMIT ".$zaciatok.", $stranky
...
ShanoyX
Profil *
aha moc diki
AlešD
Profil
No, v tomto případě bych se v prvé řadě zamyslel nad návrhem struktury databáze. Jedním ze základních pravidel (říká se tomu nějak jako "1.normální forma") je to aby stejné údaje byly v v rámci databáze uvedeny unikátně. Tj. v jednom poli a v jedné tabulce, v případě klíčových slov potom jako číselník.

Kvalitní návrh struktury databáze nejen zjednoduší dotazy, ale také je podstatně zrychlý.

Případné vazby mezi tabulkami lze řešit spojením relací (třeba pomocí left/right/inner join).

Nějaké info k problematice je třeba tady: http://dbsvet.cz/

Výrazným pomocníkem pro návrh složitějších relačních databází je nějaký case nástroj, vřele doporučuji.
ShanoyX
Profil *
nj....ja neviem mam stranku vyhladaj.php kod: <FORM ACTION="hladaj.php" METHOD="get">
<INPUT TYPE="text" NAME="vyraz" SIZE=20 MAXLENGTH=50>
<INPUT TYPE="submit" VALUE="Najdi"></form>

a stranku hladaj.php kod:
<?php
$vyraz = $_GET['vyraz'];


print "<B> Výsledky vyhľadávania pre výraz: </B> $vyraz <br><br>";


require("nastavenie.php");
$pripoj=MySQL_Connect($SQL_Server, $SQL_Uzivatel, $SQL_Heslo) or Die(MySQL_Error());
MySQL_Select_Db($Databaza) or Die(MySQL_Error());

if(!isset($_GET["od"])) {
$zaciatok=0;
}
else {
$zaciatok=$_GET["od"];
}


$stranky=10; //počet člankov na stranku

$prikaz = mysql_query("SELECT * FROM mswin WHERE (nadpis like '%$vyraz%') OR (text like '%$vyraz%') ORDER BY ID DESC LIMIT ".$zaciatok.", $stranky;
UNION SELECT * FROM google WHERE (nadpis like '%$vyraz%') OR (text like '%$vyraz%') ORDER BY ID DESC LIMIT ".$zaciatok.", $stranky;
UNION SELECT * FROM down WHERE (nadpis like '%$vyraz%') OR (text like '%$vyraz%') ORDER BY ID DESC LIMIT ".$zaciatok.", $stranky");


while ($zaznam = MySQL_Fetch_Array($prikaz)){
$nadpis=$zaznam["nadpis"];
$datum=$zaznam["datum"];
$text=$zaznam["text"];
echo "<div class='nadpisclanku'>&nbsp;&nbsp;<b>".$nadpis."</b>&nbsp;&nbsp;|&nbsp; &nbsp;<small>Vydané [ ".$datum." ]</small></div>";
echo "<div class='teloclanku'>".$text."</div><br>";
}

echo "Stránka: ";
$result=$prikaz;
$total=mysql_numrows($result);
$pages=$total/$stranky;
$i=0;
while ($i < $pages) {
$zaciatok1=($i*$stranky);
$strana=$i+1;
if($i != 0) echo "<span> | </span>"; /
if($zaciatok1==$zaciatok) {
echo "$strana";
}
else {
echo "<a href=\"hladaj.php?vyraz=$vyraz&od=".$zaciatok1."\">$strana</a>";
}
$i++;
}
?>

a stale mi to nejde.no ked amm iba jednu tabulku tak to ide...mam tam neco zle?
Kajman_
Profil *
Možná, když si vypíše mysql_error(), tak vám řekne, že tam nemáte ve všech tabulkách slučitelné sloupečky (třeba jejich různý počet). Pak nahraďte * za výčet sloupečků, které potřebujete.
ShanoyX
Profil *
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '; UNION SELECT nadpis,text FROM google WHERE (nadpis like '%ked%') OR (text lik' at line 1

http://shanoy.warez-forum.sk/vyhladaj.php tam to je....mozete vyskusat
Kajman_
Profil *
Tak a máte jasno. Středíky před union nemají co dělat.
ShanoyX
Profil *
uz to nende vobec..nj...a nemate nejaky script na vyhladavanie?
Toto téma je uzamčeno. Odpověď nelze zaslat.

0