Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Edycja rekordów...
mk89
post 17.08.2005, 21:41:49
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 22.07.2005

Ostrzeżenie: (0%)
-----


Witajcie guitar.gif
Chciałbym edytować rekordy z bazy danych w ten sposób:

Rekord (w input type="text") | Aktualizuj (Submit)

Czyli:

  1. <?php
  2. echo '<form method="post" action="edycjaa.php">';
  3. //...
  4. echo '<input type="text" name="nazwa" value="'.$myrow["nazwa"].'">';
  5. echo '&nbsp;&nbsp;<input type="Submit" name="aktualizuj" value="Aktualizuj">';
  6. //...
  7. echo '</form>';
  8. ?>

w edycjaa.php mam:
  1. <?php
  2. $team=$_POST['nazwa'];
  3. $punkty=$_POST['pkt'];
  4. if(empty($team) || empty($punkty))
  5. {
  6. echo 'Rekord zaktualizowany';
  7. }
  8. else
  9. {
  10. $db = mysql_connect("localhost", "root","");
  11. mysql_select_db("team",$db);
  12. $sql = "UPDATE tabela SET nazwa='$nazwa', pkt='$pkt'";
  13. $result = mysql_query($sql);
  14. }
  15. ?>


I teraz nie mam pojęcia dlaczego jak nacisnę Aktualizuj, to skrypt zwraca to co w echo czyli 'Rekord zaktualizowany'.

//W edycjaa.php jest jeszcze coś takiego jak "pkt", tez mam zamiar zrobić edycje do tego, ale najpierw musze skombinować żeby jedno działało.

Pozdrawiam thumbsupsmileyanim.gif
Go to the top of the page
+Quote Post
strife
post 17.08.2005, 21:46:02
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

Ostrzeżenie: (0%)
-----


Jeśli wysyłasz formularz w takiej postaci to $_POST['pkt'] zawsze będzie miała wartość NULL, bo nie jest wogóle wysyłana. A twoj warunek mówi jeśli zmienna 'nazwa' albo 'pkt' będzie pusta, zmień to na i czyli && bądź AND bo w takim przypadku zawsze gdy jedno pole zostanie puste wywali to.

Pozdrawiam!


--------------------
Go to the top of the page
+Quote Post
mk89
post 17.08.2005, 21:52:14
Post #3





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 22.07.2005

Ostrzeżenie: (0%)
-----


Cytat(scarface @ 2005-08-17 20:46:02)
Jeśli wysyłasz formularz w takiej postaci to $_POST['pkt'] zawsze będzie miała wartość NULL, bo nie jest wogóle wysyłana. A twoj warunek mówi jeśli zmienna 'nazwa' albo 'pkt' będzie pusta, zmień to na i czyli && bądź AND bo w takim przypadku zawsze gdy jedno pole zostanie puste wywali to.

Pozdrawiam!

lol haha.gif

Więc usunolem funkcje sprawdzania czy coś zostało wpisane i mam w kodzie:

  1. <?php
  2. $team=$_POST['nazwa'];
  3. $punkty=$_POST['pkt'];
  4. $db = mysql_connect("localhost", "root","");
  5. mysql_select_db("team",$db);
  6. $sql = "UPDATE tabela SET nazwa='$nazwa', pkt='$pkt'";
  7. $result = mysql_query($sql);
  8. ?>


i po daniu na Aktualizuj, rekord zmieniły sie na jeden z 4 co były [każdy był inny] i zawartość pkt zostały wyzerowana.

Wiec co tu nie tak?
Go to the top of the page
+Quote Post
strife
post 17.08.2005, 22:00:49
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

Ostrzeżenie: (0%)
-----


lol ?

Zmieniły Ci się dla wszystkich bo nie widze w Twoim zapytaniu WHERE.. Czyli nie zdefiniowałeś który rekord ma być UPDATE'owany.


--------------------
Go to the top of the page
+Quote Post
mk89
post 18.08.2005, 08:37:20
Post #5





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 22.07.2005

Ostrzeżenie: (0%)
-----


Cytat(scarface @ 2005-08-17 21:00:49)
lol ?

Zmieniły Ci się dla wszystkich bo nie widze w Twoim zapytaniu WHERE.. Czyli nie zdefiniowałeś który rekord ma być UPDATE'owany.

ohmy.gif Ja już się pogubiłem, mam:

  1. <?php
  2. UPDATE tabela SET nazwa='$nazwa', pkt='$pkt' WHERE nazwa='$nazwa', pkt='$pkt'
  3. ?>


I dalej nie działa.


Dodam że z bazami danych mam styczność od wczoraj rolleyes.gif.


Pozdrawiam
Go to the top of the page
+Quote Post
nospor
post 18.08.2005, 08:45:40
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




musisz mieć coś, co jednoznaczie identyfikuje rekord. Zazwyczaj jest to pole ID. CZyli zapytanie tak powinno wyglądać:
  1. <?php
  2.  
  3. $sql="UPDATE tabela SET nazwa='$nazwa', pkt='$pkt' WHERE ID=$id";
  4.  
  5. ?>
Tylko aby to zadziało musialbyś miec podane to ID, czyli wysylać je razem z nazwa porzez formualrz. Pytanie brzmi czy masz takie pole.

Moze u ciebie tym polem jest 'nazwa', ale widzę w formularzu, że może być ono zmieniane, więc odpada


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mk89
post 18.08.2005, 08:53:34
Post #7





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 22.07.2005

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 2005-08-18 07:45:40)
musisz mieć coś, co jednoznaczie identyfikuje rekord. Zazwyczaj jest to pole ID. CZyli zapytanie tak powinno wyglądać:
  1. <?php
  2.  
  3. $sql="UPDATE tabela SET nazwa='$nazwa', pkt='$pkt' WHERE ID=$id";
  4.  
  5. ?>
Tylko aby to zadziało musialbyś miec podane to ID, czyli wysylać je razem z nazwa porzez formualrz. Pytanie brzmi czy masz takie pole.

Moze u ciebie tym polem jest 'nazwa', ale widzę w formularzu, że może być ono zmieniane, więc odpada

Hmmm właśnie nie mam pola ID, mam tylko "Nazwa" i "Pkt".

Więc musze do tego stworzyć tabele ID i przypisać kazdej z wartosci wlasny ID? snitch.gif
Go to the top of the page
+Quote Post
nospor
post 18.08.2005, 08:56:54
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




robisz pole id typu int auto_increment jako primary key i samo się ponadaje.
Ale pytanie czy potrzeba. Te pole nazwa to ono może się zmieniać (z forma wynika że tak), czy jednak będie stałe (bez zmian). Jesli to pole bedzie bez zmian to ono może identyfikować rekord (musisz wtedy w formie zmienic input z text na hidden, aby gostek nie mogł modyfikować).

Aczkolwiek bardziej przyjaznym dla otoczenia jest id. (spór się na ten temat kiedyś toczył - wygrało id biggrin.gif )


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mk89
post 18.08.2005, 09:07:56
Post #9





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 22.07.2005

Ostrzeżenie: (0%)
-----


Dobra, to z ID działa jak należy ale edycja nie działa.

Więc to
  1. <?php
  2. $sql="UPDATE tabela SET nazwa='$nazwa', pkt='$pkt' WHERE ID=$id";
  3.  
  4. ?>

niezabardzo działa...

Pozdrawiam
Go to the top of the page
+Quote Post
nospor
post 18.08.2005, 09:10:00
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




OK. A pytanie za 100 pkt. A dodaleś to id do formualrza?
POkaz jeszcze raz cały nowy kod, strukture tabeli (dla pewności) i pogadamy.
Albo najlepiej odezwij się na gg i dopracuejmy szczegoly

edit: (dla potomnych)
po ciezkich i mozolnych konweracjach (przez te konwersacje z pracy mnie wyrzucą biggrin.gif ), doszliśmy do porozumienia.
Oto efekt:
edycja1.php
  1. <?php
  2.  
  3. $db = mysql_connect("localhost", "root", "");
  4. mysql_select_db("team",$db);
  5. $result = mysql_query("SELECT * FROM tabela ORDER BY pkt DESC",$db);
  6. echo '<form method="post" action="edycjaa.php">';
  7. while ($myrow = mysql_fetch_array($result))
  8. {
  9. echo '<input type="text" name="nazwa[]" value="'.$myrow["nazwa"].'">&nbsp;&nbsp;';
  10. echo '<input type="text" name="pkt[]" SIZE="1" value="'.$myrow["pkt"].'">';
  11. echo '<input type="hidden" name="id[]" value="'.$myrow["id"].'">';
  12. echo '&nbsp;&nbsp;<input type="Submit" name="aktualizuj" value="Edit">';
  13. echo '<br /> <br />';
  14. }
  15. echo '</form>';
  16.  
  17. ?>


edycjaa.php:
  1. <?php
  2. $db = mysql_connect("localhost", "root","");
  3. mysql_select_db("team",$db);
  4. foreach ($_POST['id'] as $ind => $id)
  5. {
  6. $nazwa=$_POST['nazwa'][$ind];
  7. $pkt=$_POST['pkt'][$ind];
  8. $sql = "UPDATE tabela SET nazwa='$nazwa', pkt='$pkt' where id=$id ";
  9. $result = mysql_query($sql);
  10. }
  11. ?>


dodano pole id.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mk89
post 18.08.2005, 10:09:28
Post #11





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 22.07.2005

Ostrzeżenie: (0%)
-----


nospor: Dzięki za pomoc!


Pozdrawiam wszystkich :]
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 09:36