lehnar
(Lehnar)
20 Sierpień 2014 11:09
#1
Mamy kod:
if($_GET['edytuj']>'0'){
$ide=$_GET['edytuj'];
$wynik = mysql_query("SELECT * FROM `wpisy` WHERE
`id_wpis`='$ide'")
or die('Błąd zapytania');
if(mysql_num_rows($wynik) > 0) {
$r = mysql_fetch_assoc($wynik);
echo'<center><form method="post">
Data imprezy(Rok-miesiąc-dzień):<br />
<input type="text" value="'.$r['data'].'" name="data" /><br />
Godzina rozpoczęcia imprezy(Godzina:minuta):<br />
<input type="text" value="'.$r['godzina'].'" name="godzina" /><br />
Nazwa imprezy:<br />
<input type="text" value="'.$r['tytul'].'" name="tytul" /><br />
Miejsce i opis(max 250 znaków):<br />
<input type="textarea" value="'.$r['tekst'].'" maxlength="250" name="opis" /><br />
<input type="submit" value="Zmień" name="edit" />
</form></center>';
}
$data2 = $_POST['data'];
$godzina2 = $_POST['godzina'];
$tytul2 = $_POST['tytul'];
$opis2 = $_POST['opis'];
$login2=$_SESSION["user"];
if($_POST['submit'] == 'edit') {
mysql_query("UPDATE `wpisy` SET `data`='$data2', `user_wpis`='$login2', `godzina`='$godzina2', `tytul`='$tytul2', `tekst`='$opis2' WHERE `id_wpis`='$ide'");
echo 'Dane zostały zaktualizowane';
}
}
I wszystko jest niby ok dane ładuje do formularza można je sobie pozmieniać, klikam na “Zmień” i okazuje się że rekord pozostał w niezmienionej formie. próbowałem już chyba wszystkiego i wymiękam może ktoś z was widzi w czym tkwi tu błąd. Z góry dzięki za pomoc.
grzelix
(Grzelix)
20 Sierpień 2014 12:18
#4
Jeśli nie wyświetla Ci się komunikat o poprawym zapisaniu danych to zapytanie ci generuje nie poprawnie i nie działa
Spróbuj poniższy kod:
if($_GET['edytuj']>'0'){
$ide=$_GET['edytuj'];
$wynik = mysql_query("SELECT * FROM `wpisy` WHERE `id_wpis`='$ide'")
or die('Błąd zapytania');
if(mysql_num_rows($wynik) > 0) {
$r = mysql_fetch_assoc($wynik);
echo'<center><form method="post">
Data imprezy(Rok-miesiąc-dzień):<br />
<input type="hidden" value="'.$ide.'" name="id" />
<input type="text" value="'.$r['data'].'" name="data" /><br />
Godzina rozpoczęcia imprezy(Godzina:minuta):<br />
<input type="text" value="'.$r['godzina'].'" name="godzina" /><br />
Nazwa imprezy:<br />
<input type="text" value="'.$r['tytul'].'" name="tytul" /><br />
Miejsce i opis(max 250 znaków):<br />
<input type="textarea" value="'.$r['tekst'].'" maxlength="250" name="opis" /><br />
<input type="submit" value="Zmień" name="edit" />
</form></center>';
}
if($_POST['submit'] == 'edit') {
echo 'Czytam dane';
$rekord_id = $_POST['id'];
$data2 = $_POST['data'];
$godzina2 = $_POST['godzina'];
$tytul2 = $_POST['tytul'];
$opis2 = $_POST['opis'];
$login2=$_SESSION["user"];
echo 'Przeczytałem dane';
echo 'Przygotowuje zapytanie do bazy';
$query = "UPDATE `wpisy` SET `data`='$data2', `user_wpis`='$login2', `godzina`='$godzina2', `tytul`='$tytul2', `tekst`='$opis2' WHERE `id_wpis`='$rekord_id'";
echo "Przygotowane zapytanie: ".$query;
mysql_query($query);
echo 'Dane zostały zaktualizowane';
}
}
Pisane z palca więc może zawierać błędy.
Porównaj sobie ze swoim i wyciągnij wnioski.
lehnar
(Lehnar)
20 Sierpień 2014 12:48
#5
To samo dalej nie nadpisuje…
grzelix
(Grzelix)
20 Sierpień 2014 12:57
#6
Przeanalizowałeś zmiany które zrobiłem?
Zrozumiałęś te zmiany? Wszystko jest jasne?
Wszystkie napisy pojawiły się na stronie?
Przygotowane zapytanie SQL (wypisane na stronie) jest poprawne (działa w panelu mysql)?
Odpisując w stylu: “dalej nie działa” niczego nie osiągniemy.
EDIT.
Sprawdź czy nadpisuje w tabeli. Bo być może nadpisuje ale wcześniejsze zapytanie pobiera dane jeszcze sprzed update i nie widzisz zmian.
Konto z którego się łączysz z bazą ma uprawnienia edycji?
lehnar
(Lehnar)
20 Sierpień 2014 13:25
#8
1 i 2. tak rozumiem
i tu właśnie jest ból że się nie pojawiają.
4 Tak jest poprawne i działa
Sprawdziłem w tabeli bez zmian
Tak konto ma uprawnienia do edycji
Moja wersja:
if($_GET['edytuj']>'0'){
$ide=$_GET['edytuj'];
$wynik = mysql_query("SELECT * FROM `wpisy` WHERE
`id_wpis`='$ide'")
or die('Błąd zapytania');
if(mysql_num_rows($wynik) > 0) {
$r = mysql_fetch_assoc($wynik);
echo'<center><form method="post">
Data imprezy:<br />
<input type="data" value="'.$r['data'].'" name="data" /><br />
Godzina rozpoczęcia imprezy:<br />
<input type="time" value="'.$r['godzina'].'" name="godzina" /><br />
Nazwa imprezy:<br />
<input type="text" value="'.$r['tytul'].'" name="tytul" /><br />
Miejsce i opis(max 250 znaków):<br />
<input type="textarea" value="'.$r['tekst'].'" maxlength="250" name="opis" /><br />
<input type="submit" value="Zmień" name="edit" />
</form></center>';
if (!empty($_POST['edit'])) edit();
}
}
funkcja: (na początku pliku, kod w php)
<?php
function edit()
{
$data2 = $_POST['data'];
$godzina2 = $_POST['godzina'];
$tytul2 = $_POST['tytul'];
$opis2 = $_POST['opis'];
$login2=$_SESSION["user"];
mysql_query("UPDATE `wpisy` SET `data`='$data2', `user_wpis`='$login2', `godzina`='$godzina2', `tytul`='$tytul2', `tekst`='$opis2' WHERE `id_wpis`='$ide'");
echo 'Dane zostały zaktualizowane';
}
?>
Kodu nie testowałem.
grzelix
(Grzelix)
20 Sierpień 2014 18:27
#10
Miałem chwilę i przetestowałem twój kod.
Problem jest tu:
if($_POST['submit'] == 'edit')
a dokładnie tu:
$_POST['submit']
nie ma pola submit w tablicy post. Masz button typu submit o nazwie edytuj i wartości Zmień. Więc jak kolega wyżej już odpowiedział z fragmentem:
if (!empty($_POST['edit']))
twój kod będzie działał, ale możesz tego nie zauważyć bo jak już wcześniej wspominałem najpierw czytasz dane potem zmieniasz., Więc musisz odwrócić kolejność.
lehnar
(Lehnar)
20 Sierpień 2014 20:23
#11
Działa, zmieniłem kolejności i tego “if’a” :)
Dziękuje za pomoc.