Wątek przeniesiony 2018-12-16 09:38 z Bazy danych przez Patryk27.

Przycisk button z przedłużeniem

Odpowiedz Nowy wątek
2018-12-16 10:23
0

Witam.
Mam tabele Moje wypożyczenia i do każdego rekordu w tabeli jest przypisany przycisk Przedłuż, który ma tylko mieć możliwość przedłużenia danej książki tylko raz. Nie wiem niestety jak zrobić by tylko jedna książka się przedłużała a nie wszystkie oraz żeby była możliwość przedłużenia tylko raz. Bardzo proszę o pomoc z góry dziękuje.


<?php
include ("includes/connect.php");
header('Content-Type: text/html; charset=UTF-8');                                   

$stan = mysqli_query($connect, "select * from wypozyczenie join ksiazka on wypozyczenie.id_ksiazka=ksiazka.id_ksiazka join autor on autor.id_autor=ksiazka.id_autor where wypozyczenie.id_czytelnik='".$_SESSION['id_czytelnik']."'");

if(mysqli_num_rows($stan)>0){
   echo "<style>thead, td, th { border: 1px solid grey ;table-layout: auto;  } </style>";
   echo "<table>";
   echo "<thead>";
   echo "<tr>";
   echo "<th><b>Tytuł</b></th><th><b>Autor</th><th><b>Data wypożyczenia</th><th><b>Data oddania</th><th><b>Przedłuż</th>";
   echo "</tr>";
   echo "</thead>";
   echo "<tbody>";

while($row = mysqli_fetch_assoc($stan)) {
  echo "<tr> <th>".$row['tytul']."</th><td>".$row['imie_autor']." ".$row['nazwisko_autor']."<td>".$row['data_wypozyczenia']."<td>".$row['data_oddania']."
  <td><form method='POST' action='moje-wypozyczenia.php'>
  <input type='submit' name='submit' value='Przedłuż'/>
  <input type='hidden' name='ktory' value='$row[id_ksiazka]'/>
  </form></tr>";    

if(isset($_POST['ktory'])){
   if($row['id_ksiazka']==$_POST['ktory'])
{
    $update = "Update wypozyczenie set data_oddania =adddate(data_oddania, 30)";
if(mysqli_query($connect, $update)){
    echo "Przedłużyłeś książkę";
}
header('Location: http://localhost/projekt1/moje-wypozyczenia.php');
}
}                               
}
       echo "";
       echo "</tbody>";
       echo "</table>";
}
else
{
       echo "Brak wypożyczonych książek"."</br>";
}

?>
edytowany 1x, ostatnio: Beata Skiba, 2018-12-16 10:59
Sformatuj ten kod porządnie - w obecnej formie niestety bardzo ciężko się go czyta. - Patryk27 2018-12-16 10:37

Pozostało 580 znaków

2018-12-16 11:27
1

Skoro robisz taka funkcjonalność to nie musisz używać formularzy. Wystarczy zwykły link z zaszytym id książki która przedłużasz, np
.. href="moja_obsluga_zdarzenia.php?bookId=256".

Następnie musisz po stronie kodu php zapisać informacje w bazie za dana książka, a dokładniej czas wypożyczenia został przedłuzony (zakładam że dla aktualnie zalogowanego usera, wiec id wypozyczajacego gdzieś powinno być).

Generujac widok(html) możesz też sprawdzać czy książka była już przedłużana (wyciagniesz z bazy te dane) i wtedy pomijasz wyświetlanie przycisku/linka przy danej pozycji.

edytowany 1x, ostatnio: axelbest, 2018-12-16 12:24

Pozostało 580 znaków

2018-12-16 12:59
1

W zapytaniu brakuje identyfikatora książki którą chcesz przedłużyć dla tego aktualizuje wszystkie.

    $update = "Update wypozyczenie set data_oddania =adddate(data_oddania, 30) WHERE `id_ksiazka` = '".$_POST['ktory']."';";

lepszym rozwiązaniem będzie link jak pisze @axelbest
Przykład przedluz.php?book=xxx

<?php
include ("includes/connect.php");

$update = "UPDATE `wypozyczenie` SET `data_oddania` = adddate(data_oddania, 30) WHERE `id_ksiazka` = '".$_GET['book']."' AND `id_czytelnik` = '".$_SESSION['id_czytelnik']."';";

if(mysqli_query($update)) {
header("Location: ./moje-wypozyczenia.php?status=success");
} else {
header("Location: ./moje-wypozyczenia.php?status=fail");
}
?>

lub Ajax z jQuery


Nie pomagam naPW.!.
Ekspresowo xD - PiDev 2018-12-16 13:00

Pozostało 580 znaków

2018-12-16 13:09
0
PiDev napisał(a):

W zapytaniu brakuje identyfikatora książki którą chcesz przedłużyć dla tego aktualizuje wszystkie.

    $update = "Update wypozyczenie set data_oddania =adddate(data_oddania, 30) WHERE `id_ksiazka` = '".$_POST['ktory']."';";

lepszym rozwiązaniem będzie link jak pisze @axelbest
Przykład przedluz.php?book=xxx

<?php
include ("includes/connect.php");

$update = "UPDATE `wypozyczenie` SET `data_oddania` = adddate(data_oddania, 30) WHERE `id_ksiazka` = '".$_GET['book']."' AND `id_czytelnik` = '".$_SESSION['id_czytelnik']."';";

if(mysqli_query($update)) {
header("Location: ./moje-wypozyczenia.php?status=success");
} else {
header("Location: ./moje-wypozyczenia.php?status=fail");
}
?>

lub Ajax z jQuery

A jeśli robię w ten pierwszy sposób to jak zrobić by max jedno przedłużenie było ?

Pozostało 580 znaków

2018-12-16 13:26
Beata Skiba napisał(a):

A jeśli robię w ten pierwszy sposób to jak zrobić by max jedno przedłużenie było ?

dodaj kolumnę (typu boolen) z domyślną wartością 0.
Jeśli klient przedłuży wypożyczenie to zmień datę i ustaw wartość kolumny na 1


Nie pomagam naPW.!.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0