Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] UPDATE - Pierwsze starcie
Forum PHP.pl > Forum > Przedszkole
conix
Witam wszystkich,
próbuje od 10 minut zrobic edycje artów. Niby wszystko jest ok, ale dane sie nie aktualizuja :/
Oto strona, na ktorej wyswietlam artykul do edycji:
  1. <?php
  2. include('config.php');
  3. $id = $_GET['id'];
  4. $query = mysql_query("select * from arty where id='$id'");
  5. while($rekord = mysql_fetch_array($query))
  6. echo"Tytuł:<br><textarea name='tytul' rows='1' class='textbox' style='width:295px'>
  7. $rekord[1]
  8. </textarea><br>
  9. Treść:  <br>
  10. <textarea name='tresc' rows='28' class='textbox' style='width:695px'>
  11. $rekord[2]
  12. </textarea>  <br>
  13. Kategoria (JustCause, JustCause2 lub Strona:  <br>
  14. <textarea name='kategoria' rows='1' class='textbox' style='width:295px'>
  15. $rekord[3]
  16. </textarea>
  17. <br>
  18. <br>
  19. <a href='edit.php'>Gotowe</a>";
  20. ?>

A oto strona edit.php, czyli ta ktora ma na zadanie wprowadzic zmiany do bazy:
  1. <?php
  2.  include('config.php');
  3. $id = $_GET['id'];
  4. $edytuj = ("UPDATE arty SET tytul = '$rekord[1]', tresc = '$rekord[2]', kategoria = '$rekord[3]' WHERE id='$id' ");
  5. if(mysql_query($edytuj))
  6. {
  7.  print "Artykuł został edytniety, klikni <a href='index.html'>tutaj</a>";
  8. }
  9.  
  10. {
  11. print "Wystąpił błąd podczas edycji";
  12. }
  13. ?>

Prosze o pomoc, jak to rozwiazac by edytowało smile.gif
nospor
Cytat
próbuje od 10 minut zrobic edycje artów
poswiec jeszcze godzine a dopiero potem na forum.
$id = $_GET['id'];
przeciez jak masz linka do edit.php to nie przekazujesz w url tego id.
O polach ktore wypelniles juz nie wspomne. Zamien to na forma i wysylaj formem dane.
Cienki1980
Nie masz żadnego formularza który by przesyłał dane do pliku gdzie miałaby nastąpić edycja. Przycisk "Gotowe" to tylko link do tej strony.

Żeby zadziałała edycja musisz wysłać id aktualizowanego rekordu i wszystkie pozostałe dane do edycji.

Rozwiązanie w krokach.
- zrobić formularz
- pola w formularzu wypełnić danymi aktualnymi
- dodać pole typu hidden i przekazać za jego pomocą id rekordu ( albo jeden z innych sposobów na przekazanie danych )
- zatwierdzając formularz przechodzisz do pliku z zapytaniem UPDATE
- odpowiednio tworzysz zapytanie UPDATE które wykonujesz w bazie danych.
conix
Ale gdy edytuje arta, to w adresie mam:
edycja_a.php?id=3
wiec pobiera id z url'a
nospor
no ale do zapisu tej edycji masz taki link:
<a href='edit.php'>Gotowe</a>";
zero id, zero danych z formularza. nic.
conix
Ok, potem znajde chwile to poprawie i dam znac jak mi poszlo.


Ok, zrobiłem cos takiego:
  1. <?php
  2.  if (!empty($_POST['wstaw']))
  3. {
  4. $id = $_GET['id'];
  5. include('config.php');
  6. $edytuj = ("UPDATE arty SET tytul = '$rekord[1]', tresc = '$rekord[2]', kategoria = '$rekord[3]' WHERE id='$id' ");
  7.  
  8. echo " Dziekujemy za edycje artykulu, by kontynuowac kliknij <a href='index.php'>tutaj</a>";
  9. }
  10. else
  11. {
  12. include('config.php');
  13. $id = $_GET['id'];
  14. $tytul = $_POST['tytul'];
  15. $tresc = $_POST['tresc'];
  16. $kategoria = $_POST['kategoria'];
  17. $query = mysql_query("select * from arty where id='$id'");
  18. while($rekord = mysql_fetch_array($query))
  19.  
  20.  
  21. echo' <form action="edycja_a.php?submit=dodano" method="post">
  22. Tytuł: <input type="text" name="tytul" />
  23. <br /><br />Treść </br><textarea name="tresc" rows="30" cols="80">'.$rekord[2].'</textarea><BR>
  24. <input type="checkbox" name="kategoria" value="JustCause" />Just Cause<BR><input type="checkbox" name="kategoria" value="JustCause2" />Just Cause 2<input type="checkbox" name="kategoria" value="Strona" />Strona
  25. <br /><br /><input type="submit" name="wstaw" value="Dodaj" /></form>
  26.  
  27. ';
  28. }
  29. ?>

Ale nie zmienia danych w bazie
PawelC
  1. <?php
  2. $edytuj = ("UPDATE arty SET tytul = '$rekord[1]', tresc = '$rekord[2]', kategoria = '$rekord[3]' WHERE id='$id' ");
  3. ?>
a gdzie mysql_query, zrób tak:
  1. <?php
  2. $edytuj = "UPDATE arty SET tytul = '$rekord[1]', tresc = '$rekord[2]', kategoria = '$rekord[3]' WHERE id='$id'";
  3. mysql_query($edytuj) or die(mysql_error());
  4. ?>
conix
Nic nie dało
PawelC
a tak:
  1. <?php
  2. $id=$_GET['id'];
  3. $tytul=$_POST['tytul'];
  4. $tresc=$_POST['tresc'];
  5. $kategoria=$_POSt['kategoria'];
  6. $edytuj = "UPDATE arty SET tytul = '$tytul', tresc = '$tresc', kategoria = '$kategoria' WHERE id='$id'\";
  7. mysql_query($edytuj) or die(mysql_error());
  8. ?>

tak powinno być dobrze bo niemam pojęcia skąd masz to $rekord[0] etc...
conix
Zero reakcji
PawelC
  1. <?php
  2.  if ($_POST['wstaw']=='Dodaj')
  3. {
  4. $id = $_GET['id'];
  5. include('config.php');
  6.  
  7. $id=$_GET['id'];
  8. $tytul=$_POST['tytul'];
  9. $tresc=$_POST['tresc'];
  10. $kategoria=$_POSt['kategoria'];
  11. $edytuj = "UPDATE arty SET tytul = '$tytul', tresc = '$tresc', kategoria = '$kategoria' WHERE id='$id'";
  12. mysql_query($edytuj) or die(mysql_error());
  13.  
  14.  
  15. echo " Dziekujemy za edycje artykulu, by kontynuowac kliknij <a href='index.php'>tutaj</a>";
  16. }
  17. else
  18. {
  19. include('config.php');
  20. $id = $_GET['id'];
  21. $tytul = $_POST['tytul'];
  22. $tresc = $_POST['tresc'];
  23. $kategoria = $_POST['kategoria'];
  24. $query = mysql_query("select * from arty where id='$id'");
  25. while($rekord = mysql_fetch_array($query))
  26.  
  27.  
  28. echo' <form action="edycja_a.php?submit=dodano" method="post">
  29. Tytuł: <input type="text" name="tytul" />
  30. <br /><br />Treść </br><textarea name="tresc" rows="30" cols="80">'.$rekord[2].'</textarea><BR>
  31. <input type="checkbox" name="kategoria" value="JustCause" />Just Cause<BR><input type="checkbox" name="kategoria" value="JustCause2" />Just Cause 2<input type="checkbox" name="kategoria" value="Strona" /><input type="hidden" name="wstaw" value="Dodaj">Strona
  32. <br /><br /><input type="submit" value="Dodaj" /></form>
  33.  
  34. ';
  35. }
  36. ?>
bartg
  1. <?php
  2. $id = $_GET['id'];
  3. ?>


A gdzie wysyłacie id?
PawelC
conix wklej przykładowy link z którego pobierasz id, a później dane do formularza.
conix
edit_a.php?id=3
Wyswietla mi w polu tresc newsa, wiec powinno dzialac
PawelC
Mi też wyświetla normalnie treść newsa oraz jego tytul
conix
Mi tez newsy wyswietla, co to ma do rzeczy?
PawelC
A to że testowałem skrypt u siebie i bezproblemowo działa.
Cienki1980
a gdzie w formularzu przesyłasz ponownie id do tego miejsca gdzie wstawiasz je do zapytania ?
nie ma ani śladu ... szczególnie, że formularz wysyłasz POSTem a id poibierasz z GET'a
Dorób przekazywanie id w formularzu i musi zadziałać.
conix
U mnie nie działa :/
Przekazywanie id w formularzu jest.
PawelC
  1. <?php
  2. include('config.php');
  3. $id = $_GET['id'];
  4. $tytul = $_POST['tytul'];
  5. $tresc = $_POST['tresc'];
  6. $kategoria = $_POST['kategoria'];
  7. $pobierz="select * from arty where id='$id'";
  8. $query = mysql_query($pobierz);
  9. while($rekord = mysql_fetch_array($query))
  10.  
  11.  
  12. echo' <form action="?id='.$id.'" method="post">
  13. Tytuł: <input type="text" name="tytul" value="'.$rekord['tytul'].'" />
  14. <br /><br />Treść </br><textarea name="tresc" rows="30" cols="80">'.$rekord['tresc'].'</textarea><BR>
  15. <select name="kategoria">
  16. <option value="Just Cause">Just Cause</option>
  17. <option value="Just Cause2">Just Cause2</option>
  18. <option value="Strona">Strona</option>
  19. </select><input type="hidden" name="wstaw" value="Dodaj">
  20. <br /><br /><input type="submit" value="Dodaj" /></form>
  21.  
  22. ';
  23. ?>
  24.  
  25. <?php
  26. if ($_POST['wstaw']=='Dodaj')
  27. {
  28. $id = $_GET['id'];
  29. include('config.php');
  30.  
  31. $id=$_GET['id'];
  32. $tytul=$_POST['tytul'];
  33. $tresc=$_POST['tresc'];
  34. $kategoria=$_POST['kategoria'];
  35. $edytuj = "UPDATE arty SET tytul = '$tytul', tresc = '$tresc', kategoria = '$kategoria' WHERE id='$id'";
  36. mysql_query($edytuj) or die(mysql_error());
  37.  
  38.  
  39. echo " Dziekujemy za edycje artykulu, by kontynuowac kliknij <a href='index.php'>tutaj</a>";
  40. }
  41.  
  42. ?>

A tutaj działa ten sam kod:
http://exploitek.info/oo.php?id=1 wpisz tam cokolwiek dodaj, i poźniej odśwież zobaczysz że działa
conix
Teraz działa, dzięki wielkie ;D
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.