Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]przekazanie zmiennej, dzień miesiąca w zapytaniu do sql (tablice)
wojtekwro
post
Post #1





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 26.04.2007

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


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

Ten post edytował wojtekwro 20.08.2008, 19:58:48
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
f1xer
post
Post #2





Grupa: Zarejestrowani
Postów: 403
Pomógł: 68
Dołączył: 20.03.2008

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


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





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


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





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 26.04.2007

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


czyli zapytani będzie powtarzane tyle razy ile jest dni np we wrześniu, tak jak działa funkcja którą wkleiłem tak (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
Lars
post
Post #5





Grupa: Zarejestrowani
Postów: 279
Pomógł: 15
Dołączył: 29.04.2005
Skąd: Gdynia

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


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
Go to the top of the page
+Quote Post
wojtekwro
post
Post #6





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 26.04.2007

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


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

Ten post edytował wojtekwro 20.08.2008, 19:33:58
Go to the top of the page
+Quote Post
luck
post
Post #7





Grupa: Zarejestrowani
Postów: 317
Pomógł: 58
Dołączył: 6.11.2005

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


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





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 26.04.2007

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


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 ?
Go to the top of the page
+Quote Post
luck
post
Post #9





Grupa: Zarejestrowani
Postów: 317
Pomógł: 58
Dołączył: 6.11.2005

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


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ń (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Ten post edytował luck 20.08.2008, 19:54:54
Go to the top of the page
+Quote Post
webdice
post
Post #10


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Proszę o dodanie tagów w tytule tematu, w innym przypadku temat zostanie zamknięty.
Go to the top of the page
+Quote Post
wojtekwro
post
Post #11





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 26.04.2007

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


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 ;]
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 19:02