Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Tworzenie pół (pomoc)
szymonk237231
post
Post #1





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 8.04.2011

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


Witajcie po raz kolejny smile.gif
Nie wiem jak dobrze zrobić skrypt. Bo robie skrypt dodawania kolejki (każdy z każdym), i zrobiłem juz do tej pory tak, że pojawiają się pola select i w nich nazwy zespołów. Ale ja chce zrobić tak, że zliczy mi z bazy liczbe zespołów (to juz zrobiłem) i na podstawie tego zliczenia utworzy mi tyle pól select ile jest zespołów. Jak takie coś zrobić?
Go to the top of the page
+Quote Post
Damonsson
post
Post #2





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


Select w pętli, która wykona się tyle razy ile jest tych zespołów.
Go to the top of the page
+Quote Post
szymonk237231
post
Post #3





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 8.04.2011

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


Cytat(Damonsson @ 8.04.2012, 11:21:18 ) *
Select w pętli, która wykona się tyle razy ile jest tych zespołów.

To właśnie tak zrobiłem, ale mi wywaliło ogromniasta liczę pól, mimo, że w bazie miałem tylko 3 rekordy
Go to the top of the page
+Quote Post
jaslanin
post
Post #4





Grupa: Zarejestrowani
Postów: 511
Pomógł: 143
Dołączył: 13.03.2010
Skąd: Jasło

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


pokaż kod.


--------------------
Good luck and happy PHP'ing
Go to the top of the page
+Quote Post
szymonk237231
post
Post #5





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 8.04.2011

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


Cytat(jaslanin @ 8.04.2012, 13:02:20 ) *
pokaż kod.

Przypadkowo musiałem usunąć kod.
Ale na necie znalazłem skrypt zliczania wierszy:
  1. $zlicz = mysql_query("SELECT COUNT(*) AS id
  2. FROM druzyna");
  3. $row=mysql_fetch_array($zlicz);
  4. $iIloscZBazy = $row['id'];


No i pokaże mam mój kod.
Co musze zmienić w tym, żeby pokazywało mi się x "select" dla x dodanych zespołów do bazy.
Przykładowo dodałem 4 zespoły do bazy, to powinny pokazać mi się 4 pola select (Żeby zagrał zespół 1 z zespołem 2 i zespół 3 z zespołem 4).
Mój kod:
  1. <?php
  2. $zlicz = mysql_query("SELECT COUNT(*) AS id
  3. FROM druzyna");
  4. $row=mysql_fetch_array($zlicz);
  5. $iIloscZBazy = $row['id'];
  6. echo "Zespolow w bazie: ".$iIloscZBazy."<br>";
  7.  
  8. $wynik = mysql_query("SELECT * FROM druzyna ORDER BY nazwa ASC")
  9. or die('Błąd zapytania');
  10. if(mysql_num_rows($wynik) > 0) {
  11. echo "<select name='druzyna1'>";
  12. while($r = mysql_fetch_assoc($wynik)) {
  13. echo "<option value='".$r['skrot']."'>".$r['nazwa']."</option>";
  14.  
  15. }
  16. echo "</select>";
  17. }
  18.  
  19. ?>


Aluuu, pomoże ktoś? biggrin.gif

Ten post edytował szymonk237231 8.04.2012, 13:15:45
Go to the top of the page
+Quote Post
Damonsson
post
Post #6





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


a $r - to co to jest? I while daj <=, a nie =. Znakiem = przypisujesz do $r coś, a nie porównujesz, do porównywania służy == lub ===. Ale tutaj musisz dać <=, bo nie wskoczy nagle z 1. na 4. Musi przejść przez 1, 2, 3 i 4. Zamiast $r powinno być chyba $iIloscZBazy o ile dobrze interpretuję.
Go to the top of the page
+Quote Post
prowseed
post
Post #7





Grupa: Zarejestrowani
Postów: 433
Pomógł: 64
Dołączył: 29.01.2011
Skąd: Warszawa

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


ojj, @Damonsson, chyba brakuje Ci snu : ) Albo mi- jakkolwiek :]

@topic
strasznie zagmatwany Twój kod mimo swojej prostoty : ) Pokaż jeszcze jak wygląda struktura bazy bo jakoś na razie nei ogarniam gdzie leży problem. Możesz to zrobić w jednym zapytaniu wszystko.

//EDIT

  1. $query = "SELECT DISTINCT nazwa FROM druzyna ORDER BY nazwa ASC";
  2. $list = mysql_query($query);
  3. $i = 0
  4. $drop = "<select size=\"10\" name=\"list\">";
  5. while($cats = mysql_fetch_array($list)) {
  6. $drop .= "\r\n<option value='{$cats['nazwa']}'>{$cats['nazwa']}</option>";
  7. $i++;
  8. }
  9. $drop .= "\r\n</select>";
  10.  
  11. echo "Zespołów w bazie: $i";
  12. echo $drop;

Nie mozna po prostu tak?

Ten post edytował prowseed 9.04.2012, 01:11:37


--------------------
Go to the top of the page
+Quote Post
szymonk237231
post
Post #8





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 8.04.2011

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


Cytat(prowseed @ 9.04.2012, 01:50:07 ) *
ojj, @Damonsson, chyba brakuje Ci snu : ) Albo mi- jakkolwiek :]

@topic
strasznie zagmatwany Twój kod mimo swojej prostoty : ) Pokaż jeszcze jak wygląda struktura bazy bo jakoś na razie nei ogarniam gdzie leży problem. Możesz to zrobić w jednym zapytaniu wszystko.

//EDIT

  1. $query = "SELECT DISTINCT nazwa FROM druzyna ORDER BY nazwa ASC";
  2. $list = mysql_query($query);
  3. $i = 0
  4. $drop = "<select size=\"10\" name=\"list\">";
  5. while($cats = mysql_fetch_array($list)) {
  6. $drop .= "\r\n<option value='{$cats['nazwa']}'>{$cats['nazwa']}</option>";
  7. $i++;
  8. }
  9. $drop .= "\r\n</select>";
  10.  
  11. echo "Zespołów w bazie: $i";
  12. echo $drop;

Nie mozna po prostu tak?


Hmmm, może mnie nie zrozumiałeś. Bo Twój kod tworzy mi jedno pole do wybierania zespołu. A mi chodzi o to, że jeśli są 4 zespoły to utworzy mi 4 pola select.
Chodzi o to, że gdy są w bazie danych 4 zespoły to wyświetli mi 2 pola select w jednej linii i 2 pola select w drugiej. A dajmy na to skoro mam 6 zespołów w bazie to wyświetli mi po 2 pola select w 3 liniach smile.gif
Narysuje Ci w paincie jak to wyglądać ma bo może mnie nie rozumiesz



A co do tego, czy można zrobić to w jednym zapytaniu. Pewnie można, ale ja mam z tym początki tongue.gif Dlatego wybaczcie za moją ograniczoną wiedzę w tych sprawach. Chce sie tego nauczyć i myśle że im w tym pomożecie. smile.gif

Cytat(Damonsson @ 9.04.2012, 01:34:13 ) *
a $r - to co to jest? I while daj <=, a nie =. Znakiem = przypisujesz do $r coś, a nie porównujesz, do porównywania służy == lub ===. Ale tutaj musisz dać <=, bo nie wskoczy nagle z 1. na 4. Musi przejść przez 1, 2, 3 i 4. Zamiast $r powinno być chyba $iIloscZBazy o ile dobrze interpretuję.


$r pobiera mi dane z tabeli i uzpełnia je w liście rozwijanej (nazwy zespołów).
Go to the top of the page
+Quote Post
prowseed
post
Post #9





Grupa: Zarejestrowani
Postów: 433
Pomógł: 64
Dołączył: 29.01.2011
Skąd: Warszawa

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


no to pokaz jeszcze jak wyglada tabela bazy danych. I ja mam rozumiec, ze w bazie sa tylko te zespoly, czy po kazdym dodaniu zespolow ma dodatkowo tworzyc nastepne selecty?


--------------------
Go to the top of the page
+Quote Post
szymonk237231
post
Post #10





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 8.04.2011

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


Cytat(prowseed @ 9.04.2012, 14:11:51 ) *
no to pokaz jeszcze jak wyglada tabela bazy danych. I ja mam rozumiec, ze w bazie sa tylko te zespoly, czy po kazdym dodaniu zespolow ma dodatkowo tworzyc nastepne selecty?


Po dodaniu do bazy np 2 zespołów ma stworzyć mi dodatkowe 2 selecty.
Po dodaniu np 4 zespołów ma mi uwtorzyć 4 selecty (2 w jednej lini, 2 w drugiej)
Go to the top of the page
+Quote Post
prowseed
post
Post #11





Grupa: Zarejestrowani
Postów: 433
Pomógł: 64
Dołączył: 29.01.2011
Skąd: Warszawa

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


dobra, nie chcem i sie tego pisac, bo tak na prawde wszystko masz, musisz to tylko umiejetnie skleic. Dzialasz na moim kodzie, dodatkowo robisz mysql_num_rows($list); i przypisujesz to do zmiennej. Pozniej w funkcji while($zmienna > 0){ tu wyswietl $list}
Dodam, ze wtedy kazdy select bedzie mial taka sama wartosc pola 'name', dlatego proponowalbym $list wrzucic w funkcje, ktora jako parapetr przyjmuje $zmienna i podstawia pod name, wiec bedziesz mial np list-3
Nie zapomnij na koncu petli dodac $zmienna--;

Teraz probuj, jak bedziesz mial jeszcze z czyms problem, to pytaj, ale na tym etapie sam musisz sie pomeczyc smile.gif


--------------------
Go to the top of the page
+Quote Post
szymonk237231
post
Post #12





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 8.04.2011

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


Łosz kurde, teoretycznie z początku nie wiedziałem o co chodzi, bo dopiero to moje początki. Postaram się to zrobic. smile.gif
Dzięki za odpowiedź

Cytat(prowseed @ 9.04.2012, 16:55:09 ) *
dobra, nie chcem i sie tego pisac, bo tak na prawde wszystko masz, musisz to tylko umiejetnie skleic. Dzialasz na moim kodzie, dodatkowo robisz mysql_num_rows($list); i przypisujesz to do zmiennej. Pozniej w funkcji while($zmienna > 0){ tu wyswietl $list}
Dodam, ze wtedy kazdy select bedzie mial taka sama wartosc pola 'name', dlatego proponowalbym $list wrzucic w funkcje, ktora jako parapetr przyjmuje $zmienna i podstawia pod name, wiec bedziesz mial np list-3
Nie zapomnij na koncu petli dodac $zmienna--;

Teraz probuj, jak bedziesz mial jeszcze z czyms problem, to pytaj, ale na tym etapie sam musisz sie pomeczyc smile.gif

Tylko jeszcze pytanie, Jak ma wyglądać While?
Go to the top of the page
+Quote Post
prowseed
post
Post #13





Grupa: Zarejestrowani
Postów: 433
Pomógł: 64
Dołączył: 29.01.2011
Skąd: Warszawa

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


Ma wygladac dokladnie tak, jak to napisalem
  1. <style>
  2. .select {display:inline; margin:4px;}
  3. </style>

  1. <?php
  2. $query = "SELECT DISTINCT nazwa FROM druzyna ORDER BY nazwa ASC";
  3. $list = mysql_query($query);
  4. $i = 0;
  5. while($cats = mysql_fetch_array($list)) {
  6. $drop .= "\r\n<option value='{$cats['nazwa']}'>{$cats['nazwa']}</option>";
  7. $i++;
  8. }
  9.  
  10. echo "Zespołów w bazie: $i";
  11.  
  12. while($i>0){
  13. echo "<select class=\"select\" name=\"list-{$i}\">{$drop}\r\n</select>";
  14. echo (($i & 1) ? ' vs. ' : '<br>');
  15. $i--;
  16. }
  17.  


Pisane z palca, nie wiem, czy dziala
//EDIT
poprawilem maly blad, mialem class="select" co zniszczylo by echo.

Ten post edytował prowseed 9.04.2012, 16:24:12


--------------------
Go to the top of the page
+Quote Post
szymonk237231
post
Post #14





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 8.04.2011

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


Okej, działa ! smile.gif
Wielkie dzięki smile.gif
A mam jeszcze takie błache pytanie. Bo Wyświetla można powiedzieć - poprawnie. Efekt taki jaki chciałem. Tylko to "vs" chciałbym między 2 polami select, ale gdy go przestawiam przed ten znak zapytania to mi błedy wywala.
Jak zmienić miejsce "vs" ? smile.gif

Wybacz, moje złe przeoczenie. Już działa poprawnie. Temat można zamknąć smile.gif
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 - 08:20