konto usunięte

Temat: [php mysql] formularz edycji rekordu

Witam wszystkich.

Moje pytanie brzmi: czy zna ktoś z was skrypt formularza edycji rekordów w bazie mysql. Znam polecenie do aktualizowania wpisów.
Chciałbym jednak żeby działało to w następujący sposób: w tabeli mam wyświetlone rekordy określone przez selecta. Klikam w link (tekstowy bądź obrazkowy) i przenosi mnie do strony na której jest wyświetlony dany rekord ale w formie edytowalnej.

Pozdrawiam.
Janusz Skudrzyk

Janusz Skudrzyk Członek zarządu,
weblabs.pl

Temat: [php mysql] formularz edycji rekordu

Coś takiego jak phpMyAdmin ?

konto usunięte

Temat: [php mysql] formularz edycji rekordu

no mniej więcej tak.
Jerzy M.

Jerzy M. C#/JavaScript
Developer

Temat: [php mysql] formularz edycji rekordu

Łatwiej by było jakbyś udzielił więcej informacji. Póki co wygląda jakbyś nie potrafił napisać prostego skryptu, bardzo prostego, a to raczej kiepsko jak na webmastera ;-)

konto usunięte

Temat: [php mysql] formularz edycji rekordu

forum jest chyba po to by pomagać a nie podśmiewywać się z ludzi, którzy może wcześniej nie mieli potrzeby pisania ręcznie skryptów. z php i mysql mam nikłe doświadczenie i dlatego tu zwróciłem się po pomoc. Skoro, Jurku, twierdzisz, że to takie proste to ok. Wezmę sobie książkę i przeczytam sobie kilkaset stron i przejrzę kilkadziesiąt stron www o tej tematyce. i może znajdę rozwiązanie problemu.

dzisiaj mam bardzo kur...ski humor, więc bez kija do mnie nie podchodzić a jeśli to co napisałem wyżej zabrzmiało chamsko lub grubiańsko to wybaczcie.

konto usunięte

Temat: [php mysql] formularz edycji rekordu

Jerzy Mieczyński:
Łatwiej by było jakbyś udzielił więcej informacji. Póki co wygląda jakbyś nie potrafił napisać prostego skryptu, bardzo prostego, a to raczej kiepsko jak na webmastera ;-)
E tam ;-) to się nauczy.

Marcin: YUI ci może pomóc, masz tutaj gotowy przykład z tym, że musiałbyś jeszcze opanować JSON'a i asynchroniczne źródło danych ( uwaga na białe znaki w nagłówku ;-) )

http://developer.yahoo.com/yui/examples/datatable/dt_c...

Edit: Jak chcesz się czymś takim bawić to bez wtyczki: fireBug dla FireFox'a nie zaczynaj ;]

Edit2: http://www.themeheven.com/2009/03/15-ajax-edit-in-the-... w sumie to ty mniej potrzebujesz ;-)Rafał Wardas edytował(a) ten post dnia 17.01.10 o godzinie 00:07
Łukasz C.

Łukasz C. Senior Technical
Architect

Temat: [php mysql] formularz edycji rekordu

najprostszy formularz sklada sie z:

kodu html:

<form action="skrypt.php" method="POST">
<input type="text" name="kolumna_a" />
<input type="text" name="kolumna_b" />
<button type="submit">wyslij</button>
</form>

gdzie kolumna_a i kolumna_b to nazwy kolumn jakiejs tabeli, po kliknieciu wyslij dane zostana wyslane do skrypt.php i w nim mozesz je odczytac z tabeli $_POST, np: $kolumna_a = $_POST['kolumna_a']; pozniej wystarczy juz wyslac zapytanie do bazy i gotowe :p

profesjonalnie to wyglada tak:
1. kontroler wyswietla widok w ktorym generowany jest odpowiedni formularz
2. dane z formularza zostaja wyslane
3. dane sa validowane (sprawdzanie czy podane wartosci sa poprawne)
4. dane sa filtrowane (obrobka wyslanych wartosci)
5. dane sa wrzucane do modelu (interfejs pomiedzy baza a aplikacja)
6. model zapisuje dane w bazie

jak chcesz zrobic formularz w ktorym mozesz edytowac dane dowolnej tabeli to bedziesz go musial generowac w locie - wystarczy pobrac dane jako tablice asocjacyjne i wygenerowac odpowiednie pola w petli :)
Jerzy M.

Jerzy M. C#/JavaScript
Developer

Temat: [php mysql] formularz edycji rekordu

Oh, faktycznie kiepski humor, ale czasami przeczytaj coś kilka razy zanim coś napiszesz - nie było moim celem obrażenie Ciebie, tylko wyciągnięcie czegoś więcej niż 'tak jakby'. Bo naprawdę zabrzmiało to tak jakbyś nie potrafił stworzyć pola tekstowego, a ja jasnowidzem nie jestem.

Rafał: nie twierdzę że się nie nauczy, ale jak chcę komuś pomóc to wolę wyciągnąć czasem trochę więcej, zamiast pisać te parę linijek z błędnym zrozumieniem problemu - a podobieństwo do phpmyadmin mnie zbiło z tropu zresztą ;-)Jerzy Mieczyński edytował(a) ten post dnia 17.01.10 o godzinie 02:47
Łukasz Schabek

Łukasz Schabek Architekt Rozwiązań

Temat: [php mysql] formularz edycji rekordu

Marcinie,
Jurek miał trochę racji, podałeś za mało informacji aby 'zdiagnozować' Twój problem.
Formularze webowe to nie tylko kwestia obsługi bazy danych, ale również zrozumienia działania protokołu HTTP a w szczególności jego metod GET i POST w oparciu o które zbudujesz swój formularz.

Zobacz ten topic: http://www.goldenline.pl/forum/bazy-danych/1335110

spróbuj sam napisać jakiś kod, a jak będziesz miał problemy z działaniem, szukaj w google; większość problemów została już opisana.
Jeśli jednak dr. G nie pomoże, lub będziesz miał problem z koncepcją aplikacji, wróć i zapytaj, na pewno ktoś pomoże :)Łukasz Schabek edytował(a) ten post dnia 17.01.10 o godzinie 09:44

konto usunięte

Temat: [php mysql] formularz edycji rekordu

$result = mysql_query("SELECT * FROM `customers` WHERE `Nazwisko`='Paradowski'");


while($line = mysql_fetch_array($result)) {



echo "<table width=\"600\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
<tr>
<td>NR</td>
<td><input name=\"textfield\" type=\"text\" value=".$line['NR']." /></td>
</tr>
<tr>
<td>Nazwisko</td>
<td><input name=\"textfield2\" type=\"text\" value=".$line['Nazwisko']." /></td>
</tr>
<tr>
<td>Imię</td>
<td><input name=\"textfield3\" type=\"text\" value=".$line['Imie']." /></td>
</tr>
<tr>
<td>Firma</td>
<td><input name=\"textfield4\" type=\"text\" value=".$line['Firma']." /></td>
</tr>
<tr>
<td>Kod pocztowy </td>
<td><input type=\"text\" name=\"textfield5\" /></td>
</tr>
<tr>
<td>Miasto</td>
<td><input name=\"textfield6\" type=\"text\" value=".$line['Miasto']." /></td>
</tr>
<tr>
<td>Adres</td>
<td><input name=\"textfield7\" type=\"text\" value=".$line['Adres']." /></td>
</tr>
<tr>
<td>Państwo</td>
<td><input type=\"text\" name=\"textfield8\" /></td>
</tr>
<tr>
<td>Telefon</td>
<td><input name=\"textfield9\" type=\"text\" value=".$line['Telefon']." /></td>
</tr>
<tr>
<td>IDklienta</td>
<td><input name=\"textfield10\" type=\"text\" value=".$line['IDklienta']." /></td>
</tr>
</table>";



otrzymuję

Parse error: syntax error, unexpected $end in /baza3/test.php on line 74
Janusz Skudrzyk

Janusz Skudrzyk Członek zarządu,
weblabs.pl

Temat: [php mysql] formularz edycji rekordu

Upewnij się, że liczba nawiasów otwierających { jest równa liczbie nawiasów zamykających }.

Zamiast mysql_fetch_array wstaw mysql_fetch_assoc (pobierze dane jako tablicę,w której pola indeksowane są nazwami kolumn).

Nazwy pól tekstowych zrób takie same jak nazwy kolumn w tabeli. Po wysłaniu formularza będzie łatwiej określić gdzie mają trafić dane przy aktualizacji/wstawianiu.
Przykładowo (na początek coś takiego powinno wystarczyć):

/** zabezpiecz dane przed nieodpowiednimi znakami */
function safe_string( $string ) {
if (!get_magic_quotes_gpc())
$string = mysql_escape_string( $string ) ;
return $string ;
}

/** polacz dane tak, aby zawieraly instrukcje insert lub update */
function polacz_dane( $tablica, $operacja = "insert" ) {
if( $operacja == "insert" ) {
$klucze = $wartosci = array() ;
foreach( $tablica as $key => $value ) {
$klucze[] = safe_string($key) ;
$wartosci[] = safe_string($value) ;
}
$wynik = "( ".implode( ", ", $klucze )." ) VALUES ( '".implode( "','", $wartosci )."' )" ;
}
else {
$wynik = array() ;
foreach( $tablica as $key => $value )
$wynik[] = safe_string($key)." = '".safe_string( $value )."'" ;
$wynik = implode( ", ", $wynik ) ;
}
return $wynik ;
}

// jesli dodawanie
$query = "insert into tabela ".polacz_dane( $_POST ) ;
// jesli aktualizacja
$query = "update tabela set ".polacz_dane( $_POST, 'update' )." where klucz = 'xxx'" ;


Jeśli to jest tylko jeden pasujący rekord, to wystarczy $line = mysql_fetch_assoc( $result ) ; (bez pętli)Janusz Skudrzyk edytował(a) ten post dnia 17.01.10 o godzinie 16:14

konto usunięte

Temat: [php mysql] formularz edycji rekordu

dzięki chłopaki. o to chodziło.działa.

konto usunięte

Temat: [php mysql] formularz edycji rekordu

został mi ostatni mały problem.

$result = mysql_query("SELECT * FROM `customers` WHERE `NR`='.$row['NR'].'");

Wiem, że tu jest błąd ale moje szare komórki odmawiają mi posłuszeństwa. Proszę.
Tomasz Przybysz

Tomasz Przybysz starszy programista
baz danych, Softline
Sp. z o.o.

Temat: [php mysql] formularz edycji rekordu

$result = mysql_query("select * from customers where nr='".$row['NR']."'");
ewentualnie: "select * from customers where nr='{$row['NR']}'"Tomasz Przybysz edytował(a) ten post dnia 17.01.10 o godzinie 23:11

konto usunięte

Temat: [php mysql] formularz edycji rekordu

no niestety, oba jakoś nie chcą działać. możliwe, że ja coś źle robię ale to ze zmęczenia materiału.
Tomasz Przybysz

Tomasz Przybysz starszy programista
baz danych, Softline
Sp. z o.o.

Temat: [php mysql] formularz edycji rekordu

jaki dostajesz blad ??

konto usunięte

Temat: [php mysql] formularz edycji rekordu

jutro to opiszę bo idę spać. za 5 godzin idę do pracy.
Jerzy M.

Jerzy M. C#/JavaScript
Developer

Temat: [php mysql] formularz edycji rekordu

SELECT * FROM customers WHERE NR = '$row['NR']'

mniej więcej takie coś powinno zostać wygenerowane, przy czym oczywiście $row['NR'] to ma być wartość z formularza, np:

SELECT * FROM customers WHERE NR = '1'

jak to znajomy określił: stringi itp ujmujemy w ciapki ;-)

konto usunięte

Temat: [php mysql] formularz edycji rekordu

witam ponownie.już mówię o co kaman.

otóż utworzyłem szkielet tabeli, która generuje się z danymi po wykonaniu selecta. w dwóch kolumnach są linki edytuj i usuń.

  echo "<td><a href=edit.php?".$row['NR']." >Edytuj</a></td>";


po kliku na linku edytuj według założeń miała się otwierać strona z możliwością edycji konkretnego rekordu. taką tabelę również już utworzyłem. dane pięknie się wczytywały przy testach kiedy miałem konkretną wartość NR np 666666. podwójny szatan :D

zapis NR = '$row['NR'] generuje błąd

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /baza4/edit.php on line 21


a linia 21 wygląda tak
$result = mysql_query("SELECT * FROM `customers` WHERE `NR`='$row['NR']'");
Łukasz Schabek

Łukasz Schabek Architekt Rozwiązań

Temat: [php mysql] formularz edycji rekordu

To Twój błąd:

http://ideone.com/79lwDolH

Spróbuj tak:

http://ideone.com/uN3TdfEu

Następna dyskusja:

mySQL -pobieranie danych z ...




Wyślij zaproszenie do