Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> Problem z kwerendą, Zapytanie nie wykonuje się
marekm65
post 7.10.2017, 09:25:24
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 21.01.2007
Skąd: Pabianice

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


Witam serdecznie!

Mam na swojej stronie wyszukiwarkę, która nie do końca działa poprawnie

Kwerenda wyszukująca ma postać:
  1. SELECT * FROM produkcja WHERE (maszyna LIKE '%' AND nazwa_asortymentu LIKE '724' AND przedza LIKE '%' AND l1r LIKE '%' AND l1p LIKE '%' AND l2r LIKE '%' AND l2p LIKE '%' AND oczka LIKE '%' AND dzien LIKE '%' AND miesiac LIKE '%' AND rok LIKE '%')


Jeśli nie wpiszę w formularz nazwy asortymentu wszystko działa Ok, jeśli wpiszę asortyment 724 znajdujący się w bazie w tabeli `produkcja` w rezultacie nie dostaję żadnego wyniku. Gdy wpiszę jako nazwę ciąg liter np tiul wszystko działa poprawnie. Pole nazwa asortymentu jest typu tekstowego. Inne zapytania bez nazwy asortymentu wykonują się poprawnie.

Co robię źle? Proszę o podpowiedź,

Pozdrawiam,

Marek
Go to the top of the page
+Quote Post
trueblue
post 7.10.2017, 09:42:34
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Jeśli nazwa asortymentu zawiera frazę 724, a nie stanowi tylko 724, to fragment:
  1. nazwa_asortymentu LIKE '724'

powinien wyglądać tak:
  1. nazwa_asortymentu LIKE '%724%'


Postaraj się na poziomie skryptu zoptymalizować budowę zapytania - wszystkie LIKE '%' są zupełnie niepotrzebne.


--------------------
Go to the top of the page
+Quote Post
marekm65
post 7.10.2017, 10:14:46
Post #3





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 21.01.2007
Skąd: Pabianice

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


Dziekuję za szybką odpowiedź. Nazwa asortymentu 724 to cała jego nazwa. Tak samo tiul, z tym że tiul wyszukuje, a 724 nie. Co może być nie tak?
Go to the top of the page
+Quote Post
trueblue
post 7.10.2017, 10:30:59
Post #4





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


A nie ma tam czasem spacji lub innego białego znaku?

Sprawdź:
  1. SELECT * FROM produkcja WHERE CHAR_LENGTH(nazwa_asortymentu)<>CHAR_LENGTH(TRIM(nazwa_asortymentu))


--------------------
Go to the top of the page
+Quote Post
marekm65
post 7.10.2017, 10:40:18
Post #5





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 21.01.2007
Skąd: Pabianice

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


Kwerenda, którą mi podałeś zwraca pusty wynik, czyli białych spacji brak.
Go to the top of the page
+Quote Post
trueblue
post 7.10.2017, 10:46:31
Post #6





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


A co zwraca zapytanie:
  1. SELECT * FROM produkcja WHERE nazwa_asortymentu LIKE '724'

?


--------------------
Go to the top of the page
+Quote Post
marekm65
post 7.10.2017, 10:52:28
Post #7





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 21.01.2007
Skąd: Pabianice

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


Zapytanie zwraca pusty wynik. Gdy to samo zapytanie wpiszę w PHPMyAdmin wszystko jest Ok, walczę z tym już kilka dni i nic.
Go to the top of the page
+Quote Post
trueblue
post 7.10.2017, 10:54:10
Post #8





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


A zapytanie, które podałeś wcześniej, jeśli je wykonujesz bezpośrednio w PHPMyAdmin, to dostajesz wyniki?

Ten post edytował trueblue 7.10.2017, 10:55:03


--------------------
Go to the top of the page
+Quote Post
marekm65
post 7.10.2017, 10:58:01
Post #9





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 21.01.2007
Skąd: Pabianice

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


Jakim tropem więc mam iść?

"SELECT * FROM produkcja WHERE nazwa_asortymentu LIKE 'tiul'"; - kwerenda w takiej postaci z poziomu PHP działa.
Go to the top of the page
+Quote Post
trueblue
post 7.10.2017, 11:00:53
Post #10





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Zapytanie:
  1. SELECT * FROM produkcja WHERE nazwa_asortymentu LIKE 'tiul'

z poziomu PHP działa, a zapytanie:
  1. SELECT * FROM produkcja WHERE nazwa_asortymentu LIKE '724'

nie działa?


--------------------
Go to the top of the page
+Quote Post
marekm65
post 7.10.2017, 11:09:24
Post #11





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 21.01.2007
Skąd: Pabianice

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


Niestety nie. Gdy tylko zmienię tiul na 724 w kwerendzie wynik jest pusty mimo, że taki rekord istnieje.

Pole nazwa_asortymentu w bazie jest typu text
Metoda porównywania napisów utf8_polish_ci

Go to the top of the page
+Quote Post
trueblue
post 7.10.2017, 11:11:23
Post #12





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


A bezpośrednio na bazie obydwa dają wynik, tak?
Jeśli tak, to pokaż w jaki sposób pobierasz wyniki w PHP.


--------------------
Go to the top of the page
+Quote Post
marekm65
post 7.10.2017, 11:16:46
Post #13





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 21.01.2007
Skąd: Pabianice

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


  1. include('link.php');
  2.  
  3. $maszyna=$_POST['maszyna']; if($maszyna==NULL) $maszyna="%"; //echo"<br>Maszyna = ".$maszyna;
  4. $nazwa_asortymentu=$_POST['nazwa_asortymentu'];
  5. $przedza=$_POST['przedza'];
  6. if($przedza==NULL) $przedza="%";
  7. //echo"<br>Przędza = ".$przedza;
  8.  
  9. $l1r=$_POST['l1r'];
  10. if($l1r==NULL) $l1r="%";
  11.  
  12. $l1p=$_POST['l1p'];
  13. if($l1p==NULL) $l1p="%";
  14.  
  15. $l2r=$_POST['l2r'];
  16. if($l2r==NULL) $l2r="%";
  17.  
  18. $l2p=$_POST['l2p'];
  19. if($l2p==NULL) $l2p="%";
  20.  
  21. $oczka=$_POST['oczka'];
  22. if($oczka==NULL) $oczka="%";
  23.  
  24. $dzien=$_POST['dzien'];
  25. if($dzien==NULL) $dzien="%";
  26.  
  27. $miesiac=$_POST['miesiac'];
  28. if($miesiac==NULL) $dzien="%";
  29.  
  30. $rok=$_POST['rok'];
  31. if($rok==NULL) $rok="%";
  32.  
  33. $wyszukaj = "SELECT * FROM produkcja WHERE nazwa_asortymentu LIKE '724'";
  34.  
  35. echo"<br>".$wyszukaj;
  36. $result1 = mysql_query($wyszukaj);


Ten post edytował marekm65 7.10.2017, 11:17:54
Go to the top of the page
+Quote Post
trueblue
post 7.10.2017, 11:18:49
Post #14





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


A gdzie reszta?


--------------------
Go to the top of the page
+Quote Post
marekm65
post 7.10.2017, 11:26:00
Post #15





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 21.01.2007
Skąd: Pabianice

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


  1. <?
  2. ?>
  3. <html>
  4. <head>
  5. <link rel="stylesheet" href="css/style.css">
  6. <meta charset="UTF-8">
  7. </head>
  8. <body>
  9. <?
  10. ini_set('display_errors', 'on');
  11. ini_set('error_reporting', 'E_ALL | E_STRICT');
  12. if (isset($_SESSION['logged'])) echo"<p>Użytkownik zalogowany - ".$_SESSION['logged']. " <a href='index.php?a=logout'>Wyloguj</a></p>";
  13. include('header.php');
  14. include('menu.php');
  15. echo"<h2 align='center'>Wynik wyszukiwania</h2>";
  16. include('link.php');
  17.  
  18. $maszyna=$_POST['maszyna']; if($maszyna==NULL) $maszyna="%"; //echo"<br>Maszyna = ".$maszyna;
  19. $nazwa_asortymentu=$_POST['nazwa_asortymentu'];
  20. if($nazwa_asortymentu==NULL) $nazwa_asortymentu="%";
  21.  
  22. $przedza=$_POST['przedza'];
  23. if($przedza==NULL) $przedza="%";
  24. //echo"<br>Przędza = ".$przedza;
  25.  
  26. $l1r=$_POST['l1r'];
  27. if($l1r==NULL) $l1r="%";
  28.  
  29. $l1p=$_POST['l1p'];
  30. if($l1p==NULL) $l1p="%";
  31.  
  32. $l2r=$_POST['l2r'];
  33. if($l2r==NULL) $l2r="%";
  34.  
  35. $l2p=$_POST['l2p'];
  36. if($l2p==NULL) $l2p="%";
  37.  
  38. $oczka=$_POST['oczka'];
  39. if($oczka==NULL) $oczka="%";
  40.  
  41. $dzien=$_POST['dzien'];
  42. if($dzien==NULL) $dzien="%";
  43.  
  44. $miesiac=$_POST['miesiac'];
  45. if($miesiac==NULL) $dzien="%";
  46.  
  47. $rok=$_POST['rok'];
  48. if($rok==NULL) $rok="%";
  49.  
  50. $wyszukaj="SELECT * FROM produkcja WHERE (maszyna LIKE '$maszyna' AND nazwa_asortymentu LIKE '$nazwa_asortymentu' AND przedza LIKE '$przedza' AND l1r LIKE '$l1r' AND l1p LIKE '$l1p' AND l2r LIKE '$l2r' AND l2p LIKE '$l2p' AND oczka LIKE '$oczka' AND dzien LIKE '$dzien' AND miesiac LIKE '$miesiac' AND rok LIKE '$rok')";
  51. //$wyszukaj="SELECT * FROM produkcja WHERE (nazwa_asortymentu LIKE '%$nazwa_asortymentu%')";
  52.  
  53. //$wyszukaj="SELECT * FROM produkcja WHERE CHAR_LENGTH(nazwa_asortymentu)<>CHAR_LENGTH(TRIM(nazwa_asortymentu))";
  54. //$wyszukaj = "SELECT * FROM produkcja WHERE nazwa_asortymentu LIKE '724'";
  55.  
  56. echo"<br>".$wyszukaj;
  57. $result1 = mysql_query($wyszukaj);
  58.  
  59. if ($rek1 = mysql_fetch_array($result1)) {
  60. echo"<table align='center' border='0' cellspacing='6' cellpadding='6'><tr bgcolor='#55acee'><th>ID</th><th>Data dodania</th><th>Masz.</th><th>Asort.</th><th>Przędza</th><th>Spec. barw.</th><th>L1-R dół</th><th>L1-P</th><th>L1-W</th><th>L2-R</th><th>L2-P</th><th>L2-W</th><th>L3-R</th><th>L3-P</th><th>L3-W</th><th>Oczka</th><th>mb</th><th align='center'>kg</th><th>Gram.</th><th>Szer.</th><th>Dane</th><th>Kod błędu</th><th>Serwis</th></tr>";
  61. $i=0;
  62. while($rek = mysql_fetch_array($result1)) {
  63. if ($i%2==0) echo"<tr bgcolor='#ADD8E6' align='center'>"; else echo"<tr bgcolor='#87CEFA' align='center'>";
  64. echo"<td>".$rek['lp']."</td><td>".$rek['data']."</td><td align='center'>".$rek['maszyna']."</td><td>".$rek['nazwa_asortymentu']."</td><td>".$rek['przedza']."</td><td>".$rek['specyfikacja']."</td><td>".$rek['l1r']."</td><td>".$rek['l1p']."</td><td>".$rek['l1w']."</td><td>".$rek['l2r']."</td><td>".$rek['l2p']."</td><td>".$rek['l2w']."</td><td>".$rek['l3r']."</td><td>".$rek['l3p']."</td><td>".$rek['l3w']."</td><td>".$rek['oczka']."</td><td>".$rek['mb']." mb</td><td>".$rek['kg']." kg</td><td align='right'>".$rek['gramatura']." g/m<sup>2</sup></td><td>".$rek['szerokość']." cm</td><td>".$rek['dane']."</td><td>".$rek['kod_bledu']."</td><td width='150'>".$rek['serwis']."</td></tr>";
  65. $i++; }
  66. echo"</table>";
  67. // Koniec kodu
  68. }
  69. if ($i!=0) {
  70. echo "<p align='center'>Liczba znalezionych rekrodów - ".$i."</p>";} else echo"<p align='center'>Brak wyników wyszukiwania</p>";
  71. ?>
  72. <h3 align='center'><a href='wyszukaj.php'>Nowe wyszukiwanie</a></h3>
  73. </body>
  74. </html>
Go to the top of the page
+Quote Post
trueblue
post 7.10.2017, 11:35:03
Post #16





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Pobierasz dwa razy rekordy, raz w if drugi raz w while.

Ten post edytował trueblue 7.10.2017, 11:36:30


--------------------
Go to the top of the page
+Quote Post
marekm65
post 7.10.2017, 14:45:31
Post #17





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 21.01.2007
Skąd: Pabianice

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


Serdeczne dzięki za pomoc. Problem rozwiązany, miłego weekendu. Pozdrawiam. Marek
Go to the top of the page
+Quote Post
viking
post 7.10.2017, 14:58:39
Post #18





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


Ty to gdzieś produkcyjne używasz? Jest pełno dziur, stare rozszerzenie mysql, kolorowanie wierszy w CSS się robi, używaj pełnego '<?php' itd.


--------------------
Go to the top of the page
+Quote Post
marekm65
post 10.10.2017, 21:38:05
Post #19





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 21.01.2007
Skąd: Pabianice

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


Robię to na serwerze strony firmowej kolegi. Programik jest do obsługi dziewiarni. A pliki znajdują się na serwerze Ogicom.
Go to the top of the page
+Quote Post
viking
post 11.10.2017, 05:47:11
Post #20





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


To pozostaje mieć tylko nadzieję że nie trzyma tam nic ważnego typu dane klientów.


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 29.03.2024 - 08:32