Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Prezentacja danych przy zmiennej ilości rekordów + porównywanie date() i datetime
Forum PHP.pl > Forum > Przedszkole
eFK
Witam serdecznie

Mam sobie taki kod
  1. <?php header('Content-Type: text/html; charset=utf-8');
  2.  
  3. $con = mysql_connect("", "", "");
  4. $db = mysql_select_db ("testowo");
  5.  
  6. $sql = mysql_query("CREATE TABLE logging
  7. (
  8. date DATETIME NOT NULL,
  9. user VARCHAR(255) NOT NULL,
  10. pass INT(255) NOT NULL,
  11. PRIMARY KEY (pass)
  12. )");
  13.  
  14. $number = $_POST['number'];
  15.  
  16. $i = 0;
  17. while ($i < $number)
  18. {
  19. $date= date("Y-m-d H:i:s");
  20. $user=uniqid();
  21. $pass=rand();
  22. $sql = mysql_query("INSERT INTO logging VALUES ('$date', '$user', '$pass' )");
  23. $i++;
  24. }
  25.  
  26. echo '<form method="post" action="createpass.php" name="log_in">
  27. wpisz liczbę kursantów: <input type="text" name="number"></input>
  28. <input type="submit" name="" value="STWÓRZ HASŁA"></input><br>
  29. </form>';
  30. echo '<a href="zalogoj.php?logout">Wyloguj się</a>' .'<br /><br />';
  31.  
  32. $reset=mysql_query('DELETE FROM logging WHERE date < NOW() - INTERVAL 7 DAY');
  33.  
  34. $sql=mysql_query("SELECT date, user, pass FROM logging ORDER BY date DESC");
  35. while($row = mysql_fetch_assoc($sql))
  36. {
  37. print_r ($row);
  38. }
  39.  
  40.  
  41. ?>


Chodzi o tworzenie x-ilości użytkowników i haseł jednorazowych.

I do etapu twozrenia i dodawania tych danych do bazy jest wszystko ok. Ale mam problemy z napisaniem fragmentu do wyświetlania kolumn users i pass w tabelce do puźniejszego drukowania. Problem polega właśnie na tym, że ilość wyświetlanych rekordów musi być równa ilości podanych uczestników, dla których tworzy się hasła np: jeżeli w polu formularza wpisze się że 2 - to mają pokazywać się tylko dwa najnowsze rekordy, jeżeli 10 - 10 najnowszych rekordów.

Szukałąm po necia podpowiedzi, gdyż byłam pewna, że kiedyś już na coś podobnego trafiłam i było oparte o foreach. Ale przy foreach jestem w stanie wypisać tylko jedną kolumnę, a jak dodaje drygie foreach to dane z tej kolumny wyświetlaja mi się przesunięte, tak że nie pasują do odpowiedajacych im danych w bazie. Domyślam się, że można użyć jeszcze jakoś COUNT() albo MYSQL_NUN_ROW, ale ani też mi to nie wychodzi.

Myślałam jeszcze o połaczeniu pól user i pass podczas select (wtedy dało by się użyć foreach), ale nie znalazłam nic, co by na to pozwalało. Chyba, ze coś ominełam, o wielu funkcjach czytałąm tylko po angielsku.

Drugi problem, to wskazywanie, że chcę wyświetlić właśnie x-rekordów. Najpierw myślałąm, że do limit mogę wstawić zmienną $number (czyli z liczbą tworzonych haseł), ale po wnikliwych :-D przeszukiwaniach neta, okazało sie, że tak prosto nie ma. Więc postanowiłam wyselekcjonować tylko te rekordy w których kolumna date jest równa zmiennej date. Niestety datetime z mysqla i date() z php przyjmują trochę inny format przez co ich porównanie wypada negatywnie. Do date() próbowałąm dopisać u, które oznacza mikrosekundy (czyli to, czego brak powoduje, ze nie mogę porównać tych danych) ale nestety, nie idzie.

Chyba podałąm wszystkie potrzebne informacje.
Z góry dziękuje ze każdą podpowiedz

Turson
Cytat
Drugi problem, to wskazywanie, że chcę wyświetlić właśnie x-rekordów. Najpierw myślałąm, że do limit mogę wstawić zmienną $number (czyli z liczbą tworzonych haseł), ale po wnikliwych :-D przeszukiwaniach neta, okazało sie, że tak prosto nie ma.

Jak nie jak tak.
SELECT * FROM tabela LIMIT 5

Cytat
Niestety datetime z mysqla i date() z php przyjmują trochę inny format przez co ich porównanie wypada negatywnie

datetime = date("Y-m-d H:i:s")
eFK
Cytat
Cytat
Drugi problem, to wskazywanie, że chcę wyświetlić właśnie x-rekordów. Najpierw myślałąm, że do limit mogę wstawić zmienną $number (czyli z liczbą tworzonych haseł), ale po wnikliwych :-D przeszukiwaniach neta, okazało sie, że tak prosto nie ma.

Jak nie jak tak.
SELECT * FROM tabela LIMIT 5


Tylko cały problem polega na tym, że ja LIMIT nie przyjmuje u mnie stałej wartości, tylko liczbę zależną od liczny wpisanej w formularzu przez użytkownika. Czyli raz może być 5, a kiedy indziej 7...

Może nie wyjaśniłam o co chodzi w skrypcie. Skrypt na generować podaną przez admina liczbę stworzonych na zasadzie random użytkowników i haseł dla nich, które właścicliel strony rozdaje potem swoim kursantom, co pozwala na zalogowanie się raz do odpowiedniej części serwisu i pobranie materiałów. Potem user i pass są kasowane. I z tym jest ok.
Właścicel strony musi móc wydrukować zestaw przed chwilą wydenerowanych userów i haseł, aby rozdać je podczas szkolenia. I z tym mam problem. Nie mogę przedstawić ,najlepiej w postaci tabelki html, dwóch kolumn bazy: user i pass, ograniczonych do tych właśnie dodanych rekordów (może się przecież okazać, ze w bazie będą użytkownicy i hasła dla kilku grup, dlatego nie mogę przedstawiać do drukowania wszystkiego).
Turson
Tzn. chcesz stworzyć określoną przez admina liczbę użytkowników?
nospor
No to nadal LIMIT jak podal juz ci TURSON.... tylko ze zamiast liczby na sztywno wpisujesz swoj $number pobrany z forma

  1. $sql=mysql_query("SELECT date, user, pass FROM logging ORDER BY date DESC limit $number ");
  2.  
  3. while($row = mysql_fetch_assoc($sql))
  4.  
  5. {
  6.  
  7. print_r ($row);
  8.  
  9. }


ps: nie ma sensu bys za kazdym razem probowala tworzyc tabele logging... wywal kod odpowiadajacy za tworzenie tej tabeli
eFK
nospor: dzięki, próbowałam wcześniej użyć w taki sposób limit i mi nie szło. Coś musiałam żle wpisywać. Jeszcze raz, dziękuje.

Turson: tak dokładnie, chcę stworzyć określoną przez admina liczbę użytkowników i przypisanych do nich haseł, które po jednym użyciu będą usówane. I to już zrobiłam. Teraz tylko muszę tak stworzyć wyświetlanie wyników, aby dało siędodanych właśnie przez admina użytkowników i hasłą wydrukować, pociąć i rozdać na szkoleniu kursantom karteczki, na których będzie wydrukowany użtkownik i hasło.
Xart
Radzę Ci się przerzucić na mysqli/PDO bo od PHP 5.5.0 te twoje funkcje będą przestarzałe smile.gif
eFK
http://webmade.org/kursy-online/mysq_fetch...-kurs-mysql.php -> tylko, że w tym tworzy się tabelkę przy znanej liczbie wierszy (rekordów). A u mnie ona jest zmienna, raz 10, raz 15, raz może być jeszcze inna. I w tym cały problem. No chyba, że tego się poprostu nie da zrobić, myszę przygotować tabelkę dla stałej, dużej liczby rekordów i najwyżej nie wszystkie komurki bedą zapełnione.

A za nim przesiąde się na PDO chcę popracować trochę na php/mysql, bo wydaje mi się że to podstawa i ułatwi mi potem zrozumeinei PDO :-)
nospor
W linku co dostalas tabelka jest tworzona na podstawie zmiennej liczby rekordow....

Cytat
A za nim przesiąde się na PDO chcę popracować trochę na php/mysql, bo wydaje mi się że to podstawa i ułatwi mi potem zrozumeinei PDO :-)

biblioteka mysql_ jest juz na wymarciu i nie ma sensu sie jej uczyc. Szkoda czasu, lepiej od razu zacząć sie uczyc PDO
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.