Autor | Zpráva | ||
---|---|---|---|
davidmyska Profil |
#1 · Zasláno: 7. 1. 2012, 10:40:49
dobrý den,
mám například tuto tabulku: |..nazev.|...url........| |..text1..|..odkaz1..| |..text2..|..odkaz2..| |..text3..|..odkaz3..| |..test1..|..odkaz4..| |..test2..|..odkaz5..| |..test3..|..odkaz6..| a já bych potřeboval vyhledávání v DB tak že jako klíčová slova by se použil první sloupec např.: když do INPUTu napíšu slovo "text" tak mi to do DIVu vypíše řádek 1 - 3 a to v podobě: text1<br> <a href="odkaz1">odkaz1</a><hr> text2<br> atd. už jsem se díval všude kde mě napadlo ale to co by se mi hodilo jsem nenašel předem díky za odpověď |
||
HajekJirka Profil |
#2 · Zasláno: 7. 1. 2012, 11:01:00
davidmyska:
To co hledáš se jmenuje LIKE |
||
davidmyska Profil |
#3 · Zasláno: 7. 1. 2012, 13:03:24 · Upravil/a: davidmyska
sestavil jsem tento kód ale pořád mi to nejede hlásí mi to "Fatal error: Call to undefined function prepare() in ***** on line 12"
<?php ob_start(); session_start(); echo "<form action=\"search.php\" method=\"post\"> <input type=\"hidden\" name=\"hled_sent\" value=\"\"/> <input type=\"text\" id=\"hled\" name=\"hled_text\" style=\"width: 500px;\"/> <input type=\"submit\" name=\"hled_send\" value=\"Hledej\"/> </form>"; if(isset($_POST['hled_sent'])){ $hled_text=$_POST['hled_text']; require "db.php"; prepare("SELECT `nazev`, `url` FROM `odkazy` WHERE nazev = '$hled_text'"); $stmt->bind_param('s', $nazev); $stmt->execute(); $stmt->bind_result($nazev, $url, $id); while ($stmt->fetch()) { echo $nazev . "<br><a href=\"" . $url . "\">" . $url . "</a><hr>"; } $stmt->close(); } else{ header ("location: index.php?alert5"); } } ob_end_flush(); ?> |
||
jenikkozak Profil |
#4 · Zasláno: 7. 1. 2012, 16:36:37
davidmyska:
„sestavil jsem tento kód ale pořád mi to nejede hlásí mi to "Fatal error: Call to undefined function prepare() in ***** on line 12"“ „můžete mi prosím najít chybu díky mě už nic nenapadá“ Taky mě nic nenapadá. Zkus se obrátit na americké velvyslanectví. Nebuď líný a zkus si třeba přečíst tu chybovou hlášku. |
||
davidmyska Profil |
#5 · Zasláno: 7. 1. 2012, 18:22:12
já jsem si ji přečetl na tom řádku a okolí jsem zkusil vše co mě napadlo nic nefungovalo
|
||
Han Profil |
#6 · Zasláno: 7. 1. 2012, 18:29:05
Voláš neexistujúcu funkciu, tak trošku porozmýšľaj..
|
||
davidmyska Profil |
#7 · Zasláno: 7. 1. 2012, 19:40:36
kód v řádcích 12 - 20 jsem našel na internetu
nevíte tedy někdo co místo toho? předem díky |
||
panther Profil |
#8 · Zasláno: 7. 1. 2012, 19:42:04
davidmyska:
a funkci prepare máš definovanou kde? Ta tam nebyla nikde?
|
||
Tori Profil |
#9 · Zasláno: 7. 1. 2012, 19:46:17 · Upravil/a: Tori
davidmyska:
Nemá to být $stmt->prepare ? (Vypadá to jako tohle: http://www.php.net/manual/en/mysqli-stmt.prepare.php)
|
||
davidmyska Profil |
#10 · Zasláno: 7. 1. 2012, 20:02:49 · Upravil/a: davidmyska
pomozte mi prosím já už opravdu nevím co stím
Tori: ani to od tebe nefunguje |
||
Tori Profil |
#11 · Zasláno: 7. 1. 2012, 20:18:49
A od jaké třídy teda je ta instance v $stmt (ať víme o jakou DB vrstvu jde)? A máte tu instanci vytvořenou v db.php?
(Jinak mi taky přijde divné používat vůbec metodu bind_param, když přislušnou hodnotu už máte napevno zadanou v SQL dotazu, bez escapování. Asi se bude trochu prát proměnná $nazev z řádku 13 s tou od řádku 15 dál, do které se (předpokládám) mají referencí ukládat hodnoty z DB. A taky v dotazu žádáte data ze 2 sloupců DB, ale v bind_result očekáváte třetí sloupec.) |
||
davidmyska Profil |
#12 · Zasláno: 7. 1. 2012, 20:45:00
píši sem znovu celý kód
search.php: <?php ob_start(); session_start(); echo "<form action=\"search.php\" method=\"post\"> <input type=\"hidden\" name=\"hled_sent\" value=\"\"/> <input type=\"text\" id=\"hled\" name=\"hled_text\" style=\"width: 500px;\"/> <input type=\"submit\" name=\"hled_send\" value=\"Hledej\"/> </form>"; if(isset($_POST['hled_sent'])){ $hled_text=$_POST['hled_text']; require "db.php"; $stmt->prepare("SELECT `nazev`, `url` FROM `odkazy` WHERE `nazev` = '$hled_text'"); $stmt->bind_param('s', $jmeno); $stmt->execute(); $stmt->bind_result($nazev, $url); while ($stmt->fetch()) { echo $nazev . "<br><a href=\"" . $url . "\">" . $url . "</a><hr>"; $stmt->close(); } } else{ header ("location: index.php?alert5"); } ob_end_flush(); ?> db.php: <?php $spojeni = mysql_connect("server_db","už.j._db","heslo_db" ) or die ('<b>Critical error!</b><br>Nepodarilo se pripojit k databazi!'); mysql_select_db("jmeno_db", $spojeni) or die ('Spatne zadana databaze v db.php'); mysql_query("SET character_set_client=utf8"); mysql_query("SET character_set_connection=utf8"); mysql_query("SET character_set_results=utf8"); ?> ještě na úvodní stránce je stejný formulář jako v search.php z něj přijde první dotaz db.php jsem nijak neměnil |
||
Tori Profil |
#13 · Zasláno: 7. 1. 2012, 21:08:30
davidmyska:
Myslím si, že $stmt opravdu měla být instance MySQLi_STMT. Pokud ji chcete používat, koukněte se na třídu MySQLi (konstruktor a stmt-init, a na třídu MySQLi_STMT). Anebo můžete zůstat u funkcí mysql_*, pak by vám stačilo kouknout na první příklad u mysql_fetch_assoc, pro více informací např. seriál na linuxsoftu. |
||
davidmyska Profil |
#14 · Zasláno: 7. 1. 2012, 22:24:04
použil jsem to mysql fetch assoc funguje to ale pouze na přesné fráze a já bych chtěl aby to dokázalo hledat nejen přesné fráze ale i podobné a obsahující jen část obsahu buňky
př.: když zadám např.: "pes" tak mi to vypíše "pes + odkaz1" ale i "velký pes + odkaz2" je to vlastně popsané i v prvním příspěvku zde je můj kód: <?php ob_start(); session_start(); echo "<form action=\"search.php\" method=\"post\"> <input type=\"hidden\" name=\"hled_sent\" value=\"\"/> <input type=\"text\" id=\"hled\" name=\"hled_text\" style=\"width: 500px;\"/> <input type=\"submit\" name=\"hled_send\" value=\"Hledej\"/> </form>"; if(isset($_POST['hled_sent'])){ $conn = mysql_connect("localhost","root","heslo"); if (!$conn) { echo "Nelze se připojit k DB:" . mysql_error(); exit; } if (!mysql_select_db("databáze")) { echo "Nelze se připojit k DB:" . mysql_error(); exit; } $sql = "SELECT nazev, url FROM odkazy WHERE nazev = '$hled_text'"; $result = mysql_query($sql); if (!$result) { echo "Nelze úspěšně spustit dotaz ( $ sql ) z DB:" . mysql_error(); exit; } if (mysql_num_rows($result) == 0) { echo "Žádný výsledek nenalezen."; exit; } while ($row = mysql_fetch_assoc($result)) { echo $row["nazev"] . "<br><a href=\"http://" . $row["url"] . "/\">" . $row["url"] . "</a><hr>"; } mysql_free_result($result);} else{ header ("location: index.php?alert5"); } ob_end_flush(); ?> |
||
Tori Profil |
#15 · Zasláno: 7. 1. 2012, 22:35:09
davidmyska:
„je to vlastně popsané i v prvním příspěvku“ A hned ve druhém máte i odpověď. |
||
davidmyska Profil |
#16 · Zasláno: 8. 1. 2012, 11:57:08 · Upravil/a: davidmyska
už jsem na to přišel vše mi funguje jak má
díky |
||
Časová prodleva: 12 let
|
0