• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

CRUD błąd z dodawaniem

Object Storage Arubacloud
0 głosów
125 wizyt
pytanie zadane 14 kwietnia 2018 w PHP przez Vinchit Obywatel (1,040 p.)
edycja 14 kwietnia 2018 przez Vinchit

Część, mam problem z CRUD a dokładnie z systemem dodawanie do bazy danych, mam zrobione myślę że wszystko co powinienem by działało to poprawnie lecz nie do końca z 7 rzeczy jakie mają się dodać dodaje się tylko jedna :P, powinno być dodane: name, plec, poszukiwany, karany, opis, policjant, data (dodaje się tylko data do bazy danych)

server.php

<?php
  session_start();
  // zainicjuj zmienne
    $name = "";
    $plec = "";
    $poszukiwany = "";
    $karany = "";
    $opis = "";
    $policjant = "";
    $data = "";
    $id = 0;
    $edit_state = false;

  // Połączenie z bazą Danych
  $db = mysqli_connect('localhost', 'root', '', 'crud');

  // Zapisz po kliknęciu przycisku Save
  if (isset($_POST['save'])) {
    $name = $_POST['name'];
    $name = $_POST['plec'];
    $name = $_POST['poszukiwany'];
    $name = $_POST['karany'];
    $name = $_POST['opis'];
    $name = $_POST['policjant'];
    $name = $_POST['data'];
      
    $query = "INSERT INTO info (name, plec, poszukiwany, karany, opis, policjant, data) VALUES ('$name', '$plec', '$poszukiwany', '$karany', '$opis', '$policjant', '$data' )";
    mysqli_query($db, $query);
    $_SESSION['msg'] = "Dodano do bazy danych";
    header('Location: index.php'); // Przekierowanie do index.php po wprowadzeniu danych
  }

  // edytuj rekord
  if (isset($_POST['update'])) {
    $name = mysqli_real_escape_string($db, $_POST['name']);
    $plec = mysqli_real_escape_string($db, $_POST['plec']);
    $plec = mysqli_real_escape_string($db, $_POST['poszukiwany']);
    $plec = mysqli_real_escape_string($db, $_POST['karany']);
    $plec = mysqli_real_escape_string($db, $_POST['opis']);
    $plec = mysqli_real_escape_string($db, $_POST['policjant']);
    $plec = mysqli_real_escape_string($db, $_POST['data']);
    $id = mysqli_real_escape_string($db, $_POST['id']);

    mysqli_query($db, "UPDATE info SET name='$name', plec='$plec', poszukiwany='$poszukiwany', karany='$karany', opis='$opis', policjant='$policjant', data='$data' WHERE id=$id");
    $_SESSION['msg'] = "Zmieniono wpis/y w bazie danych";
    header('Location: index.php');
  }
  // Kasowanie rekordu czyli osoby z bazy danych 
  if (isset($_GET['del'])){
    $id = $_GET['del'];
    mysqli_query($db, "DELETE FROM info WHERE id=$id");
    $_SESSION['msg'] = "Usunięto z bazy danych obywatela";
    header('Location: index.php');
  }

  $results = mysqli_query($db, "SELECT * FROM info");

 ?>

index.php

<?php include('server.php');

    // fetch the record to be Update
    if (isset($_GET['edit'])) {
      $id = $_GET['edit'];
      $edit_state = true;
      $rec = mysqli_query($db, "SELECT * FROM info WHERE id=$id");
      $record = mysqli_fetch_array($rec);
      $name = $record['name'];
      $plec = $record['plec'];
      $poszukiwany = $record['poszukiwany'];
      $karany = $record['karany'];
      $opis = $record['opis'];
      $policjant = $record['policjant'];
      $data = $record['data'];
      $id = $record['id'];
    }

?>
<!DOCTYPE html>
<html lang="pl">
  <head>
    <meta charset="utf-8">
    <title>Baza Danych Los Santos</title>
    <link rel="stylesheet" type="text/css" href="style.css">
  </head>
  <body>

    <?php if (isset($_SESSION['msg'])): ?>
      <div class="msg">
        <?php
          echo $_SESSION['msg'];
          unset($_SESSION['msg']);
         ?>
      </div>
    <?php endif; ?>

    <table>
        <thead>
          <tr>
            <th>Name</th>
            <th>Plec</th>
            <th>Poszukiwany</th>
            <th>Karany</th>
            <th>Opis</th>
            <th>Policjant</th>
            <th>Data</th>
            <th colspan="2">Action</th>
          </tr>
        </thead>
        <tbody>
          <?php while ($row = mysqli_fetch_array($results)) { ?>
              <tr>
                  <td><?php echo $row['name'] ?></td>
                  <td><?php echo $row['plec'] ?></td>
                  <td><?php echo $row['poszukiwany'] ?></td> 
                  <td><?php echo $row['karany'] ?></td> 
                  <td><?php echo $row['opis'] ?></td> 
                  <td><?php echo $row['policjant'] ?></td> 
                  <td><?php echo $row['data'] ?></td>              
                  <td>
                    <a class="edit_btn" href="index.php?edit=<?php echo $row['id']; ?>">Edytuj</a>
                  </td>
                  <td>
                    <a class="del_btn" href="server.php?del=<?php echo $row['id']; ?>">Usuń</a>
                  </td>
              </tr>
          <?php } ?>
        </tbody>
    </table>

    <form method="post" action="server.php">
      <input type="hidden" name="id" value="<?php echo $id; ?>" />
      <div class="input-group">
        <label>Name</label>
        <input type="text" name="name" value="<?php echo $name; ?>" />
      </div>
      <div class="input-group">
        <label>Plec</label>
        <input type="text" name="plec" value="<?php echo $plec; ?>" />
      </div>
      <div class="input-group">
            <label>Poszukiwany</label>
            <input type="text" name="poszukiwany" value="<?php echo $poszukiwany; ?>" />
      </div>
      <div class="input-group">
            <label>Karany</label>
            <input type="text" name="karany" value="<?php echo $karany; ?>" />
      </div>
      <div class="input-group">
            <label>Opis</label>
            <input type="text" name="opis" value="<?php echo $opis; ?>" />
      </div>
      <div class="input-group">
            <label>Policjant</label>
            <input type="text" name="policjant" value="<?php echo $policjant; ?>" />
      </div>
      <div class="input-group">
            <label>Data</label>
            <input type="text" name="data" value="<?php echo $data; ?>" />
      </div>
      <div class="input-group">
        <?php if ($edit_state == false): ?>
          <button type="submit" name="save" class="btn">Zapisz</button>
        <?php else: ?>
          <button type="submit" name="update" class="btn">Zmień</button>
        <?php endif  ?>

      </div>
    </form>

  </body>
</html>

style.css

body {
  front-size: 19px;
}
table{
  width: 50%;
  margin: 30px auto;
  border-collapse: collapse;
  text-align: left;
}
tr {
  border-bottom: 1px solid #cbcbcb;
}
th, td{
  border: none;
  height: 30px;
  padding: 2px;
}
tr:hover{
  background: #F5F5F5;
}
form {
  width: 45%;
  margin: 50px auto;
  text-align: left;
  padding: 20px;
  border: 1px solid #bbbbbb;
  border-radius: 5px;
}
.input-group{
  margin: 10px 0px 10px 0px;
}
.input-group label{
  display: block;
  text-align: left;
  margin: 3px;
}
.input-group input{
  height: 30px;
  width: 93%;
  padding: 5px 10px;
  border-radius: 5px;
  border: 1px solid gray;
}
.btn{
  padding: 10px;
  font-size: 15px;
  color: white;
  background: #5F9EA0;
  border-radius: 5px;
}
.msg{
  margin: 30px auto;
  padding: 10px;
  border-radius: 5px;
  color: #3c763d;
  background: #dff0d8;
  border: 1px solid #3c763d;
  width: 50%;
  text-align: center;
}
.edit_btn{
  text-decoration: none;
  padding: 2px 5px;
  background: #2E8B57;
  color: white;
  border-radius: 3px;
}
.del_btn{
  text-decoration: none;
  padding: 2px 5px;
  color: white;
  border-radius: 3px;
  background: #800000;
}

Dodam że jestem amatorem przez duże A :) chętnie przyjmę krytykę i oczywiście pomoc z tym problemem :)

Robiłem pierw z poradnikiem (amator) działało wszystko zmieniłem tylko kilka rzeczy pod siebie (dodałem więcej miejsc do wpisywania danych itp.) i już nie działa poprawnie :)

1 odpowiedź

+1 głos
odpowiedź 14 kwietnia 2018 przez CzikaCarry Szeryf (75,340 p.)

1. Poczytaj o prepared statements i bindowaniu parametrów (polecam w PDO, ale w MySQLi też się da)

2. Błąd jest najprawdopodobniej tutaj:

$name = $_POST['name'];
    $name = $_POST['plec'];
    $name = $_POST['poszukiwany'];
    $name = $_POST['karany'];
    $name = $_POST['opis'];
    $name = $_POST['policjant'];
    $name = $_POST['data']

Nadpisujesz tutaj cały czas zmienną name, $_POST['data'] jest na końcu, więc tylko ta zmienną dodaje się do bazy.

Poza tym, jeśli prosisz o krytykę, to napisz kod obiektowo, przyporządkuj się do jakiegoś wzorca, np. MVC, podziel plik logicznie na klasy, zapoznaj się z composerem i korzystaj z dostarczanego przez niego autoloadingu, dodatkowo przejdź na PDO. Wiem, dużo, ale kto powiedział, że droga rozwoju będzie łatwa :)

komentarz 14 kwietnia 2018 przez Vinchit Obywatel (1,040 p.)
Tak właśnie to zobaczyłem :D jak kopiowałem $name = $_POST['name'];  to zmieniałem tylko ['name'] nie zauważyłem że jeszcze $name podobnie mam z edycją :)

Dzięki za pomoc za chwilę po czytam o PDO :)

Podobne pytania

0 głosów
1 odpowiedź 218 wizyt
pytanie zadane 19 kwietnia 2018 w PHP przez Vinchit Obywatel (1,040 p.)
0 głosów
0 odpowiedzi 156 wizyt
pytanie zadane 22 kwietnia 2018 w PHP przez Vinchit Obywatel (1,040 p.)
0 głosów
1 odpowiedź 163 wizyt
pytanie zadane 20 czerwca 2018 w Java przez Radek Begej Użytkownik (580 p.)

92,576 zapytań

141,426 odpowiedzi

319,650 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...