vyhladavanie v DB vo vsetkych tabulkach

Programovacie jazyky, rady, poradňa...
bart11
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 91
Registrovaný: 13 okt 2006, 20:11
Kontaktovať používateľa:

Re: vyhladavanie v DB vo vsetkych tabulkach

Príspevok od používateľa bart11 »

áno, id potrebuješ, lenže ak budeš postupovať kopírovaním insert into ... select ... pri druhom použití ti vyhodí varovanie z duplicity; pretože, ak predpokladám správne, tak každá tabuľka obsahuje číslovanie pesničky od 1. Odstránením idčka, "spojením" všetkých tabuliek, a znovu vytvorení idčka v novej tabuľke sa ti priradia správne hodnoty. Ale! ak si mal odkaz na nejakú pesničku, už nebude platný pretože sa menilo radenie... uf. No, snáď to nejako spravíš... No, ale toto platí k tomu čo som písal predtým, ak si to už spojil inak, tak v pohode...
DeeJay3
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 254
Registrovaný: 22 dec 2008, 19:45
Kontaktovať používateľa:

Re: vyhladavanie v DB vo vsetkych tabulkach

Príspevok od používateľa DeeJay3 »

dikes ide to len som znova spravil celu tabulku :)

//autoeditácia príspevku (24 Jan 2010, 15:37)
mam upravene jedno vyhladavanie ale zalezi na tom ci zadam do hladania velke alebo male pismenko napr zadam pri vyhladavani pesniciek Akon tak najde vysledky ale ked zadam akon tak nic nenajde co s tym?

Kód: Vybrať všetko

<?php #vyhladavanie.php

    echo "<form action='{$_SERVER[PHP_SELF]}' method='get'>";
    echo "            Text:<br /><input name='retazec' type='text' /><br />";
    echo "            <input type='submit' value='Vyhľadaj' />";
    echo "</form>";

require_once("mysql.php");
if(isset($_GET[retazec])){
    if(empty($_GET[retazec])){
        $retazec = FALSE;
        $error = "Nezadali ste reťazec pre vyhľadávanie!<br />";
    } else {
        $retazec = $_GET[retazec];
    }
        $podla = "meno";

        if($retazec){
            echo "Výsledky vyhľadávania pre hľadaný výraz: <strong>$retazec</strong><br />";
            echo ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br>";
            $retazec = explode(" ",$retazec);
            $sql = "SELECT meno FROM songs WHERE $podla LIKE '%".$retazec[0]."%'";
            for ($num=1;$num<count($hladaj);$num++) {
                $sql .= "$sql AND $podla LIKE '%".$hladaj[$num]."%'";
            }
            $sql = "$sql ORDER BY meno ASC";
            
            $vysledok = mysql_query($sql);
            $pocet = mysql_num_rows($vysledok);
            if($pocet == NULL){
                echo("Zadaný reťazec sa v databáze nenachádza!<br />");
            }
            while($zaznam = mysql_fetch_object($vysledok)){
                $meno = $zaznam->meno;
                echo "$meno<br />";
            }
            unset($meno);
            echo "<br><br>Výsledkov: <strong>$pocet</strong>";
        } else {
            echo $error;
        }
}


?>
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: vyhladavanie v DB vo vsetkych tabulkach

Príspevok od používateľa audiotrack »

buď si to budeš premieňať na malé písmená a porovnávať iba tie (strtolower() na strane php, lcase na strane mysql) alebo použiješ vyhľadávanie cez match-against a nie cez like. Tam si ale budeš musieť pridať fulltext. A poslednou, asi najlepšou možnosťou, je nastaviť tomu stlpcu s menami kde hľadáš collation na nejaký ci (case insensitive) a like sa prispôsobi (nebude rozlišovať veľké a malé)
DeeJay3
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 254
Registrovaný: 22 dec 2008, 19:45
Kontaktovať používateľa:

Re: vyhladavanie v DB vo vsetkych tabulkach

Príspevok od používateľa DeeJay3 »

jo parada dik za radu...este mohli by ste sa mi pozriet na toto co som opravil ale nevypisuje mi to dobre neviem kde mam chybu..potrebujem aby to vypisalo pre dany riadok v ktorom sa nasiel v poli meno hladany vyraz aby nevypisal iba meno ale aj link a datum...skusal som no nefachci to

Kód: Vybrať všetko

<?php #vyhladavanie.php

    echo "<form action='{$_SERVER[PHP_SELF]}' method='get'>";
    echo "            Text:<br /><input name='retazec' type='text' /><br />";
    echo "            <input type='submit' value='Vyhľadaj' />";
    echo "</form>";

require_once("mysql.php");
if(isset($_GET[retazec])){
    if(empty($_GET[retazec])){
        $retazec = FALSE;
        $error = "Nezadali ste reťazec pre vyhľadávanie!<br />";
    } else {
        $retazec = $_GET[retazec];
    }
        $podla = "meno";

        if($retazec){
            echo "Výsledky vyhľadávania pre hľadaný výraz: <strong>$retazec</strong><br />";
            echo ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .<br>";
            $retazec = explode(" ",$retazec);
            $sql = "SELECT meno FROM songs WHERE $podla LIKE '%".$retazec[0]."%'";
            for ($num=1;$num<count($hladaj);$num++) {
                $sql .= "$sql AND $podla LIKE '%".$hladaj[$num]."%'";
            }
            $sql = "$sql ORDER BY meno ASC";
            
            $vysledok = mysql_query($sql);
            $pocet = mysql_num_rows($vysledok);
            if($vysledok == NULL){
                echo("Zadaný reťazec sa v databáze nenachádza!<br />");
            }
            while($zaznam = mysql_fetch_assoc($vysledok)){
  						echo '<div style="text-align: left; margin-bottom: 3px; margin-top: 3px;">';
						echo '&nbsp;&nbsp;&nbsp;"&nbsp;<a href="',$zaznam['link'],'">',$zaznam['meno'],'</a>&nbsp;"<br>';
						echo '<font color="gray" size="1">date:&nbsp;',$zaznam['datum'],'</font></div>';   
            }
            echo "<br><br>Výsledkov: <strong>$pocet</strong>";
        } else {
            echo $error;
        }
}


?>
//autoeditácia príspevku (25 Jan 2010, 22:46)
poradiiii mi niekto?
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: vyhladavanie v DB vo vsetkych tabulkach

Príspevok od používateľa audiotrack »

v tom selecte vyberáš iba meno:
$sql = "SELECT meno FROM songs WHERE $podla LIKE '%".$retazec[0]."%'";
DeeJay3
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 254
Registrovaný: 22 dec 2008, 19:45
Kontaktovať používateľa:

Re: vyhladavanie v DB vo vsetkych tabulkach

Príspevok od používateľa DeeJay3 »

aaaaaaaa... :oops: ...diiik
Napísať odpoveď