Skocz do zawartości

$query= , czyli pytanie laika...


bardyt

Rekomendowane odpowiedzi

Witam,

Przychodzę z takim dość łatwym problemem, pewnie olśni mnie za parę minut albo i nie, bo w tej chwili głowie się od 2 godzin na ten temat.

$query= 'Select pole From nazwa Where tutaj_nie_wiem_jak_to_sie_zwalo Like "%' . $_POST['szukaj'] . '%"';

mam sobie o to taki kod, no i jak to uzupełnić, założmy, że mam bazę danych w mysql:

Nazwa bazy animep_pb

Nazwa usera animep_blog

Nazwa tabeli w bazie c_newsy

Mógłby mi ktoś to uzupełnić? Dodam, że jak wejdę w tą tabelę to w mysql z prawej na takim żółtym tle pojawia mi się SELECT * to po tym select w kodzie mam dodać tą gwiazdkę?

Pozdrawiam :)

Odnośnik do komentarza
Udostępnij na innych stronach

Uzupełnić, ale co.... Nie mam pojęcia o co Ci chodzi ...

Składnia polcecenia select jest następująca:

https://dev.mysql.com/doc/refman/5.0/en/select.html

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

<?php
// program wyszukiwarki - szukaj.php
// wyświetlenie nagłówka
echo'<h2>Wyniki wyszukiwania:</h2>';
// usunięcie niepotrzebnych białych znaków
$_POST['szukaj']=trim($_POST['szukaj']); 
// sprawdzenie, czy użytkownik wpisał dane
if(empty($_POST['szukaj'])) 
// jeśli nie, to wyświetl komunikat i zakończ działanie skryptu
die('Formularz wypełniony niepoprawnie! Nie można wyświetlić wyników wyszukiwania!');
// jeśli jednak dane są wpisane poprawnie
else
{
// połączenie z bazą danych, NIE ZAPOMINJ USTAWIĆ WŁASNYCH DANYCH!
$base=mysql_connect('localhost','costam','costam','costam');

// skonstruowanie zapytania
// zwróć uwagę na operator Like - to on jest sercem całej aplikacji. Pozwala wyszukać dany ciąg w bazie danych
// jak zapewne zauważyłeś, przed frazą i po niej umieszczam znaki procenta %
// ten znak symbolizuje dowolny inny ciąg znaków, więc jest niezbędny do skutecznego wyszukiwania
// połaczenie operatorem Or pozwala na wyszukiwanie danego ciągu zarówno w nazwie, jak i opisie produktu
// UWAGA! Tutaj też nie zapomnij ustawić swoich danych!
$query= 'Select pole From nazwa Where pole Like "%' . $_POST['szukaj'] . '%"';
// wysłanie zapytania do bazy danych
$result=mysql_query($query,$base)  or die(mysql_error());
// ustalenie ilości wyszukanych obiektów
$obAmount=mysql_num_rows($result);
// wyswietlenie ilości wyszukanych obiektów
echo'Znaleziono: '.$obAmount.'<br /><br />';
// wyświetlenie wyników w pętli
for($x=0;$x<$obAmount;$x++)
{
// przekształcenie danych na tablicę
$row=mysql_fetch_assoc($result);
// wyświetlenie numeru identyfikacyjnego
echo $x+1;
echo '. ';
// wyświetlenie nazwy produktu
echo $row['pr_name'];
echo'<br />';
}
}
// zamknięcie połączenia
mysql_close($base);
// koniec aplikacji
?>

Konkretniej to mam taki kod do wyszukiwania w bazie danych, po czym ma podać wyniki na stronie, ale co nie wpisze w tamte SELECT etc. to pisze, że "Wyniki wyszukiwania: No database selected".

Odnośnik do komentarza
Udostępnij na innych stronach

Bo masz ten kod nieprawidłowy w miejscu połączenia z bazą oraz brak faktycznej funkcji która wybierze z jaką bazą ma się połączyć

1) https://php.net/manual/en/function.mysql-connect.php

2) https://www.php.net/manual/en/function.mysql-select-db.php < tego brakuje

--- Zestawienia poleczenia powinno wyglądać mniej więcej tak:

<?php

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('Not connected : ' . mysql_error());
}

// make foo the current db
$db_selected = mysql_select_db('foo', $link);
if (!$db_selected) {
die ('Can\'t use foo : ' . mysql_error());
}
?>

Dopiero potem wywolanie funkcji https://www.php.net/manual/en/function.mysql-query.php

Kolejnym błędem to jest przekazanie bezpośrednio do zapytania danych z $_POST['szukaj'] . bez żadnego filtrowania.... chyba, że masz globalny filtr na tablicę POST, GET, SESSION, COOKIE ....

Minimum to przepuszczenie tego przez https://www.php.net/manual/en/function.mysq...cape-string.php docelowo powinno być to filtrowane przed https://pl.wikipedia.org/wiki/SQL_injection

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Dobra zastrzel mnie, bo zrobiłem jak umiałem:

<?php
// program wyszukiwarki - szukaj.php
// wyświetlenie nagłówka
echo'<h2>Wyniki wyszukiwania:</h2>';
// usunięcie niepotrzebnych białych znaków
$_POST['phrase']=trim($_POST['phrase']); 
// sprawdzenie, czy użytkownik wpisał dane
if(empty($_POST['phrase'])) 
// jeśli nie, to wyświetl komunikat i zakończ działanie skryptu
die('Formularz wypełniony niepoprawnie! Nie można wyświetlić wyników wyszukiwania!');
// jeśli jednak dane są wpisane poprawnie
else
{
// połączenie z bazą danych, NIE ZAPOMINJ USTAWIĆ WŁASNYCH DANYCH!
$link = mysql_connect('localhost', 'animep_blog', 'blog');
if (!$link) {
die('Not connected : ' . mysql_error());
}

// make foo the current db
$db_selected = mysql_select_db('foo', $link);
if (!$db_selected) {
die ('Can\'t use foo : ' . mysql_error());
}
// Query
$query = sprintf("SELECT * FROM animep_blog WHERE user='%animep_blog' AND password='%blog'",
		mysql_real_escape_string($user),
		mysql_real_escape_string($password));
?>

// skonstruowanie zapytania
// zwróć uwagę na operator Like - to on jest sercem całej aplikacji. Pozwala wyszukać dany ciąg w bazie danych
// jak zapewne zauważyłeś, przed frazą i po niej umieszczam znaki procenta %
// ten znak symbolizuje dowolny inny ciąg znaków, więc jest niezbędny do skutecznego wyszukiwania
// połaczenie operatorem Or pozwala na wyszukiwanie danego ciągu zarówno w nazwie, jak i opisie produktu
// UWAGA! Tutaj też nie zapomnij ustawić swoich danych!
$query= 'select * from `c_newsy` where `tytul` LIKE "%' . mysql_real_escape_string  ($unescaped_string ($_POST['phrase'])) . '%"';
// wysłanie zapytania do bazy danych
$result=mysql_query($query,$base)  or die(mysql_error());
// ustalenie ilości wyszukanych obiektów
$obAmount=mysql_num_rows($result);
// wyswietlenie ilości wyszukanych obiektów
echo'Znaleziono: '.$obAmount.'<br /><br />';
// wyświetlenie wyników w pętli
for($x=0;$x<$obAmount;$x++)
{
// przekształcenie danych na tablicę
$row=mysql_fetch_assoc($result);
// wyświetlenie numeru identyfikacyjnego
echo $x+1;
echo '. ';
// wyświetlenie nazwy produktu
echo $row['tytul'];
echo'<br />';
}
}
// zamknięcie połączenia
mysql_close($base);
// koniec aplikacji
?>

Parse error: syntax error, unexpected $end in /home/animep/public_html/blog/szukaj.php on line 60

Mógłbyś mi to poprawić? Choć pewnie jak zobaczysz co tam naprodukowałem, to padniesz ze śmiechu :)

Odnośnik do komentarza
Udostępnij na innych stronach

@Mógłbyś mi to poprawić?

Niestety, ale musisz do tego dojść samemu. Wszystkie niezbędne pomoce masz podane jak na tacy https://www.php.net/manual/en/ref.mysql.php

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

$query= 'Select pole From nazwa Where tutaj_nie_wiem_jak_to_sie_zwalo Like "%' . $_POST['szukaj'] . '%"';

mam sobie o to taki kod, no i jak to uzupełnić, założmy, że mam bazę danych w mysql:

Nazwa bazy animep_pb

Nazwa usera animep_blog

Nazwa tabeli w bazie c_newsy

Mógłby mi ktoś to uzupełnić? Dodam, że jak wejdę w tą tabelę to w mysql z prawej na takim żółtym tle pojawia mi się SELECT * to po tym select w kodzie mam dodać tą gwiazdkę?

Ale żeś to napisał.. :) Nie dziw się, że nikt nie odpowiada, bo nie wiaodmo o co chodzi.

Poprawne pytanie to: "Jak zbudować zapytanie, które LIKE`em przeszuka bazę danych..."

Odpowiedź: w prosty sposób mniej więcej tak jak miałeś:

$query= "SELECT pole_lub_pola_zwracane FROM c_newsy WHERE pole_przesukiwane LIKE '%" . $_POST['szukaj'] . "%'";

twitter.com/JakubKrol - informacje o tym co robimy | TheFirstPath.com - aplikacje natywne, mobile, strony WWW, CMS

Odnośnik do komentarza
Udostępnij na innych stronach

Jemu nie działa, bo ma dodatkowe błędy o jakich pisałem

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności