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

CRUD błąd z dodawaniem

VPS Starter Arubacloud
0 głosów
134 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ź 270 wizyt
pytanie zadane 19 kwietnia 2018 w PHP przez Vinchit Obywatel (1,040 p.)
0 głosów
0 odpowiedzi 166 wizyt
pytanie zadane 22 kwietnia 2018 w PHP przez Vinchit Obywatel (1,040 p.)
0 głosów
1 odpowiedź 175 wizyt
pytanie zadane 20 czerwca 2018 w Java przez Radek Begej Użytkownik (580 p.)

92,834 zapytań

141,778 odpowiedzi

320,827 komentarzy

62,164 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

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!

...