Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Pętla nie jest na właściwym miejscu?
Croos22
post
Post #1





Grupa: Zarejestrowani
Postów: 316
Pomógł: 4
Dołączył: 22.03.2010

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


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>';


Ten post edytował Croos22 27.06.2011, 19:53:51
Go to the top of the page
+Quote Post
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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ś. [;


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Croos22
post
Post #3





Grupa: Zarejestrowani
Postów: 316
Pomógł: 4
Dołączył: 22.03.2010

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


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ć. ;(
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Croos22
post
Post #5





Grupa: Zarejestrowani
Postów: 316
Pomógł: 4
Dołączył: 22.03.2010

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


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>';


Ten post edytował Croos22 27.06.2011, 19:53:35
Go to the top of the page
+Quote Post
Hpsi
post
Post #6





Grupa: Zarejestrowani
Postów: 483
Pomógł: 50
Dołączył: 15.03.2005
Skąd: Poznań

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


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

Ten post edytował Hpsi+ 27.06.2011, 20:20:41


--------------------
Daiquiri: T1 = (dx/dt * s)^hpsi
Daiquiri: gdzie T1 - Twój czas przybycia na miejsce, dx/dt - prędkość, s droga
Daiquiri: brb trzeba by to poprawić T1 - Czas jaki Ci to zajmie
Daiquiri: Zatem T - czas dotarcia p T1 + T2 gdzie T2 = aktualny czas

===
po prostu kocham ją :D haha
Go to the top of the page
+Quote Post
Croos22
post
Post #7





Grupa: Zarejestrowani
Postów: 316
Pomógł: 4
Dołączył: 22.03.2010

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


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. }
Go to the top of the page
+Quote Post
Hpsi
post
Post #8





Grupa: Zarejestrowani
Postów: 483
Pomógł: 50
Dołączył: 15.03.2005
Skąd: Poznań

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


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

Ten post edytował Hpsi+ 28.06.2011, 11:40:03


--------------------
Daiquiri: T1 = (dx/dt * s)^hpsi
Daiquiri: gdzie T1 - Twój czas przybycia na miejsce, dx/dt - prędkość, s droga
Daiquiri: brb trzeba by to poprawić T1 - Czas jaki Ci to zajmie
Daiquiri: Zatem T - czas dotarcia p T1 + T2 gdzie T2 = aktualny czas

===
po prostu kocham ją :D haha
Go to the top of the page
+Quote Post
Croos22
post
Post #9





Grupa: Zarejestrowani
Postów: 316
Pomógł: 4
Dołączył: 22.03.2010

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


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.

Ten post edytował Croos22 28.06.2011, 11:48:16
Go to the top of the page
+Quote Post
Hpsi
post
Post #10





Grupa: Zarejestrowani
Postów: 483
Pomógł: 50
Dołączył: 15.03.2005
Skąd: Poznań

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


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.

Ten post edytował Hpsi+ 28.06.2011, 11:49:57


--------------------
Daiquiri: T1 = (dx/dt * s)^hpsi
Daiquiri: gdzie T1 - Twój czas przybycia na miejsce, dx/dt - prędkość, s droga
Daiquiri: brb trzeba by to poprawić T1 - Czas jaki Ci to zajmie
Daiquiri: Zatem T - czas dotarcia p T1 + T2 gdzie T2 = aktualny czas

===
po prostu kocham ją :D haha
Go to the top of the page
+Quote Post
Croos22
post
Post #11





Grupa: Zarejestrowani
Postów: 316
Pomógł: 4
Dołączył: 22.03.2010

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


  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.

Ten post edytował Croos22 28.06.2011, 12:00:36
Go to the top of the page
+Quote Post
-hpsi guest :)-
post
Post #12





Goście







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 .
Go to the top of the page
+Quote Post
Croos22
post
Post #13





Grupa: Zarejestrowani
Postów: 316
Pomógł: 4
Dołączył: 22.03.2010

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


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.
Go to the top of the page
+Quote Post
Hpsi
post
Post #14





Grupa: Zarejestrowani
Postów: 483
Pomógł: 50
Dołączył: 15.03.2005
Skąd: Poznań

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


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

Ten post edytował Hpsi 29.06.2011, 12:19:54


--------------------
Daiquiri: T1 = (dx/dt * s)^hpsi
Daiquiri: gdzie T1 - Twój czas przybycia na miejsce, dx/dt - prędkość, s droga
Daiquiri: brb trzeba by to poprawić T1 - Czas jaki Ci to zajmie
Daiquiri: Zatem T - czas dotarcia p T1 + T2 gdzie T2 = aktualny czas

===
po prostu kocham ją :D haha
Go to the top of the page
+Quote Post
mat-bi
post
Post #15





Grupa: Zarejestrowani
Postów: 690
Pomógł: 92
Dołączył: 6.02.2011

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


Hpsi, ech

0 jest rzutowane na logiczny falsz, więc

if($x%25)

zwróci fałsz.
Go to the top of the page
+Quote Post
Hpsi
post
Post #16





Grupa: Zarejestrowani
Postów: 483
Pomógł: 50
Dołączył: 15.03.2005
Skąd: Poznań

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


Ops biggrin.gif ^^ sorry if($x%25 == 0) tongue.gif
mat-bi - thanks nie sprawdzałem kodu, ale byk "genialny" tongue.gif

Ten post edytował Hpsi 29.06.2011, 12:26:12


--------------------
Daiquiri: T1 = (dx/dt * s)^hpsi
Daiquiri: gdzie T1 - Twój czas przybycia na miejsce, dx/dt - prędkość, s droga
Daiquiri: brb trzeba by to poprawić T1 - Czas jaki Ci to zajmie
Daiquiri: Zatem T - czas dotarcia p T1 + T2 gdzie T2 = aktualny czas

===
po prostu kocham ją :D haha
Go to the top of the page
+Quote Post
Croos22
post
Post #17





Grupa: Zarejestrowani
Postów: 316
Pomógł: 4
Dołączył: 22.03.2010

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


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. }
Go to the top of the page
+Quote Post
Hpsi
post
Post #18





Grupa: Zarejestrowani
Postów: 483
Pomógł: 50
Dołączył: 15.03.2005
Skąd: Poznań

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


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

Ten post edytował Hpsi 29.06.2011, 13:06:09


--------------------
Daiquiri: T1 = (dx/dt * s)^hpsi
Daiquiri: gdzie T1 - Twój czas przybycia na miejsce, dx/dt - prędkość, s droga
Daiquiri: brb trzeba by to poprawić T1 - Czas jaki Ci to zajmie
Daiquiri: Zatem T - czas dotarcia p T1 + T2 gdzie T2 = aktualny czas

===
po prostu kocham ją :D haha
Go to the top of the page
+Quote Post
Croos22
post
Post #19





Grupa: Zarejestrowani
Postów: 316
Pomógł: 4
Dołączył: 22.03.2010

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


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.
Go to the top of the page
+Quote Post
Hpsi
post
Post #20





Grupa: Zarejestrowani
Postów: 483
Pomógł: 50
Dołączył: 15.03.2005
Skąd: Poznań

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


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

Ten post edytował Hpsi 29.06.2011, 13:45:28


--------------------
Daiquiri: T1 = (dx/dt * s)^hpsi
Daiquiri: gdzie T1 - Twój czas przybycia na miejsce, dx/dt - prędkość, s droga
Daiquiri: brb trzeba by to poprawić T1 - Czas jaki Ci to zajmie
Daiquiri: Zatem T - czas dotarcia p T1 + T2 gdzie T2 = aktualny czas

===
po prostu kocham ją :D haha
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 Aktualny czas: 20.08.2025 - 04:40