domelrally
19.12.2011, 23:19:29
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.
elseif(isset($_GET['ulotki']) && $_GET['ulotki']=='edytuj' && isset($_GET['id'])) {
$id=$_GET['id'];
$link=mysql_query("SELECT * FROM ulotki WHERE id='$id'");
echo '<b>EDYTUJ POZYCJE</b><br>'; echo '<form method="POST" action="admin.php?ulotki=wyedytuj.php&id='.$wiersz['id'].'"> <table border="0" width="100%">
<tr>
<td>Rozmiar:</td>
<td><input type="text" value="'.$wiersz['rozmiar'].'" size="64"></td>
</tr>
<tr>
<td>Zadruk:</td>
<td><input type="text" value="'.$wiersz['zadruk'].'" size="64"></td>
</tr>
<tr>
<td>Gramatura:</td>
<td><input type="text" value="'.$wiersz['gramatura'].'" size="64"></td>
</tr>
<tr>
<td>Rodzaj papieru:</td>
<td><input type="text" value="'.$wiersz['rodzaj'].'" size="64"></td>
</tr>
<tr>
<td>Czas realizacji:</td>
<td><input type="text" value="'.$wiersz['czas'].'" size="64"></td>
</tr>
<tr>
<td>Cena:</td>
<td><input type="text" value="'.$wiersz['cena'].'" size="64"></td>
</tr>
<tr>
<td>Ilosć sztuk:</td>
<td><input type="text" value="'.$wiersz['ilosc'].'" size="64"></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" value="EDYTUJ"></td>
</tr>
</table>
</form>';
}
elseif(isset($_GET['ulotki']) && $_GET['ulotki']=='wyedytuj' && isset($_GET['id'])) {
$rozmiar=$_POST['rozmiar'];
$zadruk=$_POST['zadruk'];
$gramatura=$_POST['gramatura'];
$rodzaj=$_POST['rodzaj'];
$czas=$_POST['czas'];
$cena=$_POST['cena'];
$ilosc=$_POST['ilosc'];
$id=$_GET['id'];
mysql_query("UPDATE ulotki SET rozmiar='$rozmiar', ilosc='$ilosc', gramatura='$gramatura', rodzaj=$rodzaj, czas='$czas', cena='$cena', ilosc='$ilosc' WHERE id='$id'"); echo 'Pomylnie wyedytowalem pozycje o tytule: <b>'.$rozmiar.'</b> i o treci: <b>'.$rodzaj.'</b>';
}
Będę wdzięczny za jakieś wskazówki
nospor
20.12.2011, 12:08:07
$_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 pytaniePrzenosze na przedszkole.
domelrally
21.12.2011, 07:53:17
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
21.12.2011, 07:59:16
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
22.12.2011, 11:22:13
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
22.12.2011, 11:33:55
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
22.12.2011, 19:48:57
1) W zapytaniu jest literówka (brakuje apostrofów):
rodzaj=$rodzaj
powinno być:
rodzaj='$rodzaj'
2) Dorzuć do zapytania mysql_error():
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
23.12.2011, 14:34:27
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
23.12.2011, 14:58:23
Zobacz co wysyłasz $_POST i $_GET
Pozdrawiam
domelrally
24.12.2011, 13:40:27
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
24.12.2011, 14:05:31
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
<?php
echo 'Tablica SESSION<BR>'; ?>
co pozwala mi sprawdzić co wysyłam. Może to Ci pomoże.
Pozdrawiam i życzę Wesołych Świąt.
domelrally
24.12.2011, 14:29:21
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
24.12.2011, 14:34:33
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
24.12.2011, 15:09:06
Dodaj
<?php
{
echo '<b>DODAJ NOWA ULOTKE</b><br>'; echo '<form method="POST" action="admin.php?ulotki=dopisz"> <table border="0" width="100%">
<tr>
<td>Rozmiar:</td>
<td><input type="text" name="rozmiar" size="64"></td>
</tr>
<tr>
<td>Zadruk:</td>
<td><input type="text" name="zadruk" size="64"></td>
</tr>
<tr>
<td>Gramatura:</td>
<td><input type="text" name="gramatura" size="64"></td>
</tr>
<tr>
<td>Rodzaj papieru:</td>
<td><input type="text" name="rodzaj" size="64"></td>
</tr>
<tr>
<td>Czas realizacji:</td>
<td><input type="text" name="czas" size="64"></td>
</tr>
<tr>
<td>Cena:</td>
<td><input type="text" name="cena" size="64"></td>
</tr>
<tr>
<td>Ilosć sztuk:</td>
<td><input type="text" name="ilosc" size="64"></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" value="DODAJ"></td>
</tr>
</table>
</form>';
}
?>
Dopisz
<?php
{
$rozmiar=$_POST['rozmiar'];
$zadruk=$_POST['zadruk'];
$gramatura=$_POST['gramatura'];
$rodzaj=$_POST['rodzaj'];
$czas=$_POST['czas'];
$cena=$_POST['cena'];
$ilosc=$_POST['ilosc'];
mysql_query("INSERT INTO ulotki VALUES(0,'$rozmiar','$zadruk','$gramatura','$rodzaj','$czas','$cena','$ilosc')"); echo 'Pomyślnie dodałem pozycje o tytule: <b>'.$rozmiar.'</b> i o treści: <b>'.$rodzaj.'</b>';
}
?>
Kolejne rekordy dodaje bezbłędnie
ciekawskiii
24.12.2011, 15:14:24
czyli co Ci teraz nie działa?
Wyświetliłeś sobie wszystkie zmienne print_r? To na prawde jest bardzo pomocne
domelrally
2.01.2012, 14:25:47
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
2.01.2012, 14:48:02
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
2.01.2012, 15:14:59
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
2.01.2012, 15:36:51
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.