Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Brak wyników zapytania przy zmianie kolumny
Forum PHP.pl > Forum > Przedszkole
karolo_k
Witam, mam bardzo dziwny problem, którego nie mogę nigdzie zlokalizować w moim kodzie...
Siedzę nad tym już chyba 3 wieczór i nie mogę tego przełknąć.

Tutaj jest kod mojego index.php, ale on nie jest najważniejszy:
  1. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script>
  2. <script>
  3. function suggest(inputString){
  4. if(inputString.length == 0) {
  5. $('#suggestions').fadeOut();
  6. } else {
  7. $('#country').addClass('load');
  8. $.post("autosuggest.php", {queryString: ""+inputString+""}, function(data){
  9. if(data.length >0) {
  10. $('#suggestions').fadeIn();
  11. $('#suggestionsList').html(data);
  12. $('#country').removeClass('load');
  13. }
  14. });
  15. }
  16. }
  17.  
  18. function fill(thisValue) {
  19. $('#country').val(thisValue);
  20. setTimeout("$('#suggestions').fadeOut();", 600);
  21. }
  22.  
  23. </script>
  24.  
  25. <style>
  26. #result {
  27. height:20px;
  28. font-size:16px;
  29. font-family:Arial, Helvetica, sans-serif;
  30. color:#333;
  31. padding:5px;
  32. margin-bottom:10px;
  33. background-color:#FFFF99;
  34. }
  35. #country{
  36. padding:3px;
  37. border:1px #CCC solid;
  38. font-size:17px;
  39. }
  40. .suggestionsBox {
  41. position: absolute;
  42. left: 0px;
  43. top:40px;
  44. margin: 26px 0px 0px 0px;
  45. width: 200px;
  46. padding:0px;
  47. background-color: #000;
  48. border-top: 3px solid #000;
  49. color: #fff;
  50. }
  51. .suggestionList {
  52. margin: 0px;
  53. padding: 0px;
  54. }
  55. .suggestionList ul li {
  56. list-style:none;
  57. margin: 0px;
  58. padding: 6px;
  59. border-bottom:1px dotted #666;
  60. cursor: pointer;
  61. }
  62. .suggestionList ul li:hover {
  63. background-color: #FC3;
  64. color:#000;
  65. }
  66. ul {
  67. font-family:Arial, Helvetica, sans-serif;
  68. font-size:11px;
  69. color:#FFF;
  70. padding:0;
  71. margin:0;
  72. }
  73.  
  74. .load{
  75. background-image:url(loader.gif);
  76. background-position:right;
  77. background-repeat:no-repeat;
  78. }
  79.  
  80. #suggest {
  81. position:relative;
  82. }
  83.  
  84. </style>

Teraz podam kod pliku który właśnie mnie intryguje:
  1. $db = new mysqli('localhost', 'root' ,'', 'kraje2');
  2.  
  3. if(!$db) {
  4.  
  5. echo 'Could not connect to the database.';
  6. } else {
  7.  
  8. if(isset($_POST['queryString'])) {
  9. $queryString = $db->real_escape_string($_POST['queryString']);
  10.  
  11. if(strlen($queryString) >0) {
  12.  
  13. $query = $db->query("SELECT country FROM box WHERE ip LIKE '$queryString%' LIMIT 10");
  14. if($query) {
  15. echo '<ul>';
  16. while ($result = $query ->fetch_object()) {
  17. echo '<li onClick="fill(\''.addslashes($result->country).'\');">'.$result->country.'</li>';
  18. }
  19. echo '</ul>';
  20.  
  21. } else {
  22. echo 'OOPS we had a problem :(';
  23. }
  24. } else {
  25. // do nothing
  26. }
  27. } else {
  28. echo 'There should be no direct access to this script!';
  29. }
  30. }

Korzystam z takiego zapytania: SELECT country FROM box WHERE ip LIKE '$queryString%' LIMIT 10
To podając cyferki w zapytaniu w podpowiedziach wyświetlają mi się nazwy krajów, czyli wszystko jest OK
http://imageshack.us/photo/my-images/864/18420262.png/
No ale mi nie o to chodzi... chce żeby po podaniu numerka w podpowiedzi były numerki (a dokładniej to adresy ip)
Więc zamieniam zapytanie na SELECT ip FROM box WHERE ip LIKE '$queryString%' LIMIT 10
Odświeżam, wprowadzam znowu 1 do formularza i proszę:
http://imageshack.us/photo/my-images/846/nook.png/

Dołączę SQL mojej bazy:
  1. -- phpMyAdmin SQL Dump
  2. -- version 3.2.0.1
  3. -- <a href="http://www.phpmyadmin.net" target="_blank">http://www.phpmyadmin.net</a>
  4. --
  5. -- Host: localhost
  6. -- Czas wygenerowania: 13 Lut 2012, 11:06
  7. -- Wersja serwera: 5.1.37
  8. -- Wersja PHP: 5.3.0
  9.  
  10. SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
  11.  
  12. --
  13. -- Baza danych: `kraje2`
  14. --
  15.  
  16. -- --------------------------------------------------------
  17.  
  18. --
  19. -- Struktura tabeli dla `box`
  20. --
  21.  
  22. CREATE TABLE IF NOT EXISTS `box` (
  23. `id` int(3) NOT NULL AUTO_INCREMENT,
  24. `ip` varchar(15) NOT NULL,
  25. `port` int(7) NOT NULL,
  26. `password` varchar(20) NOT NULL,
  27. `country` varchar(20) NOT NULL,
  28. PRIMARY KEY (`id`)
  29. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
  30.  
  31. --
  32. -- Zrzut danych tabeli `box`
  33. --
  34.  
  35. INSERT INTO `box` (`id`, `ip`, `port`, `password`, `country`) VALUES
  36. (1, '127.0.1.1', 22, 'karol123', 'poland'),
  37. (2, '12.12.12.12', 12, '12', 'dojczland');

Na czym polega ten problem że po zmianie tabeli nie widze wyników a ich ilość jest prawidłowa (prawidłowa bo lista podpowiedzi się rozwinęła a ale jest pusta)
nospor
A to: $result->country
zmieniles na: $result->ip
?
Majkelo23
  1. LIKE '$queryString%'


Brakuje Ci jednego znaku procenta.
nospor
@Majkelo a co ma piernik do wiatraka? Skoro chce szukać pasujące na prawo, to po co mu wciskasz pasujące na wszystko? Na dodatek to nie ma żadnego związku z błędem.
karolo_k
Super Lkingsmiley.png
Cytat
A to: $result->country
zmieniles na: $result->ip
?

Pomogło, ale czy da się to
Kod
echo '<li onClick="fill(\''.addslashes($result->country).'\');">'.$result->country.'</li>';
przerobić na bardziej uniwersalne ?

Dziekuje za pomoc. Daje +
nospor
Mnie tylko zastanawia, jak można tak kłamać:
Cytat
Siedzę nad tym już chyba 3 wieczór i nie mogę tego przełknąć.
Sorki, ale nie wierzę, żę siedziałeś nad tym 3 dni (wieczory).
Skoro linie się zgadzały, a nie zgadzała ci się treść tych linii, znaczy ze ta linia:
echo '<li onClick="fill(\''.addslashes($result->country).'\');">'.$result->country.'</li>';
zawiera błąd.
Przez trzy wieczory to chcąc nie chcąc by się wpadło na rozwiązanie - choćby z nudów.

Pomijam już tak banalny fakt, jak włączenie wyświetlania wszystkich błędów. Jakbyś to zrobił, to błąd byś znalazł w 10 sekund a nie w pseudo 3 wieczory.

Jak wyświetlać wszystkie błędy masz napisane tu:
Temat: Jak poprawnie zada pytanie
Przeczytaj cały wątek - przyda ci się bardzo.

Wracając do drugiego pytania:
zamiast fetch_object() użyj fetch_row() - zajrzyj do manuala by doczytać co to zwraca i jak tego używać.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.