Edycja danych w bazie danych
Edycja danych w bazie danych
http://wklej.org/id/592021/ - plik z klasą http://wklej.org/id/591702/
Nazwa bazy danych to kom tabela komentarze (id, komentarz).
Witam.
Tworzę sobie skrypt obsługujący komentarze (usuwanie i edycja)
Usuwanie działa. Jak podejść do zrobienia edycji? W tej chwili to co zrobiłem nie działa. Jak powinno to wyglądać?
Pozdrawiam
Nazwa bazy danych to kom tabela komentarze (id, komentarz).
Witam.
Tworzę sobie skrypt obsługujący komentarze (usuwanie i edycja)
Usuwanie działa. Jak podejść do zrobienia edycji? W tej chwili to co zrobiłem nie działa. Jak powinno to wyglądać?
Pozdrawiam
Re: Edycja danych w bazie danych
Na pierwszy rzut oka wszystko wygląda OK.
is_numeric sprawdza, czy wartość jest numeryczna, ale dalej może oznaczać, że coś jest stringiem, spróbuj rzutować $id na int. $id = int($id).
Myślę, że rzutowanie w funkcji edit przed użyciem $id powinno rozwiązać problem. Tak aby zobrazować problem:
Jeśli to nie pomoże to spróbuj trochę podebugować i zobaczyć co znajduje się w $_GET['edit'] funkcją var_dump, również przetestuj tą samą funkcją $id w funkcji edit i podaj mi wyniki oraz pokaż całą funkcję getKomentarze();
is_numeric sprawdza, czy wartość jest numeryczna, ale dalej może oznaczać, że coś jest stringiem, spróbuj rzutować $id na int. $id = int($id).
Myślę, że rzutowanie w funkcji edit przed użyciem $id powinno rozwiązać problem. Tak aby zobrazować problem:
Code: Zaznacz cały
$id = "50";
echo var_dump($id);
echo var_dump(is_numeric($id));
$id = (int)$id;
echo var_dump($id);
Re: Edycja danych w bazie danych
Code: Zaznacz cały
$edit = $_GET['edit'];
var_dump($edit);
string(2) "36"
-----------------------------------------------------------------------------------------
Teraz $id w metodzie edit:
Code: Zaznacz cały
public function edit($id,$kom){
var_dump($id);
if( !is_numeric($id) ) {
return false;
}
// $result = mysql_query("UPDATE coments SET komentarz = '$kom' WHERE id = ".$id);
// return $result;
try
{
$pdo = new PDO('mysql:host=localhost;dbname=kom', 'root', '');
$pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$ilosc = $pdo -> exec("UPDATE coments SET komentarz = '$kom' WHERE id = ".$id);
return $ilosc;
// if($ilosc > 0)
// {
// echo 'Edytowano: '.$ilosc.' rekord/ow';
// }
// else
// {
// echo 'Wystąpił błąd podczas dodawania rekordów!';
// }
}
catch(PDOException $e)
{
echo 'Wystąpił błąd biblioteki PDO: ' . $e->getMessage();
}
}
Code: Zaznacz cały
$a = new Komentarze();
//$a->addKomentarz("DOMINISIA");
//$a->getKomentarz(4);
$a->edit(36, "nowa tresc");
-----------------------------------------------------------------------------------
Cała funkcja getKomentarze():
Code: Zaznacz cały
public function getKomentarze(){
try
{
$pdo = new PDO('mysql:host=localhost;dbname=kom', 'root', '');
$pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $pdo -> query("SELECT * FROM coments");
// echo '<ul>';
// foreach($stmt as $row)
// {
// echo '<li>'.$row['komentarz'].'</li>';
// }
// $stmt -> closeCursor();
// echo '</ul>';
if ($stmt->rowCount() > 1){
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
}
catch(PDOException $e)
{
echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage();
}
}
Dziękuje za pomoc. Pozdrawiam
Re: Edycja danych w bazie danych
Podmień
na
i zobacz co się będzie działo.
Code: Zaznacz cały
$edit = $_GET['edit'];
Code: Zaznacz cały
$edit = (int)$_GET['edit'];
Re: Edycja danych w bazie danych
http://wklej.org/id/592385/
nadal nie edytuje i jest taki błąd: Notice: Undefined index: komm in C:\xampp\htdocs\tb\newEmptyPHP.php on line 49 (wyżej jest link do kodu pliku newEmptyPHP.php)
nadal nie edytuje i jest taki błąd: Notice: Undefined index: komm in C:\xampp\htdocs\tb\newEmptyPHP.php on line 49 (wyżej jest link do kodu pliku newEmptyPHP.php)
Re: Edycja danych w bazie danych
Nie zauważyłem tego w ogóle, trzeba była od razu napisać w której linii jest błąd i co dokładnie nie działa.
Bo ta wartość tam nie istnieje dopóki ktoś nie kliknie na submit w formularzu, który swoją drogą nie jest skończony. Gdy odpalisz swój skrypt zobacz, że kod html jest niepoprawny. Jedynie jaką wartość w tamtym miejscu możesz wysłać do funkcji edit to $row['komentarz'], ale to chyba nie to co zamierzasz napisać.
W tym miejscu:
domyślam się, że chcesz potwierdzić edycję jakiegoś komentarza, jednak przy pomocy foreach wypiszesz wszystkie możliwe komentarze, napisz może funkcje pobierającą tylko jeden komentarz, z podanym id?, a funkcje edit wywołuj po kliknięciu na OK w totalnie innym miejscu po sprawdzeniu czy $_POST['komm'] istnieje.
Bo ta wartość tam nie istnieje dopóki ktoś nie kliknie na submit w formularzu, który swoją drogą nie jest skończony. Gdy odpalisz swój skrypt zobacz, że kod html jest niepoprawny. Jedynie jaką wartość w tamtym miejscu możesz wysłać do funkcji edit to $row['komentarz'], ale to chyba nie to co zamierzasz napisać.
W tym miejscu:
Code: Zaznacz cały
foreach ($d as $row){
echo ' <form method="post" action="newEmptyPHP.php">
<input type="text" name="komm" value="'.$row['komentarz'].'" />
<input type="submit" value="OK"/> ';
$g = $_POST['komm'];
$a->edit($edit, $g);
}
Re: Edycja danych w bazie danych
Długo już kombinuję i nadal mi nie działa 
Coś takiego mam w tej chwili newEmptyPHP: http://wklej.org/id/592536/ po włączeniu tego pliku (http://127.0.0.1/tb/newEmptyPHP.php) wyświetla mi:
Notice: Undefined index: postkom in C:\xampp\htdocs\tb\newEmptyPHP.php on line 45
a gdy kliknę edytuj to wyświetla mi formularz ale gdy wprowadze dane i kliknę ok to wyświetla:
Notice: Undefined variable: edit in C:\xampp\htdocs\tb\newEmptyPHP.php on line 48
--------------------------------------------------------
Tutaj jest plik z klasą i jej metodami które napisałem: http://wklej.org/id/592539/

Coś takiego mam w tej chwili newEmptyPHP: http://wklej.org/id/592536/ po włączeniu tego pliku (http://127.0.0.1/tb/newEmptyPHP.php) wyświetla mi:
Notice: Undefined index: postkom in C:\xampp\htdocs\tb\newEmptyPHP.php on line 45
a gdy kliknę edytuj to wyświetla mi formularz ale gdy wprowadze dane i kliknę ok to wyświetla:
Notice: Undefined variable: edit in C:\xampp\htdocs\tb\newEmptyPHP.php on line 48
--------------------------------------------------------
Tutaj jest plik z klasą i jej metodami które napisałem: http://wklej.org/id/592539/
Re: Edycja danych w bazie danych
Code: Zaznacz cały
$x = $_POST['postkom'];
if (isset ($x) ){
$a->edit($edit, $x);
}
Re: Edycja danych w bazie danych
Zrobiłem tak:
i teraz po kliknięciu edytuj jest: Notice: Undefined variable: edit in C:\xampp\htdocs\tb\newEmptyPHP.php on line 48
Code: Zaznacz cały
if (isset ($_POST['postkom'] ) ){
$a->edit($edit, $_POST['postkom']);
}