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?
no pomocnou to určitě nepůjde, vždyť přece SELECT !* FROM home!
mě napadá jenom hromotlucký řešení, určitě existuje i něco jinýho...
nicméně celkově ten tvůj návrh databáze asi nestojí za moc, když něco takovýho nad ní hodláš spouštět. Vždyť to předpokládá existenci sloupců nadpis a text ve všech tabulkách a to přece samo o sobě volá o spojení v jednu tabulku ne ?
Každ to hromotlucký řešení bude vypadat takto+předpokládám, že víš, co doplnit místo těch teček...
$result = mysql_query("SHOW TABLES;");
while ($radek = mysql_fetch_row($result)) {
$tables[] = $radek[0];
}
for ($i=0;$i<count($tables);$i++) {
$query = "SELECT * FROM $tables[$i] WHERE (nadpis like '%$vyraz%') OR (text like '%$vyraz%') ORDER BY ID DESC;";
...
}
inac nemohol by si mi dat script na vyhladávanie? ja mám tento no akosi mi negunguje:
<?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");
while ($zaznam = MySQL_Fetch_Array($prikaz)){
$nadpis=$zaznam["nadpis"];
$datum=$zaznam["datum"];
$text=$zaznam["text"];
echo "<div class='nadpisclanku'> <b>".$nadpis."</b> | <small>Vydané [ ".$datum." ]</small></div>";
echo "<div class='teloclanku'>".$text."</div><br>";
}
echo "Stránka: ";
$result=mysql_query("SELECT * FROM mswin");
$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++;
}
?>
No jak jsem říkal, já bohužel jinej než ten hromotluckej způsob neznám(a to tvrdíš, že ten můj bude fungovat, což nezaručuju, páč jsem ho střelil od boku), pokud teda stále trváš na vyhledávání v celé databázi...
Myslím si, že nejlepší by bylo změnit návrh databáze tak, aby si měl všechny ty věci(to by bylo fajn, kdyby si upřesnil jaký?) v tabulce "mswin", takže by ti tento script stačil...
Na scriptu na první pohled nevidím nic, co by mělo dělat problémy...
sak ja viem ze tam nieje nic co by robilo preoblemy no zrazu to prestalo ist kukni http://shanoy.warez-forum.sk/vyhladaj.php
A na tom odkazu mám jako vidět co ? :D
php se přece na cestě ke mě přelouská na html...
...a na tvých stránkách někde odkaz na vyhledávání nevidím, kterej by mě to trošku přiblížil....
jinak jsem chtěl dodat, že už od začátku jsem tam viděl nesmysl:
LIMIT '.$zaciatok.', $stranky
nevím, co tím chtěl autor říci....
syntaxe LIMIT je takováto:
LIMIT 0, 30 ...například pro zobrazení záznamů od 1 po 30...
to voje bude na SQL serveru spouštět:
LIMIT '.x.', y ...kde x je hodnota $zaciatok a y $stranky... a to nemůže bezchyběn projít nebo jo ?
zkus upravit takto :
$prikaz = mysql_query("SELECT * FROM mswin WHERE (nadpis like '%$vyraz%') OR (text like '%$vyraz%') ORDER BY ID DESC LIMIT '.$zaciatok.', $stranky") or die(mysql_error());