Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] brak pierwszego rekordu w pętli
Dopler
post 24.11.2014, 14:03:23
Post #1





Grupa: Zarejestrowani
Postów: 81
Pomógł: 0
Dołączył: 30.01.2008

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


Mam prośbę, nie umiem sobie poradzić gdzie tkwi błąd - dlaczego kod wypisuje wszystkie potrzebne rekordy oprócz pierwszego ?

kod ma wypisać z bazy miejsc pierwsze trzy litery z podziałem na linijki wg drugiej literki

jest efekt: aab, aac, aad, aae ... - a powinno być: aaa, aab, aac ....

ps. czy całość nie powinna być jakoś lepiej napisana ?

  1. if($letterm)
  2. {
  3. if(strlen($letterm)==1&&!preg_match("/%/", $letterm)&&!preg_match("/_/", $letterm))
  4. {
  5.  
  6. // nieczułość na polskie literki
  7. $letterm2 = strtr($letterm,"ćłóśż","closz");
  8. $letterm2 = strtr($letterm, array("c"=>"ć","l"=>"ł","o"=>"ó","s"=>"ś","z"=>"ż"));
  9. $letterm3 = strtr($letterm,"ź","z");
  10. $letterm3 = strtr($letterm, array("z"=>"ź"));
  11.  
  12. $getWord=mysql_query("SELECT SUBSTRING(miejsce, 1, 3) as miejsce_po FROM wlasciciele WHERE miejsce LIKE '$letterm%' OR miejsce LIKE '$letterm2%' OR miejsce LIKE '$letterm3%' GROUP BY miejsce_po", $db);
  13.  
  14.  
  15.  
  16. if($getWordArray=mysql_fetch_array($getWord))
  17. {
  18.  
  19. $previous = '';
  20.  
  21. echo "<div align=\"justify\"><ul>";
  22. while ($let = mysql_fetch_assoc($getWord)) {
  23.  
  24.  
  25. $current = substr($let['miejsce_po'],0,2);
  26. if ($current != substr($previous,0,2)) {
  27. echo "<br><li>";
  28.  
  29. }
  30.  
  31. echo "<a href=\"?lettertwom=";
  32. printf($let["miejsce_po"]);
  33. echo "\">";
  34. printf(ucfirst($let["miejsce_po"]));
  35. echo "</a>...  ";
  36.  
  37. $previous = $current;
  38.  
  39. }
  40.  
  41. echo "</ul></div>";
  42. echo "<br>";
  43. }
  44. else
  45. {
  46. echo "Niestety, nie ma na razie miejsce na literę <b>$letterm</b>";
  47. }
  48. }else{echo "Błędna wartość zmiennej letter";}
  49. }
  50.  


Ten post edytował Dopler 24.11.2014, 14:12:40


--------------------
Genealogia Polaków
Go to the top of the page
+Quote Post
mmmmmmm
post 24.11.2014, 14:37:26
Post #2





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


w 16 linii pobierasz rekord, a zaraz potem w 22 również pobierasz
Go to the top of the page
+Quote Post
Dopler
post 24.11.2014, 14:50:56
Post #3





Grupa: Zarejestrowani
Postów: 81
Pomógł: 0
Dołączył: 30.01.2008

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


jak to przerobić bo muszę mieć warunek i potem pętlę - mogę się w pętli odnieść do warunku ?


--------------------
Genealogia Polaków
Go to the top of the page
+Quote Post
Forti
post 24.11.2014, 15:08:54
Post #4





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

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


  1. ...
  2. $getWord=mysql_query("SELECT SUBSTRING(miejsce, 1, 3) as miejsce_po FROM wlasciciele WHERE miejsce LIKE '$letterm%' OR miejsce LIKE '$letterm2%' OR miejsce LIKE '$letterm3%' GROUP BY miejsce_po", $db);
  3.  
  4.  
  5.  
  6. if ($getWord) {
  7.  
  8. while ...
  9.  
  10. }
  11.  
  12. ...


--------------------
Overwatch24 - najbardziej zaawansowany Polski portal Overwatch od fanów dla fanów.

Fachowo.co

Behance.net/fachowo
Go to the top of the page
+Quote Post
Dopler
post 24.11.2014, 15:14:21
Post #5





Grupa: Zarejestrowani
Postów: 81
Pomógł: 0
Dołączył: 30.01.2008

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


Dzięki za pomoc - ale to nie rozwiązuje sytuacji - bo "else" nie działa - zamiast dawać komunikat jest pusto - taki warunek nie uwzględnia sytuacji gdy rekordów jest zero.

ale poradziłem sobie trochąż na około - usunąłe faktycznie pierwsze pobranie i zastąpiłem ilością rekordów w uzysku - i działa.


--------------------
Genealogia Polaków
Go to the top of the page
+Quote Post
Forti
post 24.11.2014, 16:28:16
Post #6





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

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


Jesteś na forum od 2008 roku i nie potrafisz zrobić warunku? Jeżeli rekordów jest 0 to znaczy, że false, a to znaczy że wykona się else tego co ci podałem.

Słowem: TAK, taki warunek uwzględnia gdy rekordów jest 0. Ewentualnie dopisz sobie:

  1. ...
  2. $getWord=mysql_query("SELECT SUBSTRING(miejsce, 1, 3) as miejsce_po FROM wlasciciele WHERE miejsce LIKE '$letterm%' OR miejsce LIKE '$letterm2%' OR miejsce LIKE '$letterm3%' GROUP BY miejsce_po", $db);
  3.  
  4.  
  5.  
  6. if ($getWord) {
  7.  
  8. while ...
  9.  
  10. } elseif (count($getWord) == 0) {
  11.  
  12. // moze to ci sie wykona... ;]
  13.  
  14. }
  15.  
  16.  


--------------------
Overwatch24 - najbardziej zaawansowany Polski portal Overwatch od fanów dla fanów.

Fachowo.co

Behance.net/fachowo
Go to the top of the page
+Quote Post
Dopler
post 24.11.2014, 16:33:56
Post #7





Grupa: Zarejestrowani
Postów: 81
Pomógł: 0
Dołączył: 30.01.2008

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


kpiny niepotrzebne - niektórym po prostu programowie nie wchodzi do głowy
dzięki wielkie

ps. teraz pisze "moze to ci sie wykona... ;]" wink.gif))


--------------------
Genealogia Polaków
Go to the top of the page
+Quote Post
Forti
post 24.11.2014, 16:37:24
Post #8





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

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


Cytat(Dopler @ 24.11.2014, 16:33:56 ) *
[...]

ps. teraz pisze "moze to ci sie wykona... ;]" wink.gif))



bo ci zapytanie nie wraca rekordów. A ten napis nie powinien ci się wyświetlać jak nie wywaliłeś "//" <-- to jest komentarz.


--------------------
Overwatch24 - najbardziej zaawansowany Polski portal Overwatch od fanów dla fanów.

Fachowo.co

Behance.net/fachowo
Go to the top of the page
+Quote Post
Dopler
post 24.11.2014, 17:10:59
Post #9





Grupa: Zarejestrowani
Postów: 81
Pomógł: 0
Dołączył: 30.01.2008

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


to były żart! - wszystko działa - dzięki koniec tematu


--------------------
Genealogia Polaków
Go to the top of the page
+Quote Post

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: 12.06.2025 - 10:19