Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][SQL]Zakaz Edycji danych w sql
Forum PHP.pl > Forum > Przedszkole
eurosoft
Witam,
mam tabelkę wyświetlaną za pomoca zapytania sql w poniższej formie:
  1. echo "<table border=1 cellspacing=0 cellpadding=1 bgcolor=#ADB79E bordercolor=#FFFFFF>";
  2. echo "<tr>";
  3. echo "<th>L.p.</th>";
  4. echo "<th>Nazwisko i Imię</th>";
  5. echo "<th>Data</th>";
  6. echo "<th>Osoba dokonująca wpisu elektr.</th>";
  7. echo "<th>Info</th>";
  8.  
  9. $i = 0; //kolorowanie wierszy
  10. $k = $from; //liczba porządkowa
  11. while($r = mysql_fetch_array($result) AND $z = mysql_fetch_array($result1))
  12. {
  13. $i++; //kolorowanie wierszy
  14. $k++; //liczba porządkowa
  15.  
  16. echo "<tr>";
  17. echo '<tr style="'.($i%2==0?'background-color: #CCCCCE;':'background-color: #DEE0E2;').'">'; //kolorowanie wierszy
  18. echo "<td width=180 align=center>".$z[10]."</td>";
  19. echo "<td width=180 align=center>".$z[10]."</td>";
  20. echo "<td><form method=POST action=\"popraw.php?a=edit&amp;id_book={$r[0]}\"><input type=hidden name=popraw.php><input type=submit value=Zmień></td>";
  21. echo "</tr></form>";
  22. }
  23. echo "</table></div>";

chciałbym aby po upływie np dwóch dni od daty w polu 'data' zapisanej w danym rekordzie nie był widoczny przycisk "ZMIEŃ"
Da się coś wymodzić takiego?
Dziękuje pozdrawiam.
thek
Tak. Da się. strtotime i date
sadistic_son
  1. if($z['data'] /* lub $r['data'] bo nie wiem jak baza wyglada */ > time()-172800 ){ echo '<input type=submit value=Zmień>'; }

172800 sekund mają 2 dni. To zadziała oczywiście zakładając, że daty w bazie przechowujesz w formacie unixowym. Jeśli nie to najpierw $z['data'] musisz potraktować strtotime, jak thek podpowiedział.
eurosoft
Daty przechowuję w formacie 'date' /rrrr-mm-dd/
czyli rozumiem że powinienem zmodyfikować linię w taki sposób?
......
  1. echo "<td><form method=POST action=\"popraw.php?a=edit&amp;id_book={$r[0]}\"><input type=hidden name=popraw.phpif($r['7'] > time()-172800 ){ echo '<input type=submit value=Zmień>'; }</td>";

niestety tak mi nie wychodzi, proszę o wyrozumiałość dopiero raczkuję a w goooooooglach wszystkoego nie znajdę....
Valdi_B
Konkurencyjne rozwiązanie:
Datę sprzed 2 dni generuj raz przed pętlą:
  1. $dat_2d_przed = date('Y-m-d', strtotime('-2 days'));
Potem w pętli porównuj datę z bazy z tą datą
sadistic_son
Cytat(eurosoft @ 4.03.2011, 07:16:18 ) *
  1. echo "<td><form method=POST action=\"popraw.php?a=edit&amp;id_book={$r[0]}\"><input type=hidden name=popraw.phpif($r['7'] > time()-172800 ){ echo '<input type=submit value=Zmień>'; }</td>";
Coś Ty tu stworzył kolego ?! co to jest phpif( ?

  1. echo '<td><form method="POST" action="popraw.php?a=edit&amp;id_book={'.$r['0'].'}" ><input type="hidden" name="popraw.php" />';
  2. if($r['7'] > time()-172800 ){ echo '<input type="submit" value="Zmień">'; } echo '</td>';
Poczytaj o tym kiedy stosować jaki cudzysłów i o ogólnych zasadach php bo to co tam stworzyłeś nie ma prawa istnieć w ogóle. Popatrz jak choćby forumowy parser pokolorował moją składnię a jak Twoją. A niby to samo napisaliśmy.
eurosoft
tak, później zobaczyłem co powklejałem......... sorry
jednak Twój kod nie działa nie pokazuje się żaden przycisk, czy to z dnia dzisiejszego czy tez innego, pole napewno jest typu date a jego format to 2011-03-04
poradzisz coś jeszcze?
sadistic_son
  1. if(strtotime($r['7']) > time()-172800 )
Z tym, że musisz wziąć TO pod uwagę. strtotime pasuje angielskie daty więc format MM-DD-RRRR. Czyli 01-02-2010 ( 1 lutego 2010 ) może Ci potraktować jako 2 stycznia.
eurosoft
Bardzo dziękuje teraz już wszystko działa, a daty są parsowane prawidłowo, musiałem jednak wprowadzić korektę dotyczącą nawiasów bo nie edytowało poprawnie wartości z danego rekordu.
Prawidłowo działa w takiej postaci
  1. echo '<td><div id=menu><form method="POST" action="popraw.php?a=edit&amp;id_book='.$r[0].'" ><input type="hidden" name="popraw.php" />';
  2. if(strtotime($r['7']) > time()-172800 ){ echo '<input type="submit" value="Zmień">'; } echo '</div></td>';

Pozdrawiam.
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.