Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]przekazanie zmiennej
Forum PHP.pl > Forum > Przedszkole
wojtekwro
Witam,

mam problem, pisząc skrypt "lista obecności" zatrzymałem się w 1 miejscu.
  1. <table border=1 cellpadding=0 cellspacing=0 width= 90%>
  2. <tr>
  3. <td>dzień</td>
  4. <td>user1</td>
  5. <td>user2</td>
  6. <td>user3</td>
  7. <td>user4</td>
  8. </tr>
  9. <div id="kalendarz">
  10.  
  11. <?php
  12. $parm=$_GET['parm']; // $parm to numer miesiąca w postaci xx
  13. function dni_mies($parm,$rok) {
  14.  
  15.  $dni = 31;
  16.  while (!checkdate($parm, $dni, $rok)) $dni--;
  17.  
  18.  
  19. return $dni;
  20. }
  21.  echo '<b class="hidden">00</b> ';
  22.  
  23. for($i=1;$i<dni_mies(date("$parm"),date("Y")) +1;$i++) {
  24.  if ($i<10) $i = '0'.$i;
  25.  echo '<tr><td>'.$i.'</td> ';
  26. } ?>
  27. </div>
  28. <td>--------- zapytanie do sql ---------------</td>
  29. <td></td>
  30. <td></td>
  31. <td></td>
  32.  
  33. </tr>
  34. </table>


w miejscu zapytanie do sql chciałbym umieścić coś co sprawdzałoby mi czy istnieje wpis, że user 1 w dniu 20-08-2008 logował się do serwisu. Baza jest bardzo prosta id user i data. Problem mam w tym, że nie wiem jak wykonać takie zapytanie tak aby robiło się to z automatu, próbowałem wykorzystać funkcję stworzoną do wypisania dni danego miesiąca ale nie działa. Nie wiem jak przekazać zmienną $i do zapytania w sql. Jak stworzyć zapytanie które po przejrzeniu bazy dla np lutego 28 / 29 dni nie będzie szukało dalej tylko skończy przeszukiwania i wyświetli mi rezultat w tabeli. oraz jak prawidłowo umieścić dane obok dnia miesiąca w pierwszym rzędzie. Czyli 1 luty logował się wyświetla +, 2 luty brak wpisu wyświetla - itp itd.

Z góry dziękuję
Wojtek
f1xer
jak przekazać zmienną $i do zapytania hmm prosto dajesz np.
  1. <?php
  2. $zapytanie="SELECT name FROM tabela WHERE cos=".$i;
  3. ?>

a co do reszty to wybacz ale nie rozumiem o co chodzi.
LBO
To już lepiej:
  1. <?php
  2. $zapytanie="SELECT name FROM tabela WHERE cos=$i";
  3. ?>

lub w ujęciu wydajnościowym (string nie bedzie parsowany w poszukiwaniu zmiennych)
  1. <?php
  2. $zapytanie='SELECT name FROM tabela WHERE cos='.$i;
  3. ?>
wojtekwro
czyli zapytani będzie powtarzane tyle razy ile jest dni np we wrześniu, tak jak działa funkcja którą wkleiłem tak questionmark.gif
Lars
Powiedz, o co konkretnie ci chodzi.
Po co ma być tyle razy powtarzane? Jeżeli chcesz, żeby przy danym dniu był napis "brak wpisu" jak kogoś nie było (domyślam że o to ci chodzi) to wystarczy if po 1 zapytaniu.

Pozdrawiam
wojtekwro
mówiąc prościej

  1. <?php
  2. $parm=$_GET['parm'];
  3. function dni_mies($parm,$rok) {
  4.  
  5.  $dni = 31;
  6.  while (!checkdate($parm, $dni, $rok)) $dni--;
  7.  
  8.  
  9. return $dni;
  10. }
  11.  echo '<b class="hidden">00</b> ';
  12.  
  13. for($i=1;$i<dni_mies(date("$parm"),date("Y")) +1;$i++) {
  14.  if ($i<10) $i = '0'.$i;
  15.  echo '<tr><td>'.$i.'</td> ';
  16. }
  17. ?>


jak ostatnie echo które wyświetla mi dni miesiąca 1,2,3... czyli $i

wpleść w to zapytanie do :

  1. <?php
  2. include ("../base/base.php");
  3. $sql='SELECT user_login FROM obecny WHERE date='.$i++;
  4. $rezultat=mysql_query($sql);
  5.  if(@mysql_num_rows($rezultat)){
  6. echo 'tak';
  7. } else {echo 'brak';}
  8. ?>


tak aby sprawdzał wg parametru $i który kolejno będzie wynosił 1,2,3.... do ostatniego dnai miesiąca
luck
Czemu upierasz się, żeby do bazy wysyłać aż tyle zapytań, kiedy jak już Ci napisał Lars wszystko można załatwić pojedynczym zapytaniem? Wyciągnij sobie wszystkie obecności wszystkich userów z danego miesiąca, przejedź po wyniku i zbuduj tablicę w postaci np. $obecnosci[$userId][$dzienMies] = 'byl'. Przy wyswietlaniu tabelki sprawdzasz tylko czy dany indeks istnieje w tablicy: jeśli istnieje - 'był', jeśli nie istnieje - 'nie był'. Kropka.
wojtekwro
nie upieram się ;] nie znam jeszcze tablic ;/ nie wiedziałem, że można to tak rozwiązać. Jest ktoś chętny do przybliżenia takiego skryptu ?
luck
Użyj zapytania (z głowy, ale powinno zadziałać)
  1. <?php
  2. SELECT user_login, DAY(date) AS dzien FROM obecny WHERE YEAR(date)='. $rok .' AND MONTH(date)=. $miesiac;
  3. ?>

Potem robisz np.
  1. <?php
  2. $obecnosci = array();
  3. while ($row = mysql_fetch_object ($wynikZapytania)) {
  4. $obecnosci[$row->user_login][$row->dzien] = 'byl';
  5. }
  6. ?>

Na koniec przy generowaniu tabelki sprawdzasz, czy w tabeli $obecnosci jest klucz z okreslonym userem i dniem tygodnia. Klucz jest = user był obecny, brak klucza = user nieobecny.
Pokombinuj trochę, ale nie wysyłaj do bazy miliona niepotrzebnych zapytań winksmiley.jpg
webdice
Proszę o dodanie tagów w tytule tematu, w innym przypadku temat zostanie zamknięty.
wojtekwro
cały czas się uczę, przeczytać taczkę książek to nie problem, najważniejsze zastosować w praktyce i utrwalić a o tablicach zupełnie zapomniałem ;]
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.