Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]Wyszukiwanie rekordów z bazy MySQL, problem z kodem
filippopipetto
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 2.06.2009

Ostrzeżenie: (0%)
-----


Witam Państwa! Jestem tu noobem i nie wiem czy już gdzieś nie dupklikuje tematu. Mam problem z wyszukiwaniem rekordów z bazy MySql. Oto kod:

  1. <html>
  2. <head>
  3.  <title>Inwentaryzacja sprzętu w salach</title>
  4. </head>
  5. <body>
  6. <h2>Inwentaryzacja sprzętu - rezultaty wyszukiwania </h2>
  7.  
  8. <?php
  9. $connection = mysql_connect('moje polaczenie', 'moj login', 'moje haslo')
  10. or die('Brak polaczenia z serwerem.<br />Błąd: '.mysql_error());
  11. echo "Udalo sie polaczyc z serwerem.<br />";
  12. $db = mysql_select_db('moja baza', $connection)
  13. or die('Brak połączenia z bazą danych.<br />Błąd: '.mysql_error());
  14. echo "Udało się połączyć z bazą danych.";
  15.  // utworzenie krótkich nazw zmiennych
  16.  $metoda_szukania=$_POST['metoda_szukania'];
  17.  $wyrazenie=$_POST['wyrazenie'];
  18.  
  19.  $wyrazenie= trim($wyrazenie);
  20.  
  21.  // wykonanie zapytania
  22.  $zapytanie = "select * from tabela where ".$metoda_szukania." like '%".$wyrazenie."%'";
  23.  
  24.  {
  25.    $metoda_szukania = addslashes($metoda_szukania);
  26.    $wyrazenie = addslashes($wyrazenie);
  27.  }
  28.  
  29.  
  30.  if (!$metoda_szukania || !$wyrazenie)
  31.  {
  32.     echo '<br>Brak parametrów wyszukiwania. Wróć do poprzedniej strony i spróbuj ponownie.';
  33.     exit;
  34.  }
  35.  
  36.  
  37.  $wynik = $db->query($zapytanie);
  38.  // sprawdzenie, czy wynik jest OK
  39.  if (DB::isError($wynik))
  40.  {
  41.    echo $db->getMessage();
  42.    exit;
  43.  }
  44.  
  45.  // pobranie liczby zwróconych wierszy
  46.  $ile_znalezionych = $wynik->numRows();
  47.  
  48.  // wyświetlenie każdego zwróconego wiersza
  49.  for ($i=0; $i <$ile_znalezionych; $i++)
  50.  {
  51.     $wiersz = $wynik->fetchRow(DB_FETCHMODE_ASSOC);
  52.     echo '<p><strong>'.($i+1).'. Numer_sali: ';
  53.     echo stripslashes($wiersz['Numer_sali']);
  54.     echo '</strong><br />Meble: ';
  55.     echo stripslashes($wiersz['Meble']);
  56.     echo '<br />Sprzet: ';
  57.     echo stripslashes($wiersz['Sprzet']);
  58.     echo '<br />Oprogramowanie: ';
  59.     echo stripslashes($wiersz['Oprogramowanie']);
  60.     echo '</p>';
  61.  }
  62.  $wynik->free();
  63.  $db->close();
  64.  
  65.  // rozłączenie się z bazą danych
  66.  $db->disconnect();
  67.  ?>
  68.  
  69. </body>
  70. </html>


Ten post edytował nospor 2.06.2009, 09:47:46
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Jestem tu noobem
A jak idziesz do lekarza pierwszy raz to wpadasz do gabinetu z tekstem:
Jestem noobem, boli mnie. doktor ratuj!!!!

Czy moze
Panie doktorze, boli mnie tu i tu gdy robie to i to. Oco chodzi?


Tak samo tutaj. Nie obchodzi nas kim ty jestes. Nas interesuje problem jaki masz, a ty nie raczyles go opisac. Co sie dzieje? Komputer sie pali? Kod pluje bledem? Inne?

ps: uzywaj wlasciwego bbcode. do kodu php ma to byc php
Go to the top of the page
+Quote Post
filippopipetto
post
Post #3





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 2.06.2009

Ostrzeżenie: (0%)
-----


już zmieniłem jak tak Cię to bolało to po primo.
Problem jest taki iż nie wiem w którym miejscu kodu został popełniony błąd (łaczy sie z baza, nie wyszukuje danych z bazy i wyświetla:)

Kod
Udalo sie polaczyc z serwerem.
Udało się połączyć z bazą danych.
Brak parametrów wyszukiwania. Wróć do poprzedniej strony i spróbuj ponownie.


A teraz to pragne wyjasnic że napisałem że jestem noobem abyście mnie od razu nie wysmiali i skrytykowali co właśnie uczyniłeś. Nie wiem z jakiej racji masz moderatora ale takimi tekstami nikomu nie pomagasz więc łaskawie proszę zanim się zdenerwuje aby ktoś udzielił mi odpowiedzi na temat albo w ogóle nie pisał głupot bo zgłosze to jako spam do admina Ty modku.
Czuje że dostane bana ale się nie boje, no cóż nie wszędzie zachowanie administracji jest przyjazne w stosunku do użytkownika!

Pozdrawiam
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
już zmieniłem jak tak Cię to bolało to po primo.
po to jest wlasciwe bbcode, by go uzywac i by inni uzytkownicy mieli ulatwioną analize kodu. bbcode nie jest dla zachciewajki moderatora. Czas to zrozumiec.

Cytat
A teraz to pragne wyjasnic że napisałem że jestem noobem abyście mnie od razu nie wysmiali i skrytykowali co właśnie uczyniłeś
ja rozumiem byc noobem w php czy innym jezyku programowania, ale nie rozumiem jak mozna byc noobem w mysleniu (pomijam tu roznego rodzaju choroby psychiczne). Moim postem nie chcialem cie obrazic, a jedynie dac delikatnie zrozumienia, bys pomyslal troche zanim przedstawisz nam "niesamowity" opis problemu (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Cytat
ale takimi tekstami nikomu nie pomagasz
Mistrzu, jakbym ja ci tego nie napisal, napisalby ci to kazdy inny na kazdym innym forum. Wrozek nie ma i nikt nie wie jaki masz problem dopoki go nie opiszesz. Poraz kolejny powtarzam - mysl troche....

Co do problemu:
no to ewidentnie nie wypelniles pola o nazwie metoda_szukania oraz wyrazenie. Albo masz cos z formem: wysylasz go getem a nie postem
Go to the top of the page
+Quote Post
Lonas
post
Post #5





Grupa: Zarejestrowani
Postów: 576
Pomógł: 14
Dołączył: 9.11.2005

Ostrzeżenie: (20%)
X----


Sprawdz co Ci zwraca tablica $_POST i czy są tam dane odnosnie metody szukania i wyraznia..

  1. <?php
  2. echo'<pre>';
  3. print_r($_POST);
  4. echo'</pre>';
  5. ?>
Go to the top of the page
+Quote Post
wookieb
post
Post #6





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




A ja "zwrócę uwagę" na:
  1. <?php
  2. // wykonanie zapytania
  3.  $zapytanie = "select * from tabela where ".$metoda_szukania." like '%".$wyrazenie."%'";
  4.  
  5.  {
  6.    $metoda_szukania = addslashes($metoda_szukania);
  7.    $wyrazenie = addslashes($wyrazenie);
  8.  }
  9. ?>

Najpierw tworzysz zapytanie z parametrami a dopiero potem parametry "zabezpieczasz" przed sql injection.

2 sprawa.
  1. <?php
  2. $wynik = $db->query($zapytanie);
  3. ?>

$db uzywasz jako obiektu. A sprawdz skad masz to db i w manualu do tej funkcji sprawdz czy rzeczywiscie zwraca ci obiekt.
Podejrzewam, ze
a) nie utworzyles egzemplarza obiektu twoej klasy do obslugi bazy danych
(IMG:http://forum.php.pl/style_emoticons/default/cool.gif) nadpisales $db

Ten post edytował wookieb 2.06.2009, 09:56:15
Go to the top of the page
+Quote Post
filippopipetto
post
Post #7





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 2.06.2009

Ostrzeżenie: (0%)
-----


Dobrze, a może macie inne prostsze rozwiązanie tego tematu, byle żeby wyszukiwało dane z bazy. Jakiś prostszy kod bez tych rzeczy które mogą nie działać w powyższym przykładzie.
Go to the top of the page
+Quote Post
wookieb
post
Post #8





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Kod?
Kod to ja np mam Leonarda Da Vinca.
Mam tez KOTA leonarda da vinci.
Mam tez wiele pomysłów na zycie.
A dla ciebie mam propozycje abys po prostu poprawił swój kod (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Dostałeś stosowne uwagi i wystarczy się do nich zastosowac i tutaj nie trzeba być PRO (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

// DOWN Jakaś druga część?? (IMG:http://forum.php.pl/style_emoticons/default/exclamation.gif) Wyślesz? (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

Ten post edytował wookieb 2.06.2009, 10:59:54
Go to the top of the page
+Quote Post
filippopipetto
post
Post #9





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 2.06.2009

Ostrzeżenie: (0%)
-----


Dobra panowie jestem kolegą autora topicku i opiszę dokładniej problem, jako że robie z nim ten projekt. Może dacie radę pomoć (IMG:http://forum.php.pl/style_emoticons/default/rolleyes.gif)

Baza stoi na serwerze uczelnianym (phpMyAdmin baza MySQL) ma następująca budowę <strukture tabel>:
ID int(11) auto_increment (primary Key)
Numer_sali varchar(5)
Meble varchar(50)
Sprzet varchar(50)
Oprogramowanie varchar(50)


Naszym problemem jest to iż nie do końca działa poniższy KOD, nie wiem czy mamy zdefiniowane wszystkie zawarte tu wyrażnia oraz czy nie można by go jakoś uprościć i zrobić innym sposobem, niekoniecznie takim jak nasz (po czesci skopiowany z ksiazki).

Tak jak mówiliście możliwe jest to iż poszczególne części zawarte w { } są zastosowane nie w tej kolejności co należy (np. jako piersze połączenie, definicja pol wyszukiwania, (...). Zastanawia mnie również czy potrzebne sa:
Kod
$wyrazenie= trim($wyrazenie);

Kod
if (!get_magic_quotes_gpc())
  {
    $metoda_szukania = addslashes($metoda_szukania);
    $wyrazenie = addslashes($wyrazenie);
  }

oraz stripsplashes-y np.
Kod
echo stripslashes($wiersz['Oprogramowanie']);



Obecnie połaczenie działa a następnie wyświetla brak parametrów wyszukiwania, jakby czegoś nie czytał.
Zrobilismy cos podobnego z dodawaniem wpisów do bazy, tamten formularz php nam działa, ten niestety nie!


Proszę o pomoc, rady a najlepiej poprawki w kodzie. Z góry dziekuje i przepraszam za przedmowce! (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)


KOD: (rezultaty.php)
  1. <html>
  2. <head>
  3.  <title>Inwentaryzacja sprzętu w salach</title>
  4. </head>
  5. <body>
  6. <h2>Inwentaryzacja sprzętu - rezultaty wyszukiwania </h2>
  7. <p><h2><a href=" #nasz link# ">Powrót do strony głównej</a></h2></p>
  8. <p><h2><a href=" #nasz link# ">Powrót do wyszukiwania</a></h2></p>
  9.  
  10. <?php
  11.  
  12. $connection = mysql_connect(#nasze połączenie#)
  13. or die('Brak polaczenia z serwerem.<br />Błąd: '.mysql_error());
  14. echo "Udalo sie polaczyc z serwerem.<br />";
  15. $db = mysql_select_db(#nasza baza#', $connection)
  16. or die('Brak połączenia z bazą danych.<br />Błąd: '.mysql_error());
  17. echo "Udało się połączyć z bazą danych.";
  18.  
  19.  // utworzenie krótkich nazw zmiennych
  20.  $metoda_szukania=$_POST['metoda_szukania'];
  21.  $wyrazenie=$_POST['wyrazenie'];
  22.  
  23.  $wyrazenie= trim($wyrazenie);
  24.  $zapytanie = "select * from #nasza tabela# where ".$metoda_szukania." like '%".$wyrazenie."%'";
  25.  
  26.  {
  27.    $metoda_szukania = addslashes($metoda_szukania);
  28.    $wyrazenie = addslashes($wyrazenie);
  29.  }
  30.  
  31.  if (!$metoda_szukania || !$wyrazenie)
  32.  {
  33.     echo '<br>Brak parametrów wyszukiwania. Wróć do poprzedniej strony i spróbuj ponownie.';
  34.     exit;
  35.  }
  36.  
  37.  $wynik = $db->query($zapytanie);
  38.  if (DB::isError($wynik))
  39.  {
  40.    echo $db->getMessage();
  41.    exit;
  42.  }
  43.  
  44.  $ile_znalezionych = $wynik->numRows();
  45.  
  46.  for ($i=0; $i <$ile_znalezionych; $i++)
  47.  {
  48.     $wiersz = $wynik->fetchRow(DB_FETCHMODE_ASSOC);
  49.     echo '<p><strong>'.($i+1).'. Numer_sali: ';
  50.     echo stripslashes($wiersz['Numer_sali']);
  51.     echo '</strong><br />Meble: ';
  52.     echo stripslashes($wiersz['Meble']);
  53.     echo '<br />Sprzet: ';
  54.     echo stripslashes($wiersz['Sprzet']);
  55.     echo '<br />Oprogramowanie: ';
  56.     echo stripslashes($wiersz['Oprogramowanie']);
  57.     echo '</p>';
  58.  }
  59.  $wynik->free();
  60.  $db->close();
  61.  
  62.  $db->disconnect();
  63.  ?>
  64. </body>
  65. </html>


Ten post edytował filippopipetto 2.06.2009, 12:08:01
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
a następnie wyświetla brak parametrów wyszukiwania
no przeciez juz napisalem wczesniej:
no to ewidentnie nie wypelniles pola o nazwie metoda_szukania oraz wyrazenie. Albo masz cos z formem: wysylasz go getem a nie postem

dane te pobierasz w tym kodzie:
  1. <?php
  2. $metoda_szukania=$_POST['metoda_szukania'];
  3. $wyrazenie=$_POST['wyrazenie'];
  4. ?>

i pewnie ich nie ma w $_POST
Go to the top of the page
+Quote Post
wookieb
post
Post #11





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




A pokaz kod formularza ktory wysyla dane do "rezultaty.php"
Go to the top of the page
+Quote Post
filippopipetto
post
Post #12





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 2.06.2009

Ostrzeżenie: (0%)
-----


Dziekuje moderatorze pokombinuje cos z kodem i dodam te POST, napisze jak bedzie jakis postep.

Oto formularz HTML do powyzszego PHP:

Kod
<html>
<head>
<title>Inwentaryzacja sprzętu w salach</title>
</head>
<body>
<h2>Wyszukiwanie sprzętu</h2>
<form action="rezultaty.php" method="post"> Wybierz kryterium wyszukiwania:<br />
<select name="metoda_szukania">
<option value="Numer_sali">Numer sali
<option value="Meble">Meble
<option value="Sprzet">Sprzęt
<option value="Oprogramowanie">Oprogramowanie
</select> <br /><br>
Wprowadź poszukiwane wyrażenie:<br />
<input name="wyrażenie" type="text"> <br /><br> <input type="submit" value="Szukaj">
</form>
<p><h2><a href="#nasz link#">Powrót do strony głównej</a></h2></p>
</body>
</html>


Mam jeszcze jeden drobny problem z znakami polskimi (baza i tabele kodowane sa w UTF8 Polish i pewnie da się jakoś jedną komendą przywołać polskie znaki w HTML typu. charset czy coś, tez prosiłbym o wskazówkę (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #13





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Dziekuje moderatorze pokombinuje cos z kodem i dodam te POST,
podalem jak na dloni a ten bedzie jeszcze kombinowal.... (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

nazwa pola w formularzu: wyrażenie
nazwa pola z jakiego pobierasz dane: wyrazenie

wyrażenie
wyrazenie

widzisz drobna roznice? (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
filippopipetto
post
Post #14





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 2.06.2009

Ostrzeżenie: (0%)
-----


Odwołując się do poprzedniej wypowiedzi:

Cytat(nospor @ 2.06.2009, 13:09:38 ) *
dane te pobierasz w tym kodzie:
  1. <?php
  2. $metoda_szukania=$_POST['metoda_szukania'];
  3. $wyrazenie=$_POST['wyrazenie'];
  4. ?>

i pewnie ich nie ma w $_POST


Tak więc mam wszędzie przywoływać tutaj te pole z $_POST czy dopisać $_POST w formularzu HTML? ;>
Czy może mam dopisać jakiś kod w tutaj gdyż nie przywołuje tego co chce pobierać..

Prosiłbym o jakiś przykład, jeśli nie gotowy a mam użyć swej veny tworczej to chciałbym wiedzieć gdzie modyfikować swój kod bo nie rozumiem na 100% co poprawic (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
wookieb
post
Post #15





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Cytat(filippopipetto @ 2.06.2009, 13:36:56 ) *
dopisać $_POST w formularzu HTML? ;>

A po cholere ci to?
0 myslenia...
zamien wyraŻenie na wyrazenie w formularzu

Ten post edytował wookieb 2.06.2009, 12:39:34
Go to the top of the page
+Quote Post
filippopipetto
post
Post #16





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 2.06.2009

Ostrzeżenie: (0%)
-----


zmieniłem myślałem że chodzi o coś innego..

Teraz mam coś takiego
Fatal error: Call to a member function query() on a non-object in #ścieżka#/rezultaty.php on line 42
Go to the top of the page
+Quote Post
wookieb
post
Post #17





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Nie czytasz co sie do ciebie pisze.
http://forum.php.pl/index.php?showtopic=12...st&p=614747
I z 10 razy przeczytaj sobie ostatnie zdania.
Go to the top of the page
+Quote Post
filippopipetto
post
Post #18





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 2.06.2009

Ostrzeżenie: (0%)
-----


czytam co piszesz ale nie jestem tak biegły w php i nie wiem jak temu zaradzić. Czy tak jak napisałeś będę musiał coś utworzyć by zdefiniować $db czy wyedytować je jakoś w tym formularzu i jak to bedzie wyglądać. W skocie znam problem ale nie znam rozwiązania.
Go to the top of the page
+Quote Post
wookieb
post
Post #19





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Wiec skoro wzieliscie ten kod po czesci z ksiazki to w niej tez bedzie o tym pisac.
Go to the top of the page
+Quote Post
filippopipetto
post
Post #20





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 2.06.2009

Ostrzeżenie: (0%)
-----


ktoś bedzie tak łaskawy i mi powie jak poradzić sobie z tym problemem?
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 14:05