Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Pętla nie jest na właściwym miejscu?
Forum PHP.pl > Forum > Przedszkole
Croos22
Dzień dobry.

Piszę ponieważ mój problem mnie już przerósł. Chodzi o to, że zmienna $polaczenie wyciąga z bazy dane które są takie same. Może dlatego, że nie są w pętli w której wyciągam dane. Jeśli o to chodzi to czy mógłby mi to ktoś pomóc poprawić?
  1. $polozenie = mysql_query("select * from `wioski`");
  2. while($row = mysql_fetch_array($polozenie))
  3. {
  4. $a[] = $row['numer'];
  5. $nazwa = $row['nazwa'];
  6. $wlasciciel = $row['login'];
  7. $punkty = $row['punkty'];
  8. $status = $row['status'];
  9. }
  10.  
  11. $x=$min;
  12. echo '<table id="mapa">';
  13. while($x <=$max)
  14. {
  15. if($x%25 == 1) echo '<tr>';
  16. if(in_array($x, $a)) {
  17.  
  18. echo '<td><div style="font: normal normal 16px verdana"><a href="?map='.$x.'" class="tip"><img src=http://width="25" height="25" /> <div class="tip">
  19. <table><tr><td>Pole: </td><td>'.$x.'</td></tr>
  20. <td>Nazwa: </td><td>'.$nazwa.'</td></tr>
  21. <td>Wlasciciel: </td><td>'.$wlasciciel.'</td></tr>
  22. <td>Punkty: </td><td>'.$punkty.'</td></tr></table>
  23.  
  24.  
  25. </div></a></td>';
  26. } else {
  27. echo '<td style="width: 20px; height: 20px;">'.$x.'</td>';
  28. }
  29. if($x%25 == 0) echo '</tr>';
  30.  
  31. $x++;
  32. }
  33. echo' </table>';
erix
Cytat
Może dlatego, że nie są w pętli w której wyciągam dane. Jeśli o to chodzi to czy mógłby mi to ktoś pomóc poprawić?

Przecież sam sobie odpowiedziałeś. [;
Croos22
Nie myślałem za bardzo nad treścią tematu. Gdy przenoszę ją w inne miejsce gryzie się z inną częścią kodu. Dlatego nie mogę sobie z tym poradzić. ;(
erix
Cytat
Gdy przenoszę ją w inne miejsce gryzie się z inną częścią kodu

Moja szklana kula dostępna wyłącznie dla posiadaczy Paszportu Polsatu. snitch.gif
Croos22
Gryzie się z tym co tu mam. Aby nikt nie mówił, że nie próbowałem, zrobiłem to tak:

  1. $polozenie = mysql_query("select * from `wioski`");
  2.  
  3.  
  4. $x=$min;
  5. echo '<table id="mapa">';
  6. while($x <=$max)
  7. {
  8. if($x%25 == 1) echo '<tr>';
  9. if(in_array($x, $a)) {
  10. while($row = mysql_fetch_array($polozenie))
  11. {
  12. $a[] = $row['numer'];
  13.  
  14. echo '<td><div style="font: normal normal 16px verdana"><a href="?map='.$x.'" class="tip"><img src=http://width="25" height="25" /> <div class="tip">
  15. <table><tr><td>Pole: </td><td>'.$x.'</td></tr>
  16. <td>Nazwa: </td><td>'.$row['nazwa'].'</td></tr>
  17. <td>Wlasciciel: </td><td>'.$row['login'].'</td></tr>
  18. <td>Punkty: </td><td>'.$row['punkty'].'</td></tr></table>';
  19. }
  20.  
  21. echo '</div></a></td>';
  22. } else {
  23. echo '<td style="width: 20px; height: 20px;">'.$x.'</td>';
  24. }
  25. if($x%25 == 0) echo '</tr>';
  26.  
  27. $x++;
  28. }
  29. echo' </table>';
Hpsi
Odpiszę póki jestem bardziej zażenowany polskim pkp niż czymkolwiek innym smile.gif

1. pytanie co to jest $x=$min questionmark.gif jakoś nigdzie nie masz przypisanej wartości $min wiec nie wiem o co chodzi w tym
2. na moje bardzo bardzo przekombinowałeś, napiszę Ci pewien schemat - gotowca nie dam smile.gif
edit 3. analizuje dalej twoj kod: skad mamy wiedziec kiedy sie spelnia if(in_array($x, $a)) jesli nie wiemy czym jest a tongue.gif twoj kod ma bardzo bardzo duzo zagadek
  1. //pisane od reki jesli sa jakies bledy sorry :)
  2. $query = mysql_query('zapytanko'); // to wiadomo oczywiscie
  3. $x=0; // x'owi przypisujemy 0
  4. echo '<table><tr>'; // rozpoczynamy tabelke
  5. while($result = mysql_fetch_array($query))
  6. {
  7. $x++; // inkrementacja x'a;
  8.  
  9. echo '<td>.....................................</td>';
  10. if($x%25) echo '</tr><tr>'; //jesli x jest podzielne przez 25 zrob: (chodzi o wielkrotnosci 25 czyli 25 50 75 100 ... 25xn)
  11. }
  12. if($x%25 != 0) echo '</tr>'; // jesli x nie jest podzielne przez 25 zrob - chodzi o to zeby ladnie zakonczyc nawet jesli bedziesz mial kolo siebie tylko 16 td to ci zamknie </tr>
  13. echo '</table>';


i na koniec mi powiedz czym do jasnej ciasnej anielskiej pieknej pupci jest: "<img src=http://width="25" height="25" /> " bo tego nie ogarniam tongue.gif

Edit: zapomniałem o komentarzach (dodaje w edycji)

ogolnie nie do konca jestem pewien czy o to ci chodzilo ale tak wnioskuje z kodu
Croos22
Ja tylko nie wiem jak to zapytanie tam wrzucić. Notepad++ wskazuje mi, że else jest do pętli while w której wyciągam dane a nie do wcześniejszej instrukcji warunkowej if.

  1. $x=1;
  2. echo '<table>';
  3.  
  4. $wioski = mysql_query('select * from `wioski`');
  5.  
  6. while($x <=100)
  7. {
  8. if($x%25 == 1) echo '<tr>';
  9. if(in_array($x, $a)) {
  10.  
  11. while($row = mysql_fetch_array($wioski)){
  12. echo '<td style="border: 1px solid black; background: red;">'.$x.'</td>';
  13. } else {
  14. echo '<a href=""><td style="width: 30px; height: 30px; border: 1px solid black;">'.$x.'</td></a>';
  15. }
  16. if($x%25 == 0) echo '</tr>';
  17.  
  18. $x++;
  19. }
  20. }
Hpsi
Podaj opis słowny tego co chcesz by to zrobiło

edit dopiero przenalizwałem twoj kod ponownie

notepad dobrze ci wskazuje, ogolnie masz prolbem z nawiazami i przydało by ci się przenalizować ten temat: Temat: Jak poprawnie zadac pytanie

bo forum to nie parser, i wybacz jakbyś wkleił errory to ybłoby o niebo łatwiej
Croos22
Co chce osiągnąć?

Zależy mi na tym aby dane były wybierane w pętli ponieważ gdy przypisywałem do zmiennych poza pętlą wszystkie dane były takie same.

Błędy:
Cytat
Parse error: syntax error, unexpected T_ELSE in /virtual/k/ on line 17

W ostatnio wklejonym kodzie jest to linia 13.


Temat czytałem niedawno.
Hpsi
A co mają na celu twoje instrukcje warunkowe które dałeś? Opisz dokladnie co to robi. A co do parserrora, to z tego typem błedu powniienes sobie sam poradzić, za rączke cie prawadzić można, ale kodu za ciebie nie zrobimy. Masz błedy w nawiasach

btw jesli chcesz po prostu w pętli umiescic dane - zerknij sobie na moj kod powyzej.
Croos22
  1. $a = array();
  2. //zapytanie
  3. $a[] = $row['numer'];
  4.  
  5. if(in_array($x, $a))
  6. ...


Za pomocą instrucji sprawdzam czy wartość istnieje w tablicy.
hpsi guest :)
Postaram się za około 1.5h przeanalizować wszystko co napisałeś i ci pomóc, ale wydaje mi się że naprawde zaduzo kombinujesz, w ostanim twojej wersji sprawdzasz czy $x jest w tablicy $a = ktorej nie utworzyłeś. bo zminiłeś lokalizacje, pozatym PO co chcesz to robić? skoro i tak wyswieltasz tylko i wylacznie rekordy z bazy ktore ci wyrzuca niepotrzebny warunek .
Croos22
Może lepiej opiszę co ma to wszystko robić.

Ma tworzyć 100 wierszy po 25 w jednej linii, następnie gdy już każde pole ma własny unikalny numer wyciągnąć z bazy numer wiersza i wykonać daną akcję w moim przypadku np:
  1. <td style="background: red;">
. Jeśli bazie znajdzie się numer 25 to pole 25 ma zostać zamalowane na czerwono.
Hpsi
Cizys dobra napiszę Ci to dokładnie bo widzę ze męczysz się drugi dzień, kolego podstawy podstaw - doszkol się w php, html smile.gif
  1. $query = mysql_query('select * from `wioski` LIMIT 100'); // to wiadomo oczywiscie
  2. $x=0; // x'owi przypisujemy 0
  3. echo '<table><tr>'; // rozpoczynamy tabelke
  4. while($row = mysql_fetch_array($query))
  5. {
  6. $x++; // inkrementacja x'a;
  7.  
  8. echo '<td ';
  9. if($x%25) echo 'style="border: 1px solid black; background: red;"';
  10. echo '><div style="font: normal normal 16px verdana"><a href="?map='.$x.'" class="tip">!!twoj kod obrazka bo widziałem ze chcesz tu go wstawic:) !! <div class="tip">
  11. <table><tr><td>Pole: </td><td>'.$x.'</td></tr>
  12. <td>Nazwa: </td><td>'.$row['nazwa'].'</td></tr>
  13. <td>Wlasciciel: </td><td>'.$row['login'].'</td></tr>
  14. <td>Punkty: </td><td>'.$row['punkty'].'</td></tr></table>';
  15.  
  16. if($x%25) echo '</tr><tr>'; //jesli x jest podzielne przez 25 zrob: (chodzi o wielkrotnosci 25 czyli 25 50 75 100 ... 25xn)
  17. }
  18. if($x%25 != 0) echo '</tr>'; // jesli x nie jest podzielne przez 25 zrob - chodzi o to zeby ladnie zakonczyc nawet jesli bedziesz mial kolo siebie tylko 16 td to ci zamknie </tr>
  19. echo '</table>';


zobacz czy ci to działa - jest to mój kod który dałem Ci wczeniej z drobnymi modernizacjami ...

W tym kodzie będzie ci malować na czerowno: 25,50,75,100 ; jesli chcesz tylko zeby 25 to w if($x%25) echo 'style....'; zrób if($x==25); ityle
mat-bi
Hpsi, ech

0 jest rzutowane na logiczny falsz, więc

if($x%25)

zwróci fałsz.
Hpsi
Ops biggrin.gif ^^ sorry if($x%25 == 0) tongue.gif
mat-bi - thanks nie sprawdzałem kodu, ale byk "genialny" tongue.gif
Croos22
Tak wiem, że to jest podstawa ale po to trzymam numer w bazie by potem wyciągnąć go a następnie w odpowiednie pole go wrzucić.

4, 6

[1][2][3][red][5][red]...

Zatem brakowało by mi tu jednej pętli. A poza tym zależy mi aby wszystkie liczby od 1 do 100 były wypisane.

  1. while($x <= 100){
  2. echo $x;
  3. }
Hpsi
Zapytanie ktore ci zrobilem wyciagnie do 100 wynikow (chyba ze jest mniej)
za kazdym razem x jest ikrementowany - ale teraz widze ze to raczej bezesnu bo masz to w numer.

To zamiast:
$x
zamień na
$row['numer']

i wyrzuc ostaniego ifa tongue.gif

jeśli o to nie chodzi to ja już wymiękam i naprawde nie czaje ;p
Croos22
Napisałem taki kod na sztywno, że tak powiem:


  1. <?php
  2. $x = 1;
  3. echo '<table>';
  4. while($x <= 50){
  5.  
  6. if($x % 25 == 1) echo '<tr>';
  7.  
  8. //Zamiast tego ma wyciągać rekordy z bazy
  9. if($x == 10){
  10. echo '<td style="background: red;">'.$x++.'</td>';
  11. } elseif($x == 20){
  12. echo '<td style="background: red;">'.$x++.'</td>';
  13. } elseif($x == 40){
  14. echo '<td style="background: red;">'.$x++.'</td>';
  15. //----------------
  16. } else{
  17. echo '<td>'.$x++.'</td>';
  18. }
  19. if($x % 25 == 1) echo '</tr>';
  20. }
  21. echo '</table>';
  22. ?>


Wypisze to 50 liczb a 10, 20 i 40 zamaluje na czerwono.
Hpsi
I co związku z tym? jak to się odnosni do tematu?
albo ja czegoś nie rozumiem albo ty.

Odnosząc się do mojego kodu:
zamiast while($x<=50) możesz zrobić to samo na mysql_fetch_array() z wynikami.
Pomyśl trochę nad tym co ci daliśmy i twoim kodem - złącz je.

na moje rozwiązanie masz tutaj podane - lecz wymaga ono drobnych modernizacji troche kombinowania
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.