Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
Witam
Znów mam problem z PHP-em ...
Mianowicie:
mam pliczek który jest formularzem danych osobowych wygląda mniej wiecej tak (na dole opisałem problem):
<?php
polaczenie do bazy itp.
{
if (!($dane=="zapisane"))
{
echo '
<form action="tabela.php?akcja=formularz" method=POST>
<br>
Dane osobowo/adresowe: <br>
<br>
Imie: <input type=text name=imie size=50> <br>
Nazwisko: <input type=text name=nazwisko><br>
Adres: <input type=text name=adres><br>
Gadu-Gadu: <input type=text name=gadu><br>
E-mail:<input type=text name=mail><br>
<br>
<br>
Dane dotyczące sieci:<br>
<br>
Adres IP:<input type=text name=ip_pc><br>
Adres mac:<input type=text name=mac><br>
Nazwa hosta:<input type=text name=hostname><br>
Blokada:<input type=text name=blokada><br>
Minimalne pasmo dla www (kB/s):<input type=text name=min_www><br>
Minimalne pasmo dla p2p (kB/s):<input type=text name=min_p2p><br>
Maxymalne pasmo dla www (kB/s):<input type=text name=max_www><br>
Maxymalne pasmo dla p2p (kB/s):<input type=text name=max_p2p><br>
<input type=hidden name=dane value=zapisane>
<input type=submit value=Zapisz>
</form>
';
}
...............
no i jest tam w nim wywoływane polecenie SQL-owe, które po wciśnięciu przycisku "Zapisz" dodaje rekord do bazy. To samo zrobiłem dla usunięcia. Ale nie mam w ogóle pomysłu jak przygotować "akcje" modyfikacji rekordu.
WIadomo gdybym się machnął w którymś polu (lub polach) i chciałbym poprawić to na ten czas musze usuwać rekord i dodawać go ponownie a jak wiadomo jest to bez sensu.
Proszę o pomoc, tylko jakbym mógł to o dość szczegółową bo dopiero zaczynam
pozdrawiam
Offline
Nic prostszego. Robisz sobie np przywyswietlaniu przycisk edytuj w ktorym jest wartosc ide rekordu w bazie. Mozesz go wyslac getem np.
tabela?mode=edit&id=id_rekordu
oczywiscie nie zapomnij o zabezpieczeniach typu intval itp. ale o tym chyba nie musze mowic.
Po id rekordu wyciagasz dane z bazy selectem. Przesylasz je do formularza dodajac poprostu do value w formularzu.
No i przesylasz dane do nastepnej akcji i tam juz masz polecenie update.
Offline
jak juz kolega napisal, przy kazdej pozycji wytstarczy przycisk lub zwyklly link do edit.php?id=id_rekordu_w_aktualnym_wierszu
teraz plik edit.php
<?
polaczenie z baza
select z id ktore przesylasz getem za pomoca powyzszego linka/przycisku
sprawdzenie czy jest ustawiona jakas zmienna $_POST['blablabla'] jesli nie jest to wyswietlasz formularz:
wyswietlanie identycznego formularza jak przy dodaj, z tym ze kazde pole ma atrybut value do ktorego wpisujesz dana wyciagnieta z bazy selectem, dodajesz pole hidden o nazwie blablabla zeby wyczaic czy aktualnie dostales dane do zapisu czy dopiero wyswietlasz formularz
jesli $_POST['blablabla'] jest ustawiona to wykonujesz "update uzytkownicy set imie = $costam, nazwisko = $costam2 ..."
?>
$costam, $costam2 itd... to juz zmienne $_POST['imie'], $_POST['nazwisko'] itd... po sprawdzeniu czy np nie sa puste (o ile jest taki warunek), czy odpowiednie pola zawierajace liczby faktycznie nimi sa itp itd
Offline
Wartości właściwości htmlowych zamykaj w cudzysłowiach, bo inaczej może być nie cacy.
Offline
dzieki za szybką pomoc.. spróbuje
pozdrawiam
Offline
a jednak poległem ..;(
Na sam początek chciałem zmusić formularz do wyświetlenia chociaż jednej zmiennej (imienia), bez podejmowania akcji update, ale w polu z imieniem wstawiła mi się nazwa zmiennej a nie jej wartość.
oto kod mojego pliku edycja.php
?php
POŁACZENIE DO BAZY
if (!($dane=="zapisane"))
{
$zapytanie_1=mysql_query("SELECT * FROM data_personal where id='$id' ");
while($rekord_1=mysql_fetch_array($zapytanie_1))
{
echo '
<form action="tabela.php?akcja=formularz" method=POST>
<br>
Dane osobowo/adresowe: <br>
<br>
Imie: <input type=text name=imie value=$rekord_1[imie]> <br>
<input type=hidden name=dane text=zapisane>
<input type=submit value=Zapisz>
</form>
';
}
}
?>
proszę o pomoc
Offline
juz znalazlem antidutum chcialem pomieszac html z php w nie umiejetny sposob... dodalem wszedzie : print i cudysłow zamiast : echo ' ...' i działa
jeszcze raz wielkie dzięki za pomoc ;)
pozdrawiam
Offline
"Echo" mogło zostać. Po prostu tekst objąłeś apostrofami, a wtedy zmienne nie są interpretowane. W takich sytuacjach używa się cydzysłowów.
Offline
aha dzieki za rade
pzdr
Offline
Jeszcze w ramach kosmetyki radze wychodzić z tagów PHP jeżeli masz duży kawałek HTML`a (nie ma wtedy problemów z cudzysłowami etc.)
Jest też składania zmiennych HEREDOC
$zmienna =<<<COS #cokolwiek, z różnymi cudzysłowami etc COS;
po szczegóły tej składni odsyłam do manuala (PL): http://pl2.php.net/manual/pl/language.types.string.php#language.types.string.syntax.heredoc
Offline
A ja proponuje
print (" <form action="tabela.php?akcja=formularz" method=POST> <br> Dane osobowo/adresowe: <br> <br> Imie: <input type=text name=imie value="".$rekord_1[imie].""> <br> <input type=hidden name=dane text=zapisane> <input type=submit value=Zapisz> </form> ");
Offline
i temat jeszcze powrócił (mówiłem że zaczynam) ...
a więc po wielu próbach przybywam w drugi dzień świąt by zgłosić mój błąd a raczej problem ...
Doszedłem już do tego że wchodząc w edycje wypełnia i odpowiednie pola, lecz mam problem tego typu że nie aktualizuje pól, a może inaczej aktualizuje ale robi je puste. Zapytanie SQL-owe jest raczej prawidłowe, ponieważ jak wpisze wartość na sztywno w pliku edycja.php to wstawia mi tą wartość w formularz. Przesyłam kod, i proszę o cierpliwość i ewentualną pomoc .. pozdrawiam
<?php
polaczenie do bazy
if (!($dane=="zmienione"))
{
$zapytanie_1=mysql_query("SELECT * FROM data_personal where id='$id'");
while($rekord_1=mysql_fetch_array($zapytanie_1))
{
echo "
<form action='tabela.php?akcja=edycja' method=POST>
Dane osobowo/adresowe: <br>
NIP: <input type=text name=nip size=50 value=$rekord_1[nip]> <br>
Imie: <input type=text name=imie value=$rekord_1[imie]> <br>
Nazwisko: <input type=text name=nazwisko value=$rekord_1[nazwisko]> <br>
Ulica: <input type=text name=ulica value=$rekord_1[ulica]> <br>
Miejscowość: <input type=text name=miejscowosc value=$rekord_1[miejscowosc]> <br>
Gadu-Gadu: <input type=text name=gadu value=$rekord_1[gg]> <br>
E-mail:<input type=text name=mail value=$rekord_1[email]> <br>
<input type=hidden name=dane text=zmienione>
<input type=submit value=Zmień>
</form>
";
mysql_query("UPDATE `data_personal` SET `nip` = 'text_na_sztywno_i_jego_widac',`imie` = '$imie',`nazwisko` = '$nazwisko',`ulica` = '$ulica',`miejscowosc` = '$miejscowosc',`gg` = '$g
g',`email` = '$mail' WHERE `data_personal`.`id` = '$id'");
echo mysql_error();
}
}
?>
Offline
Nie sprawdzałem czy w praktyce działa, ale na 'oko' chyba będzie ok.
[ btw. na przyszłość używaj znacznika 'code' do kodu źródłowego ]
<?php # polaczenie do bazy if (!($dane=="zmienione")){ $zapytanie_1=mysql_query("SELECT * FROM data_personal where id='$id'"); while($rekord_1=mysql_fetch_array($zapytanie_1)){ echo " <form action='tabela.php?akcja=edycja' method=POST> Dane osobowo/adresowe: <br> NIP: <input type=text name=nip size=50 value=$rekord_1[nip]> <br> Imie: <input type=text name=imie value=$rekord_1[imie]> <br> Nazwisko: <input type=text name=nazwisko value=$rekord_1[nazwisko]> <br> Ulica: <input type=text name=ulica value=$rekord_1[ulica]> <br> Miejscowość: <input type=text name=miejscowosc value=$rekord_1[miejscowosc]> <br> Gadu-Gadu: <input type=text name=gadu value=$rekord_1[gg]> <br> E-mail:<input type=text name=mail value=$rekord_1[email]> <br> <input type=hidden name=id value=$id> <input type=hidden name=dane value=zmienione> <input type=submit value=Zmień> </form> "; } }else{ mysql_query("UPDATE `data_personal` SET `nip` = 'text_na_sztywno_i_jego_widac',`imie` = '$imie',`nazwisko` = '$nazwisko',`ulica` = '$ulica',`miejscowosc` = '$miejscowosc',`gg` = '$g g',`email` = '$mail' WHERE `data_personal`.`id` = '$id'"); echo mysql_error(); } ?>
Offline
Ja bym jeszcze zmienił to (bo dziwnie wygląda ;) no i mamy przecież != do dyspozycji):
if (!($dane=="zmienione"))
na to:
if( $dane!="zmienione" )
Offline
Strony: 1
Time (s) | Query |
---|---|
0.00010 | SET CHARSET latin2 |
0.00004 | SET NAMES latin2 |
0.00066 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.15.228.171' WHERE u.id=1 |
0.00131 | UPDATE punbb_online SET logged=1732266940 WHERE ident='3.15.228.171' |
0.00025 | SELECT * FROM punbb_online WHERE logged<1732266640 |
0.00072 | SELECT topic_id FROM punbb_posts WHERE id=47751 |
0.00012 | SELECT id FROM punbb_posts WHERE topic_id=6242 ORDER BY posted |
0.00051 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=6242 AND t.moved_to IS NULL |
0.00018 | SELECT search_for, replace_with FROM punbb_censoring |
0.00200 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=6242 ORDER BY p.id LIMIT 0,25 |
0.00071 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=6242 |
Total query time: 0.0066 s |