[php/MySql]Aktualizacja rekordów bazy danych

ten skrypt działa tak jak chce. Za pomocą formularza dodaje sobie wpisy do bazy danych.

Wyświetlam je oraz usuwam. Ale gdy chce edytować to dodaje mi edytowany wpis jako nowy. Nie uaktualnia go.

<?PHP

ini_set( 'display_errors', 'Off' ); 

error_reporting( E_ALL );

?>





imię:




nazwisko: 




e-mail:










<?php

$imie = $_POST['imie'];

$nazwisko = $_POST['nazwisko'];

$email = $_POST['email'];


if($imie and $nazwisko and $email) {



    $connection = @mysql_connect('localhost', 'root', 'haslo')

    or die('Brak połączenia z serwerem MySQL');

    $db = @mysql_select_db('test', $connection)

    or die('Nie mogę połączyć się z bazą danych');



    $ins = @mysql_query("INSERT INTO test SET imie='$imie', nazwisko='$nazwisko', email='$email'");


    if($ins) echo "Rekord został dodany poprawnie";

    else echo "Błąd nie udało się dodać nowego rekordu";


    mysql_close($connection);

} 


?>





<?php


$connection = @mysql_connect('localhost', 'root', 'krecik92')

    or die('Brak połączenia z serwerem MySQL');

    $db = @mysql_select_db('test', $connection)

    or die('Nie mogę połączyć się z bazą danych');





$wynik = mysql_query("SELECT * FROM test")

or die('Błąd zapytania');



if(mysql_num_rows($wynik) > 0) {

echo "

| Id | Imie | Nazwisko | E-mail | Opcje |

| “.$r[‘id’].” | “.$r[‘imie’].” | “.$r[‘nazwisko’].” | “.$r[‘email’].” | DELEDIT |

“; } $a = trim($_GET[‘a’]); $id = trim($_GET[‘id’]); if($a == ‘del’ and !empty($id)) { mysql_query(“DELETE FROM test WHERE id=’$id’”) or die(‘Błąd zapytania: ‘.mysql_error()); echo ‘Rekord został usunęty z bazy’; } $a = trim($_REQUEST[‘a’]); $id = trim($_GET[‘id’]); if($a == ‘edit’ and !empty($id)) { $wynik = mysql_query("SELECT * FROM test WHERE id=’$id’”) or die(‘Błąd zapytania’); if(mysql_num_rows($wynik) > 0) { $r = mysql_fetch_assoc($wynik); echo ’ imię: value="’.$r[‘imie’].’" /> nazwisko: value="’.$r[‘nazwisko’].’" /> e-mail: value="’.$r[‘email’].’" /> ‘; } } elseif($a == ‘save’) { $id = $_POST[‘id’]; $imie = trim($_POST[‘imie’]); $nazwisko = trim($_POST[‘nazwisko’]); $email = trim($_POST[‘email’]); mysql_query("UPDATE test SET imie=’$imie’, email=’$email’, nazwisko=’$nazwisko’, WHERE id=’$id’") or die(‘Błąd zapytania’); echo ‘Dane zostały zaktualizowane’; } ?> [/code]

Jest kilka powodów, które składają się na twój problem:

  1. [*:3jad6zpu]wszystko w jednym pliku[*:3jad6zpu]nie masz save przy action formularza[*:3jad6zpu]nazwy pól są te same (dodawania i edycji), które sprawdzasz przy dodawaniu więc dodaje ci z automatu nowy rekord

Jest tak, jeśli usunę tylko

nazwisko:


        value="'.$r['nazwisko'].'" />

to nagle aktualizuje wpis.

Bo w tym swoim dodawaniu sprawdzasz wszystkie pola, więc jeśli jedne usuniesz masz szansę iść dalej :slight_smile:

edit // @down wystarczy, że jakoś rozróżnisz dodawanie od edycji :slight_smile:

Poradzilem sobie… Uff… Pomogło zmiana “name” w polach formularza. Dziekuje.