Problem z UPDATE w PostgreeSQL przy uzyciu PHP

0

Witam. Podczas pisania interfejsu dla bazy danych w PHP mam problem z update.
Sypie mi błędami na końcu linii:

Notice: Undefined index: indeks in /home/pdacko/public_html/update.php on line 87

Warning: pg_query(): Query failed: ERROR: syntax error at end of input LINE 1: ...szkania,kwota_zadluzenia FROM spis_dluznikow where indeks = ^ in /home/pdacko/public_html/update.php on line 90

Warning: pg_fetch_assoc() expects parameter 1 to be resource, boolean given in /home/pdacko/public_html/update.php on line 91

Warning: pg_query(): Query failed: ERROR: syntax error at end of input LINE 4: WHERE indeks= ^ in /home/pdacko/public_html/update.php on line 132
Update failed!!

Nie wiem co jest tego powodem, ale żeby łatwiej było pomóc opisze kod:

  1. Podajemy indeks i klikamy potwierdź
  2. Pojawia nam sie formularz i poprawnie uzupełnia komórki danymi(pomimo błędu powyzej on line 90)
  3. Edytuje jakieś dane
  4. Klikam potwierdź i formularz znika, pojawiają się błędy te co u góry.

Cały kod strony:

<!DOCTYPE html>
<html lang="en">
<head>
  <title>System Ewidencji Dłużników</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
  <script src="https://code.jquery.com/jquery-3.3.1.js"></script>
  <script src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>
  <script src="https://cdn.datatables.net/1.10.19/js/dataTables.bootstrap.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
   <script src="https://cdn.datatables.net/1.10.19/css/dataTables.bootstrap.min.css"></script>
   <script src="https://cdn.datatables.net/1.10.19/css/dataTables.bootstrap.min.css"></script>

</head>
<body >
<style> 
body {
background-image: url("bcg.png");
background-repeat: repeat;
  background-size: cover;
}

#shadow {
  box-shadow: 10px 10px 5px grey;
  border: 1px solid grey;
  border-radius: 8px;   
}
.nav.navbar-nav li a {
color: #ffa300;

}
.footer {
  position: fixed;
  left: 0;
  bottom: 0;
  width: 100%;
  background-color: grey;
  color: #ffa300;
  text-align: center;
}

</style>

<nav class="navbar navbar-inverse navbar-fixed-top"style="box-shadow: 0px 10px 21px 7px rgba(0,0,0,0.75);">
  <div class="container-fluid">
    <div class="navbar-header">
      <a class="navbar-brand" href="index.php"><img src="logo.png" height=50px style="margin-top: -20px;"></a>
    </div>
    <ul class="nav navbar-nav" >
      <li ><a href="index.php">Ewidencja</a></li>
      <li><a href="insert.php">Dodaj dłużnika</a></li>
      <li class="active"><a href="update.php">Aktualizuj informacje o dłużniku</a></li>
      <li><a href="delete.php">Usuń dłużnika</a></li>
    </ul>
  </div>
</nav>

<div class="container" style="margin-top:40px" >
<div class="panel panel-default" style="box-shadow: 13px 7px 43px 0px rgba(0,0,0,0.5);border: 1px solid grey; border-radius: 8px;">
<div class ="panel-heading">  <h3>Aktualna Lista Dłużników:</h3></div>

<div class="panel-body"> 

    <form name="display" action="update.php" method="POST" >
<div class="form-group">
    <label for="inputUpdate">Zaktualizuj Dane:</label>
    <input type="number"name="indeks" class="form-control" id="rekordID" aria-describedby="rekordHelp" placeholder="Podaj ID rekordu który chcesz edytować">
    <small id="updateHelp" class="form-text text-muted">Pamiętaj, że wprowadzonych zmian nie da się cofnąć!</small>
  </div>
<button type="submit" name="submit" class="btn btn-default">Potwierdź</button>
</form>
<?php ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);

$elo=1;

$elo =$_POST['indeks'];

$db = pg_connect("host=localhost  dbname=dluznicy user=pdacko password=elowariat");
$result = pg_query($db, "SELECT imie,nazwisko,indeks,miejsce_zamieszkania,kwota_zadluzenia FROM spis_dluznikow where indeks = $elo");
$row = pg_fetch_assoc($result);
$zmienna =$row['indeks'];
if (isset($_POST['submit'])){
echo $elo;
echo "<form name='update' action='update.php' method='POST' >
<div class='form-group'>
    <label for='inputUpdate'>Indeks:</label>
    <input type='number'name='indeks_update' value='$row[indeks]' class='form-control' id='rekordID' aria-describedby='rekordHelp'>
    <small id='updateHelp' class='form-text text-muted'>Numer indeksu musi byc unikatowy!</small>
  </div>
<div class='form-group'>
    <label for='inputUpdate'>Imie:</label>
    <input type='text'name='imie_update' value='$row[imie]' class='form-control' id='Imie' aria-describedby='rekordHelp'>
    <small id='updateHelp' class='form-text text-muted'></small>
  </div>
<div class='form-group'>
    <label for='inputUpdate'>Nazwisko:</label>
    <input type='text'name='nazwisko_update' value='$row[nazwisko]' class='form-control' id='Nazwisko' aria-describedby='rekordHelp'>
    <small id='updateHelp' class='form-text text-muted'></small>
  </div>
<div class='form-group'>
    <label for='inputUpdate'>Miejsce Zamieszkania:</label>
    <input type='text'name='miejsce_zamieszkania_update' value='$row[miejsce_zamieszkania]' class='form-control' id='Miejsce' aria-describedby='rekordHelp'>
    <small id='updateHelp' class='form-text text-muted'></small>
  </div>
<div class='form-group'>
    <label for='inputUpdate'>Kwota:</label>
    <input type='number'name='kwota_zadluzenia_update' value='$row[kwota_zadluzenia]' class='form-control' id='Kwota' aria-describedby='rekordHelp'>
    <small id='updateHelp' class='form-text text-muted'></small>
  </div>
<button type='submit' name='new' class='btn btn-default'>Potwierdź</button>
</form>
";
echo $elo;
}
if (isset($_POST['new'])){
$query="UPDATE spis_dluznikow
        SET (imie,nazwisko,miejsce_zamieszkania,kwota_zadluzenia) = 
        ('$_POST[imie_update]','$_POST[nazwisko_update]','$_POST[miejsce_zamieszkania_update]','$_POST[kwota_zadluzenia_update]')
        WHERE indeks= $elo ";

$result2 = pg_query($db, $query);
if (!$result2){
echo "Update failed!!";
echo $elo;

}
else
{
echo "Update successfull;";
echo $elo;
} 
}

?>

</div>
</body>

</html>
1

Nie sprawdzasz ani, czy masz $_POST, anie czy masz $_POST['indeks'], ani czy udało się połączyć z bazą danych. Dodaj warunki a zadziała...
(stawiam, że nie masz $_POST['indeks'])

0

@Marcin.Miga: jesli usune z zapytania update wyszczególnienie WHERE to działa elegancko tylko podmienia wtedy wszystkie rekordy. problem pojawia sie tylko z drugim where

dodałem sobie echo do wyświetlania wartości tego pola elo i w każdym momencie programu przechowuje poprawną wartość do samego zapytania update. Dlatego nie wiem w czym jest problem

ok zgodnie z twoja wskazowka dałem sprawdzanie istnienia postów. ogarnąłem, że przy nowym poście trace zapisana wartość w tamtej zmiennej dlatego nie chce pobrać mi tego numeru indeksu. W jaki sposób w takim razie zachować wartość tego indeksu i pobrac ją poźniej w następnym poście tam gdize jest update?

0

Ogarnij kod. Programiści PHP wiedzą to co wzorce projektowe i języki szablonów? Błąd jest taki jak wskazuje na niego mechanizm interpretera: nie masz nic pod kluczem indeks. Ok, najpierw podstawy podstaw: musisz zrozumieć działanie protokołu HTTP. To protokół bezstanowy. Krótko mówiąc zawsze informacje wysyłane w jakimś zapytaniu HTTP są tracone bezpowrotnie w kolejnym o ile nie zostaną zapisane po drodze gdzieś indziej. Tak to działa i tak ma działać. To "indziej" w PHP to są tablice globalne $_SESSION lub/i $_COOKIE. Zawsze gdy chcesz korzystać z jakichś danych kontekstowych powinieneś je zapisywać w tych globalnych tablicach asocjacyjnych i potem odczytywać gdy są Ci potrzebne.

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