Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Tworzenie pół (pomoc)
Forum PHP.pl > Forum > Przedszkole
szymonk237231
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ć?
Damonsson
Select w pętli, która wykona się tyle razy ile jest tych zespołów.
szymonk237231
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
jaslanin
pokaż kod.
szymonk237231
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
Damonsson
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ę.
prowseed
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?
szymonk237231
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).
prowseed
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?
szymonk237231
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)
prowseed
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
szymonk237231
Ł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?
prowseed
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.
szymonk237231
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
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.