Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Formularz nie edytuje rekordu UPDATE
Forum PHP.pl > Forum > Przedszkole
domelrally
Na początku witam wszystkich, zaczynam bawić się w php i MySql i na początek zacząłem edytować system newsów z internetu, wszystko pięknie działa lecz niestety nie mogę powiedzieć że w 100%. Problem tkwi w edycji rekordu. Normalnie wyświetlają mi się rekordy do edycji klikam edytuj i nie ma żadnej zmiany.
Wklejam jakieś kody.

  1. elseif(isset($_GET['ulotki']) && $_GET['ulotki']=='edytuj' && isset($_GET['id']))
  2. {
  3. $id=$_GET['id'];
  4. $link=mysql_query("SELECT * FROM ulotki WHERE id='$id'");
  5. $wiersz=mysql_fetch_array($link);
  6.  
  7. echo '<b>EDYTUJ POZYCJE</b><br>';
  8. echo '<form method="POST" action="admin.php?ulotki=wyedytuj.php&id='.$wiersz['id'].'">
  9. <table border="0" width="100%">
  10. <tr>
  11. <td>Rozmiar:</td>
  12. <td><input type="text" value="'.$wiersz['rozmiar'].'" size="64"></td>
  13. </tr>
  14. <tr>
  15. <td>Zadruk:</td>
  16. <td><input type="text" value="'.$wiersz['zadruk'].'" size="64"></td>
  17. </tr>
  18. <tr>
  19. <td>Gramatura:</td>
  20. <td><input type="text" value="'.$wiersz['gramatura'].'" size="64"></td>
  21. </tr>
  22. <tr>
  23. <td>Rodzaj papieru:</td>
  24. <td><input type="text" value="'.$wiersz['rodzaj'].'" size="64"></td>
  25. </tr>
  26. <tr>
  27. <td>Czas realizacji:</td>
  28. <td><input type="text" value="'.$wiersz['czas'].'" size="64"></td>
  29. </tr>
  30. <tr>
  31. <td>Cena:</td>
  32. <td><input type="text" value="'.$wiersz['cena'].'" size="64"></td>
  33. </tr>
  34. <tr>
  35. <td>Ilosć sztuk:</td>
  36. <td><input type="text" value="'.$wiersz['ilosc'].'" size="64"></td>
  37. </tr>
  38. <tr>
  39. <td> </td>
  40. <td><input type="submit" value="EDYTUJ"></td>
  41. </tr>
  42. </table>
  43. </form>';
  44. }
  45.  
  46. elseif(isset($_GET['ulotki']) && $_GET['ulotki']=='wyedytuj' && isset($_GET['id']))
  47. {
  48. $rozmiar=$_POST['rozmiar'];
  49. $zadruk=$_POST['zadruk'];
  50. $gramatura=$_POST['gramatura'];
  51. $rodzaj=$_POST['rodzaj'];
  52. $czas=$_POST['czas'];
  53. $cena=$_POST['cena'];
  54. $ilosc=$_POST['ilosc'];
  55. $id=$_GET['id'];
  56. mysql_query("UPDATE ulotki SET rozmiar='$rozmiar', ilosc='$ilosc', gramatura='$gramatura', rodzaj=$rodzaj, czas='$czas', cena='$cena', ilosc='$ilosc' WHERE id='$id'");
  57. echo 'Pomylnie wyedytowalem pozycje o tytule: <b>'.$rozmiar.'</b> i o treci: <b>'.$rodzaj.'</b>';
  58.  
  59. }


Będę wdzięczny za jakieś wskazówki
nospor
$_GET['ulotki']=='wyedytuj'
action="admin.php?ulotki=wyedytuj.php


Oprócz błędu co ci pokazałem wyżej, zapoznaj sie też z tym tematem, który zawiera cenne porady dla początkujących
Temat: Jak poprawnie zada pytanie

Przenosze na przedszkole.
domelrally
Moze mi ktos podpowiedzieć jak ma to wyglądać poprawnie? Bo próbowałem podstawić tą linijke ale nie działa bo albo w złym miejscu ją wstawiam albo nie wiem.
nospor
Nigdzie masz jej nigdzie wstawiać, ona przecież już jest, nie widzisz tego u siebie? Chodzi o to że ona jest zła, bo w action dajesz
?ulotki=wyedytuj.php
a w get sprawdzasz wyedytuj
znajdź 10 roznic w tekstach:
wyedytuj.php
wyedytuj
domelrally
No fakt kolego. Ale niestety dalej coś mam źle. To już pomogło, bo wogóle mi wyświetla komentarz ze wyedytowało tą pozycje lecz tak naprawde nie zapisało nowych danych. Gdzie może leżeć przyczyna?
nospor
W pierwszym moim poście podałem ci linka. Przeczytaj go i się łaskawie do niego zastosuj. Do wszystkiego. Nie podałem ci go dla zabawy, gdy dla pożytku i byłoby miło jakbyś raczył się nim zainteresować.
jg44
1) W zapytaniu jest literówka (brakuje apostrofów):
  1. rodzaj=$rodzaj

powinno być:
  1. rodzaj='$rodzaj'


2) Dorzuć do zapytania mysql_error():
  1. mysql_query("UPDATE ulotki SET rozmiar='$rozmiar', ilosc='$ilosc', gramatura='$gramatura', rodzaj=$rodzaj, czas='$czas', cena='$cena', ilosc='$ilosc' WHERE id='$id'")or die(mysql_error());

Jeśli zapytanie nie działa, to zwykle mysql zwraca błąd, a jeśli nie ma mysql_error(), to ten błąd nie zostanie wyświetlony.
domelrally
Z tym apostrofem to już znalazłem wcześniej dożuciłem tak jak radzisz erro i co ciekawe nie pokazało błędu a przy edycji zamiast dodać co zedytowałem to kasuje wszystkie pola na puste.
pianta_d
Zobacz co wysyłasz $_POST i $_GET

Pozdrawiam
domelrally
Nie wiem co jest źle. Rozumie że chcecie mnie naprowadzić ale sęk w tym że już zrobiłem jedną stronę opartą na tym skrypcie tylko było mniej zmiennych i chodzi a tu dodałem więcej zmiennych i nie chodzi. Więc jeżeli ktoś mógłby konkretnie poprawić mnie będę bardzo wdzięczny:)
pianta_d
Witam

Ja przed wysłaniem do pliku php z zapisem lub czytaniem wartości przesłanych przez $_POST i $_GET wysyłam do skryptu, który u mnie znajduje się w pliku tablica.php, a zawierający
  1. <?php
  2. echo 'Tablica POST<BR>';
  3. echo "<pre>";
  4. print_r($_POST);
  5. echo "</pre>";
  6.  
  7. echo 'Tablica GET<BR>';
  8. echo "<pre>";
  9. print_r($_GET);
  10. echo "</pre>";
  11.  
  12. echo 'Tablica SESSION<BR>';
  13. echo "<pre>";
  14. print_r($_SESSION);
  15. echo "</pre>";
  16. ?>


co pozwala mi sprawdzić co wysyłam. Może to Ci pomoże.
Pozdrawiam i życzę Wesołych Świąt.
domelrally
Ok ale własnie ze mi nic nie dodaje tylko wszystkie rekordy czyści tzn pola. A mam dokładnie tak samo jak w poprzdniej strone gdzie działa ok.
pianta_d
To co Ci napisałem sprawdza co wysyłasz przez formularz.
Może wysyłasz puste pola...

Sprawdź, nie będę Cie o to prosił, ale jeśli sprawdzisz, będziesz wiedział, że wysyłasz dane i masz błąd przy zapisie.
Pokaż więcej kodu...
domelrally
Dodaj
  1. <?php
  2. {
  3. echo '<b>DODAJ NOWA ULOTKE</b><br>';
  4. echo '<form method="POST" action="admin.php?ulotki=dopisz">
  5. <table border="0" width="100%">
  6. <tr>
  7. <td>Rozmiar:</td>
  8. <td><input type="text" name="rozmiar" size="64"></td>
  9. </tr>
  10. <tr>
  11. <td>Zadruk:</td>
  12. <td><input type="text" name="zadruk" size="64"></td>
  13. </tr>
  14. <tr>
  15. <td>Gramatura:</td>
  16. <td><input type="text" name="gramatura" size="64"></td>
  17. </tr>
  18. <tr>
  19. <td>Rodzaj papieru:</td>
  20. <td><input type="text" name="rodzaj" size="64"></td>
  21. </tr>
  22. <tr>
  23. <td>Czas realizacji:</td>
  24. <td><input type="text" name="czas" size="64"></td>
  25. </tr>
  26. <tr>
  27. <td>Cena:</td>
  28. <td><input type="text" name="cena" size="64"></td>
  29. </tr>
  30. <tr>
  31. <td>Ilosć sztuk:</td>
  32. <td><input type="text" name="ilosc" size="64"></td>
  33. </tr>
  34. <tr>
  35. <td> </td>
  36. <td><input type="submit" value="DODAJ"></td>
  37. </tr>
  38. </table>
  39. </form>';
  40. }
  41. ?>


Dopisz

  1. <?php
  2. {
  3. $rozmiar=$_POST['rozmiar'];
  4. $zadruk=$_POST['zadruk'];
  5. $gramatura=$_POST['gramatura'];
  6. $rodzaj=$_POST['rodzaj'];
  7. $czas=$_POST['czas'];
  8. $cena=$_POST['cena'];
  9. $ilosc=$_POST['ilosc'];
  10.  
  11. mysql_query("INSERT INTO ulotki VALUES(0,'$rozmiar','$zadruk','$gramatura','$rodzaj','$czas','$cena','$ilosc')");
  12. echo 'Pomyślnie dodałem pozycje o tytule: <b>'.$rozmiar.'</b> i o treści: <b>'.$rodzaj.'</b>';
  13.  
  14. }
  15. ?>
  16.  


Kolejne rekordy dodaje bezbłędnie
ciekawskiii
czyli co Ci teraz nie działa?
Wyświetliłeś sobie wszystkie zmienne print_r? To na prawde jest bardzo pomocne
domelrally
Czy możliwe jest że moje problemy lezą po stronie bazy danych a konkretnie jest starszej wersji? Ja wszedłem do phpmyadmin to pokazało mi że jest już nowsza wersja i w ogóle nie mogłem odczytać rekordów tabeli. może mi ktoś wytłumaczyć jak zaktualizować tą bazę?

Czy może ktoś pomóc. Wszystko sprawdziłem co mogłem i nic.

Taka informacje mi wyskoczyła
Notice: Undefined index: rozmiar in /home/epixelst/public_html/e-pixelstudio.pl/admin.php on line 140

Notice: Undefined index: zadruk in /home/epixelst/public_html/e-pixelstudio.pl/admin.php on line 141

Notice: Undefined index: gramatura in /home/epixelst/public_html/e-pixelstudio.pl/admin.php on line 142

Notice: Undefined index: rodzaj in /home/epixelst/public_html/e-pixelstudio.pl/admin.php on line 143

Notice: Undefined index: czas in /home/epixelst/public_html/e-pixelstudio.pl/admin.php on line 144

Notice: Undefined index: cena in /home/epixelst/public_html/e-pixelstudio.pl/admin.php on line 145

Notice: Undefined index: ilosc in /home/epixelst/public_html/e-pixelstudio.pl/admin.php on line 146

Te linijki to:

$rozmiar=$_POST['rozmiar'];
$zadruk=$_POST['zadruk'];
$gramatura=$_POST['gramatura'];
$rodzaj=$_POST['rodzaj'];
$czas=$_POST['czas'];
$cena=$_POST['cena'];
$ilosc=$_POST['ilosc'];
$id=$_GET['id'];
nospor
Komunikaty błędów wyraźnie mówią, że nie istnieją takie a takie indeksy w tablicy $_POST.
Jakbyś zrobil print_r($_POST); jak ci radziłem i jak ci radził petryliard razy pianta_d to byś zobaczył że nie ma tam twoich pól.

Moja ostatnia rada w tym temacie, bo tyle razy mi na PW kłamałeś w oczy i w ostatnim PW też, że..... po prostu nie lubię, jak ktoś mi bezczelnie kłamie.

<input type="text" value="'.$wiersz['rozmiar'].'" size="64">
Brakuje name="rozmiar"
W pozostałych polach analogicznie.

Następnym razem jak zobaczę jakiś Twój temat nie dostosowany wiesz do jakiego tematu - zamknę go.
domelrally
Dzięki w wolnej chwili wprowadzę zmiany. Z tym kłamstwem nie do do konca jest tak jak piszesz, ok nie zastosowałem się do wszystkiego co pisało w tamtym temacie ale akurat print_r stosowałem lecz nieumiejętnie. Jeszcze raz dzięki mam nadzieje że zadziała. Nie chce kłótni na forum bo mam ochotę bardziej się zaangażować w php i będzie nie raz będę potrzebował pomocy.
nospor
Cytat
ale akurat print_r stosowałem lecz nieumiejętnie.
Przecież pianta_d podał ci kod:
Cytat
<?php
echo 'Tablica POST<BR>';
echo "<pre>";
print_r($_POST);
echo "</pre>";

echo 'Tablica GET<BR>';
echo "<pre>";
print_r($_GET);
echo "</pre>";

echo 'Tablica SESSION<BR>';
echo "<pre>";
print_r($_SESSION);
echo "</pre>";

Jak można to nieumiejętnie skopiować?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.