Strona 1 z 1
[SOLVED][php, MySQL] Skrypt wyszukujący łańcuch znaków
: 04 sie 2009, 19:42
autor: witek23
Witam,
Napisałem skrypt wyszukujący ciąg znaków problem w tym, że mimo tego, iż w bazie danych jest ciąg "dane" nie zostaje on wyświetlony:
Oto kod:
Kod: Zaznacz cały
<?php
$link = @mysql_connect('localhost', 'root', 'haslo');
mysql_select_db('baza', $link);
$wyniki = "Imie";
$warunki="(imie LIKE '%$wyniki%')";
$query="SELECT * FROM $tabela WHERE $warunki";
echo $result = MYSQL_QUERY($query);
?>
Odp: [php, MySQL] Skrypt wyszukujący łańcuch znaków
: 04 sie 2009, 20:57
autor: leon1313
Brak zdefiniowanej zmiennej $tabela. Poza tym w celu unikniecia złego interpretowania zmiennych polecam zamiast
:
Odp: [php, MySQL] Skrypt wyszukujący łańcuch znaków
: 05 sie 2009, 10:13
autor: witek23
Poprawiłem skrypt w ten sposób:
Kod: Zaznacz cały
<?php
$link = @mysql_connect('localhost', 'root', 'haslo');
mysql_select_db('baza', $link);
$wyniki = "Imie";
$warunki="(imie LIKE '%$wyniki%')";
$query="SELECT * FROM tabela WHERE $warunki";
echo $result = MYSQL_QUERY($query);
?>
Niestety nie działa...
Odp: [php, MySQL] Skrypt wyszukujący łańcuch znaków
: 05 sie 2009, 10:41
autor: kabanek
hmm... może spróbuj tak
Kod: Zaznacz cały
<?php
$link = @mysql_connect('localhost', 'root', 'haslo');
mysql_select_db('baza', $link);
$query="SELECT * FROM `tabela` WHERE `imie` LIKE '%".$wyniki."%')";
$id = mysql_query($query);
while ($res = mysql_fetch_assoc($id))
echo "znalazłem: ".$res['name']."
";
?>
może tak przejdzie? Przy czym zamiast 'name' w tej pętli wpisz tam swoje pole, które chcesz wyświetlić

Odp: [php, MySQL] Skrypt wyszukujący łańcuch znaków
: 05 sie 2009, 20:03
autor: witek23
kabanek pisze:hmm... może spróbuj tak
Kod: Zaznacz cały
<?php
$link = @mysql_connect('localhost', 'root', 'haslo');
mysql_select_db('baza', $link);
$query="SELECT * FROM `tabela` WHERE `imie` LIKE '%".$wyniki."%')";
$id = mysql_query($query);
while ($res = mysql_fetch_assoc($id))
echo "znalazłem: ".$res['name']."
";
?>
może tak przejdzie? Przy czym zamiast 'name' w tej pętli wpisz tam swoje pole, które chcesz wyświetlić

Wyskakuje mi błąd o następującym komunikacie: "Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/dawid/public_html/szukaj.php on line 8"
Odp: [php, MySQL] Skrypt wyszukujący łańcuch znaków
: 05 sie 2009, 20:06
autor: Spawnm
zbędny )
dodatkowo jeśli dajesz "" nie musisz bawić się z kropkami.
Kod: Zaznacz cały
$link = @mysql_connect('localhost', 'root', 'haslo');
mysql_select_db('baza', $link);
$wyniki='cos';
$query="SELECT * FROM `tabela` WHERE `imie` LIKE '%$wyniki%' ";
$id = mysql_query($query);
while ($res = mysql_fetch_assoc($id))
echo "znalazłem: ".$res['name']."
";
skoro wyskakuje taki warning to znaczy że masz literówkę w nazwie tabeli lub kolumny
Odp: [php, MySQL] Skrypt wyszukujący łańcuch znaków
: 08 sie 2009, 08:41
autor: witek23
Spawnm pisze:zbędny )
dodatkowo jeśli dajesz "" nie musisz bawić się z kropkami.
Kod: Zaznacz cały
$link = @mysql_connect('localhost', 'root', 'haslo');
mysql_select_db('baza', $link);
$wyniki='cos';
$query="SELECT * FROM `tabela` WHERE `imie` LIKE '%$wyniki%' ";
$id = mysql_query($query);
while ($res = mysql_fetch_assoc($id))
echo "znalazłem: ".$res['name']."
";
skoro wyskakuje taki warning to znaczy że masz literówkę w nazwie tabeli lub kolumny
Skrypt niestety nie działa... Może coś źle rozumiem. Mam bazę o nazwie baza, tabelę o nazwie tabela. Kolejne kolumny nazywają się: id, imie, nazwisko. W tabeli jest rekord o krotkach z danymi: 1, Imie, Nazwisko.
Odp: [php, MySQL] Skrypt wyszukujący łańcuch znaków
: 08 sie 2009, 10:00
autor: kabanek
Kod: Zaznacz cały
$link = @mysql_connect('localhost', 'root', 'haslo');
mysql_select_db('baza', $link);
$wyniki='cos';
$query="SELECT * FROM `tabela` WHERE `imie` LIKE '%$wyniki%' ";
$id = mysql_query($query);
while ($res = mysql_fetch_assoc($id))
echo "znalazłem: ".$res['imie']."
";
i powinno działać...
Odp: [php, MySQL] Skrypt wyszukujący łańcuch znaków
: 10 sie 2009, 20:07
autor: nexon
Jeśli błąd z
ciągle się powtarza spróbuj zastąpić ją
. Ten sam wynik praktycznie.
Tak w ogóle to php coś zgłasza czy poprostu cisza?
Kod: Zaznacz cały
$id = mysql_query($query) or die(mysql_error());
Edit:
Heh no tak... Nie zauważyłem że kabanek już poprawił ;]
Odp: [php, MySQL] Skrypt wyszukujący łańcuch znaków
: 11 sie 2009, 19:49
autor: witek23
Nadal jest coś nie tak. Po prostu cisza nic się nie pokazuje. Może źle utworzyłem tabelę:
Kod: Zaznacz cały
<?php
$link = @mysql_connect('localhost', 'root', 'pass')
or die('Brak połączenia z serwerem MySQL.
Błąd: '.mysql_error());
echo "Udało się połączyć z serwerem!
";
$db_selected = mysql_select_db('baza', $link);
if (!$db_selected) {
die ('Nie można ustawić my_db : ' . mysql_error());
}
$zapytanie = 'CREATE TABLE tabela (id int NOT NULL AUTO_INCREMENT, imie char(30), nazwisko char(3), PRIMARY KEY(id))';
$idzapytania = mysql_query($zapytanie);
$zapytanie = "INSERT INTO tabela (`id`, `imie`, `nazwisko`) VALUES ('1', 'cos', 'cos')";
mysql_close($link);
?>
A oto skrypt wyszukujący po modyfikacjach:
Kod: Zaznacz cały
<?php
$link = @mysql_connect('localhost', 'root', 'pass');
mysql_select_db('baza', $link);
$wyniki='cos';
$query="SELECT * FROM `tabela` WHERE `imie` LIKE '%$wyniki%' ";
$id = mysql_query($query);
while ($res = mysql_fetch_array($id))
echo "znalazłem: ".$res['imie']."
";
?>
Odp: [php, MySQL] Skrypt wyszukujący łańcuch znaków
: 11 sie 2009, 21:35
autor: kabanek
już Ci mówię co jest

tabelę tworzysz poprawnie (sprawdzisz to w phpmyadminie), dodaje też poprawnie, ale widzę, że nie do końca rozumiesz czym się różni funkcja mysql_fetch_array od mysql_fetch_assoc
ta pierwsza zwraca tabelę, do której elementów możesz dowoływać się za pomocą indeksów tzn u nas będzie tak:
natomiast, gdy odwołujesz się do mysql_fetch_assoc to wtedy żeby coś z niej wyciągnąć, to piszesz tak:
widzisz różnicę? W tym co napisałeś to, albo zmień funkcję na mysql_fetch_assoc, albo w tej pętli zmień linijkę na
i powinno hulać

Odp: [php, MySQL] Skrypt wyszukujący łańcuch znaków
: 12 sie 2009, 11:46
autor: f00sek
@up
Kabanek nie masz racji do końca:P Funkcja mysql_fetch_assoc() zwraca tylko tablicę asocjacyjną (z kluczami odpowiadającymi nazwom kolumn). Funkcja mysql_fetch_num() zwraca tabelę numeryczną. A funkcja mysql_fetch_array() zwraca tabelę w której do wyników możemy się odwołać zarówno tak jak w mysql_fetch_assoc() jak i mysql_fetch_num() - przez indeks numeryczny i kolumnowy. Przepuść przez print_r albo foreach wyniki z wszystkich funkcji, zobaczysz;)
Odp: [php, MySQL] Skrypt wyszukujący łańcuch znaków
: 12 sie 2009, 12:17
autor: kabanek
f00sek rzeczywiście

ja na co dzień w PHPie nie programuję i jestem samoukiem;p zapamiętam

Odp: [php, MySQL] Skrypt wyszukujący łańcuch znaków
: 13 sie 2009, 10:11
autor: witek23
Dziękuje wszystkim za pomoc. Skrypt działa:) Źle wstawiałem rekordy do tabeli, a właściwie ich w ogóle nie wstawiałem...
Pozdrawiam
Odp: [php, MySQL] Skrypt wyszukujący łańcuch znaków
: 13 sie 2009, 12:58
autor: sibul
Jeśli chcesz mieć wyszukiwać w sposób w którym wpisujesz szukane słowo w pasek adresu przeglądarki w zmienną która jest podstawiana do szukania wpisz tak;
Kod: Zaznacz cały
$zmienna = mysql_real_escape_string($_GET['id']);
i wówczas możesz wywołać skrypt w ten sposób
adres.pl/szukaj.php?id=szukane+słowo
Warto utworzyć warunek dla pustej zmiennej GET
Kod: Zaznacz cały
if (empty($_GET['id'])){ echo "wpisz poprawnie szukane slowo"; } else {
reszta kodu;
}