Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML][MYSQL]zmiana rekordu w bazie
Forum PHP.pl > Forum > Przedszkole
Kamil90
Witam stworzyłem taki skrypcik i gdzies musi być błąd, ponieważ zawsze jak edytuje kategorię to zwaraca mi błąd edycji kategorii sad.gif
  1. <?php
  2. // część skryptu
  3. case 'edit':
  4. if ($_POST['edit'])
  5. {
  6. mysql_query('UPDATE from `tele` SET `nazwa` =("' . $POST['edit'] . '") WHERE id ='' . (int)$_GET['id'] . ''');
  7. echo '<div style="margin-bottom: 20px;">Kategoria edytowana.</div>';
  8. }
  9. else
  10. { echo '<div style="margin-bottom: 20px;">Blad edycji kategorii.</div>'; }
  11. break;
  12.  
  13. }
  14.  
  15. $sql = 'SELECT * FROM tele WHERE segment = "filmiki"';
  16. $wynik = mysql_query($sql);
  17.  
  18.  
  19. if (mysql_num_rows($wynik))
  20. {
  21.   while ($row = mysql_fetch_array($wynik))
  22. {      
  23. echo '<div>' . $row['nazwa'] . '<form action="index.php?page=filmiki&amp;x=edit&amp;id=' . $row['id'] . '" method="post"> <div style="margin-bottom: 20px;">Nowa nazwa: <input type="text" name="edycja" size="30" /> <input type="submit" value="Edytuj"></div></form>
  24. <a href="index.php?page=filmiki&amp;x=delete&amp;id=' . $row['id'] . '" title="Kasuj kategorię filmików" onclick="return confirm('Czy na pewno chcesz usunąć kategorię ' . $row['nazwa'] . '?');">[Kasuj kategorię]</a></div>';
  25. '<br>';
  26. }
  27. }
  28. else
  29. {
  30.   echo 'Brak kategorii';
  31. }
  32. ?>


skrypt miał edytować pole "nazwa" w tabeli "tele" w bazie mysql...
potreb
Dodaj do zapytania "or die(mysql_error());" i będziemy wiedzieli więcej.

  1. <?php
  2. mysql_query("UPDATE from `tele` SET `nazwa` ='$POST['edit'] ' WHERE id ='" . (int)$_GET['id'] . "');
  3. ?>
Kamil90
zrobiłem to w taki sposób i to samo sad.gif
  1. <?php
  2. // część skryptu
  3. case 'edit':
  4. if ($_POST['edit'])
  5. {
  6. mysql_query('UPDATE from `tele` SET `nazwa` =("' . $POST['edit'] . '") WHERE id ='' . (int)$_GET['id'] . ''' or die(mysql_error()));
  7. echo '<div style="margin-bottom: 20px;">Kategoria edytowana.</div>';
  8. }
  9. else
  10. { echo '<div style="margin-bottom: 20px;">Blad edycji kategorii.</div>'; }
  11. break;
  12.  
  13. }
  14.  
  15.  
  16.  
  17. $sql = 'SELECT * FROM tele WHERE segment = "filmiki"';
  18. $wynik = mysql_query($sql);
  19.  
  20.  
  21. if (mysql_num_rows($wynik))
  22. {
  23.   while ($row = mysql_fetch_array($wynik))
  24. {      
  25. echo '<div>' . $row['nazwa'] . '<form action="index.php?page=filmiki&amp;x=edit&amp;id=' . $row['id'] . '" method="post"> <div style="margin-bottom: 20px;">Nowa nazwa: <input type="text" name="edycja" size="30" /> <input type="submit" value="Edytuj"></div></form>
  26. <a href="index.php?page=filmiki&amp;x=delete&amp;id=' . $row['id'] . '" title="Kasuj kategorię filmików" onclick="return confirm('Czy na pewno chcesz usunąć kategorię ' . $row['nazwa'] . '?');">[Kasuj kategorię]</a></div>';
  27. '<br>';
  28. }
  29. }
  30. else
  31. {
  32.   echo 'Brak kategorii';
  33. }
  34. ?>


mozemy też zrobić żeby była "(nazwa kategori) [edytuj kategorię] [kasuj kategorię]" i dopiero po kliku na edytuj by się pojawiało okienko do wpisania jej nazwy która miałaby być zastąpiona. Myślę że wtedy trzeba byłoby ten kod:
  1. <form action="index.php?page=filmiki&amp;x=edit&amp;id=' . $row['id'] . '" method="post"> <div style="margin-bottom: 20px;">Nowa nazwa: <input type="text" name="edycja" size="30" /> <input type="submit" value="Edytuj"></div></form>

umieścić po "case"
ziqzaq
Manual to podstawa, przeczytaj. Mysql update.
~potreb nie zauważył wszystkich "kwiatków" w zapytaniu ("from").
  1. <?php
  2. mysql_query("UPDATE from `tele` SET `nazwa` ='$POST['edit'] ' WHERE id ='" . (int)$_GET['id'] . "');
  3. ?>


PS Żeby nie było. Nie dałem gotowca. Użyj manuala i popraw zapytanie.
Kamil90
ziqzaq u Ciebie w zapytaniu brakuje chyba na końcu cudzysłowia...
przed chwilą ułożyłem coś takiego, ale nie działa wogole:(:
  1. <?php
  2. case 'edit':
  3. if ($_POST['edit'])
  4. {
  5. mysql_query("UPDATE from `tele` SET `nazwa` ='$POST['edit'] ' WHERE id ='" . (int)$_GET['id'] . "');
  6. echo '<div style="margin-bottom: 20px;">Kategoria edytowana.</div>';
  7. }
  8. else
  9. { echo '<div style="margin-bottom: 20px;">Blad edycji kategorii.</div>'; }
  10. echo '<form action="index.php?page=filmiki&amp;x=edit" method="post"> <div style="margin-bottom: 20px;">Nowa nazwa: <input type="text" name="edycja" size="30" /> <input type="submit" value="Edytuj"></div></form>';
  11.  
  12. break;
  13.  
  14. }
  15.  
  16.  
  17.  
  18. $sql = 'SELECT * FROM tele WHERE segment = "filmiki"';
  19. $wynik = mysql_query($sql);
  20.  
  21.  
  22. if (mysql_num_rows($wynik))
  23. {
  24.   while ($row = mysql_fetch_array($wynik))
  25. {      
  26. echo '<div>' . $row['nazwa'] . '<a href="index.php?page=filmiki&amp;x=edit&amp;id=' . $row['id'] . '">[Edytuj kategorię]</a>  
  27. <a href="index.php?page=filmiki&amp;x=delete&amp;id=' . $row['id'] . '" title="Kasuj kategori&#281; filmików" onclick="return confirm('Czy na pewno chcesz usunąć kategorię ' . $row['nazwa'] . '?');">[Kasuj kategorię]</a></div>';
  28. '<br>';
  29. }
  30. }
  31. else
  32. {
  33.   echo 'Brak kategorii';
  34. }
  35. ?>
ziqzaq
Przepraszam, nie zaznaczyłem tego dobrze - cytowałem kod ~potreba.
Przeczytaj jeszcze raz mój post (szczególnie PS), spróbuj naprawić to samodzielnie bo widzę że oczekujesz gotowca.
Kamil90
nie oczekuję gotowca... chciałbym żeby mi ktoś w tym pomógł bo przy dłuższym skrypcie troszkę się gubie, pozmieniałem go trochę, również Twoje zapytanie ziqzaqu poprawiłem ale teraz zupełnie nie działa sad.gif, (strona się nie wyświetla)
  1. <?php
  2. // część skryptu
  3. case 'edit':
  4.  
  5. echo '<form action="index.php?page=filmiki&amp;x=edit" method="post"> <div style="margin-bottom: 20px;">Nowa nazwa: <input type="text" name="edycja" size="30" /> <input type="submit" value="Edytuj"></div></form>';
  6. // switch ($_GET['x'])
  7. if ($_POST['edit'])
  8. {
  9. mysql_query("UPDATE from `tele` SET `nazwa` =' $_POST['edit'] ' WHERE `id` ='' . (int)$_GET['id'] . ''");
  10. echo '<div style="margin-bottom: 20px;">Kategoria edytowana.</div>';
  11. }
  12. else
  13. { echo '<div style="margin-bottom: 20px;">Blad edycji kategorii.</div>'; }
  14. break;
  15.  
  16. }
  17.  
  18.  
  19.  
  20. $sql = 'SELECT * FROM tele WHERE segment = "filmiki"';
  21. $wynik = mysql_query($sql);
  22.  
  23.  
  24. if (mysql_num_rows($wynik))
  25. {
  26.   while ($row = mysql_fetch_array($wynik))
  27. {      
  28. echo '<div>' . $row['nazwa'] . '<a href="index.php?page=filmiki&amp;x=edit&amp;id=' . $row['id'] . '">[Edytuj kategorię]</a>  
  29. <a href="index.php?page=filmiki&amp;x=delete&amp;id=' . $row['id'] . '" title="Kasuj kategorię filmików" onclick="return confirm('Czy na pewno chcesz usunąć kategorię ' . $row['nazwa'] . '?');">[Kasuj kategorię]</a></div>';
  30. '<br>';
  31. }
  32. }
  33. else
  34. {
  35.   echo 'Brak kategorii';
  36. }
  37. ?>
ziqzaq
Postaram się wyoślić.
1) Zobacz czy różnią sie te zapytania.
Wg manuala:
  1. UPDATE tele SET name='bla bla' WHERE id=1;

Wg ciebie:
  1. UPDATE FROM tele SET name='bla bla' WHERE id=1;

2) Poza tym zauważyłem jeszcze takie coś.
W formularzu:
  1. <input type="text" name="edycja" size="30" />

a w php:
  1. <?php
  2. if ($_POST['edit']) {
  3. // I to samo w zapytaniu !!!
  4. mysql_query("UPDATE from `tele` SET `nazwa` =' $_POST['edit'] ' WHERE `id` ='' . (int)$_GET['id'] . ''");
  5. ?>

raz "edycja" a raz "edit" (i zdaję sobie sprawę że przesyłasz parametr "x=edit") dry.gif
potreb
Nie wyświetla się? Podaj błąd jaki się wyświetlił.

Druga sprawa twoje slasha w zapytaniu MySQL?

  1. <?php
  2. mysql_query("UPDATE `tele` SET `nazwa` ='".$_POST['edit']."' WHERE `id` =").(int)$_GET['id'];
  3. ?>
Kamil90
przed chwilą wymyśliłem coś takiego ale dalej to samo:
  1. <?php
  2. case 'edit':
  3.  
  4. echo '<form action="index.php?page=filmiki&amp;x=edit&amp;y=edit" method="post"> <div style="margin-bottom: 20px;">Nowa nazwa: <input type="text" name="edycja" size="30" /> <input type="submit" value="Edytuj"></div></form>';
  5. switch ($_GET['y'])
  6. {
  7. case 'edit':
  8. if ($_POST['edit'])
  9. {
  10. mysql_query('UPDATE from `tele` SET `nazwa` = ' . $_POST['edit'] . ' WHERE `id` =' . (int)$_GET['id'] . '');
  11. echo '<div style="margin-bottom: 20px;">Kategoria edytowana.</div>';
  12. }
  13. else
  14. {echo '<div style="margin-bottom: 20px;">Blad edycji kategorii</div>'; }
  15. break;
  16. }
  17. break;
  18.  
  19. }
  20.  
  21.  
  22.  
  23. $sql = 'SELECT * FROM tele WHERE segment = "filmiki"';
  24. $wynik = mysql_query($sql);
  25.  
  26.  
  27. if (mysql_num_rows($wynik))
  28. {
  29.   while ($row = mysql_fetch_array($wynik))
  30. {      
  31. echo '<div>' . $row['nazwa'] . '<a href="index.php?page=filmiki&amp;x=edit&amp;id=' . $row['id'] . '">[Edytuj kategorię]</a>  
  32. <a href="index.php?page=filmiki&amp;x=delete&amp;id=' . $row['id'] . '" title="Kasuj kategorię filmików" onclick="return confirm('Czy na pewno chcesz usunąć kategorię ' . $row['nazwa'] . '?');">[Kasuj kategorię]</a></div>';
  33. '<br>';
  34. }
  35. }
  36. else
  37. {
  38.   echo 'Brak kategorii';
  39. }
  40. ?>

zaraz sprawdze tak jak napisałes ziqzaqu, mozliwe ze robiłem taki bład.

ps. Błąd się żaden nie wyswietla, wyskakuje poprostu pusta strona ale to był jakis błąd w zapytaniu bo jak go ustawiłem jako komentarz // to się wyświetlała

nie wiem czy tak moge jeden post pod drugim...
stworzyłem taki kod i juz jest lepiej bo wyskakuje napis "Kategoria edytowana." smile.gif z tym że nie jest z edytowana...
  1. <?php
  2. case 'edit':
  3.  
  4. echo '<form action="index.php?page=filmiki&amp;x=edit" method="post"> <div style="margin-bottom: 20px;">Nowa nazwa: <input type="text" name="edycja" size="30" /> <input type="submit" value="Edytuj"></div></form>';
  5.  
  6. if ($_POST['edycja'])
  7. {
  8. mysql_query('UPDATE `tele` SET `nazwa` = ' . $_POST['edycja'] . ' WHERE `id` =' . (int)$_GET['id'] . '');
  9. echo '<div style="margin-bottom: 20px;">Kategoria edytowana.</div>';
  10. }
  11. else
  12. { echo '<div style="margin-bottom: 20px;">Blad edycji kategorii.</div>'; }
  13. break;
  14.  
  15. }
  16.  
  17.  
  18.  
  19. $sql = 'SELECT * FROM tele WHERE segment = "filmiki"';
  20. $wynik = mysql_query($sql);
  21.  
  22.  
  23. if (mysql_num_rows($wynik))
  24. {
  25.  while ($row = mysql_fetch_array($wynik))
  26. {      
  27. echo '<div>' . $row['nazwa'] . '<a href="index.php?page=filmiki&amp;x=edit&amp;id=' . $row['id'] . '">[Edytuj kategorię]</a>  
  28. <a href="index.php?page=filmiki&amp;x=delete&amp;id=' . $row['id'] . '" title="Kasuj kategorię filmików" onclick="return confirm('Czy na pewno chcesz usunąć kategorię ' . $row['nazwa'] . '?');">[Kasuj kategorię]</a></div>';
  29. '<br>';
  30. }
  31. }
  32. else
  33. {
  34.  echo 'Brak kategorii';
  35. }
  36. ?>

ziqzaq miałeś rację z tym błedem pomiędzy 'edit' a 'edycja'
ziqzaq
Ok. Teraz można poprawiać winksmiley.jpg
Brak apostrofów wokół ciągu znaków $_POST['edycja'] w zapytaniu.
Nie:
  1. <?php
  2. mysql_query('UPDATE `tele` SET `nazwa` = ' . $_POST['edycja'] . ' WHERE `id` =' . (int)$_GET['id'] . '');
  3. ?>

Tak:
  1. <?php
  2. mysql_query('UPDATE `tele` SET `nazwa` = '' . mysql_real_escape_string($_POST['edycja']) . '' WHERE `id` =' . (int)$_GET['id']);
  3. ?>


Edit: dodałem mysql_real_escape_string
Kamil90
to samo pod zapytaniem:
  1. <?php
  2. mysql_query('UPDATE `tele` SET `nazwa` = '' . mysql_real_escape_string($_POST['edycja']) . '' WHERE `id` =' . (int)$_GET['id'] . '');
  3. ?>


a pod tym zapytaniem wogole strona się nie wyswietla...
  1. <?php
  2. mysql_query("UPDATE `tele` SET `nazwa` = '' . $_POST['edycja']) . '' WHERE `id` =' . (int)$_GET['id'] . '");
  3. ?>


a może co nie tak jest z tym html? zwłaszcza z tym linkiem po naciśnieciu "Edytuj":
  1. <form action="index.php?page=filmiki&amp;x=edit" method="post"> <div style="margin-bottom: 20px;">Nowa nazwa: <input type="text" name="edycja" size="30" /> <input type="submit" value="Edytuj"></div></form>
ziqzaq
Hmm no to może to:
Skąd bierzesz $_GET['id'] w zapytaniu?
W formularzu go nie ma (ani takiego pola, ani takiej zmiennej w linku w action):
  1. <form action="index.php?page=filmiki&x=edit" method="post"> <div style="margin-bottom: 20px;">Nowa nazwa:
  2. <input type="text" name="edycja" size="30" /> <input type="submit" value="Edytuj"></div></form>

Edit:
Spróbuj:
  1. <?php
  2. echo '<form action="index.php?page=filmiki&x=edit&id='.$_GET['id'].'" method="post"><div style="margin-bottom: 20px;">Nowa nazwa: <input type="text" name="edycja" size="30" /> <input type="submit" value="Edytuj"></div></form>';
  3. ?>
Kamil90
zaczeło mi zmieniać dane, czyli zapytanie jest ok smile.gif , kod który mi zadziałał to ten:
  1. <?php
  2. case 'edit':
  3. if ($_POST['edycja'])
  4. {
  5. mysql_query('UPDATE `tele` SET `nazwa` = '' . mysql_real_escape_string($_POST['edycja']) . '' WHERE `id` =' . (int)$_GET['id'] . '');
  6. echo '<div style="margin-bottom: 20px;">Kategoria edytowana.</div>';
  7. }
  8. else
  9. { echo '<div style="margin-bottom: 20px;">Blad edycji kategorii.</div>'; }
  10. break;
  11.  
  12. }
  13.  
  14.  
  15.  
  16. $sql = 'SELECT * FROM tele WHERE segment = "filmiki"';
  17. $wynik = mysql_query($sql);
  18.  
  19.  
  20. if (mysql_num_rows($wynik))
  21. {
  22.  while ($row = mysql_fetch_array($wynik))
  23. {      
  24. echo '<div>' . $row['nazwa'] . ' <form action="index.php?page=filmiki&amp;x=edit&amp;id=' . $row['id'] . '" method="post"> <div style="margin-bottom: 20px;">Nowa nazwa: <input type="text" name="edycja" size="30" /> <input type="submit" value="Edytuj"></div></form>
  25. <a href="index.php?page=filmiki&amp;x=delete&amp;id=' . $row['id'] . '" title="Kasuj kategorię filmików" onclick="return confirm('Czy na pewno chcesz usunąć kategorię ' . $row['nazwa'] . '?');">[Kasuj kategorię]</a></div>';
  26. '<br>';
  27. }
  28. }
  29. else
  30. {
  31.  echo 'Brak kategorii';
  32. }
  33. ?>

$_GET['id'] pobiera aktualny "ID" z bazy mysql. Teraz wychodzi na to że przy każdej kategorii mam pole do edycji, chciałbym zrobić żeby po kliknięci np na [Edytuj kategorię] pojawiało się to pole do wpisania... pewnie bym musiał je zamieścić pod 'case'?
ziqzaq
Tak jak to miałeś tu, powinno być ok.
Czyli jak klikniesz na link [Edytuj kategorię] to wykona się ten case i pokaże formularz.
Teraz pytanie czy formularz ma być pokazany po edycji (czyli edytujesz, zatwierdzasz edycje i znowu widać formularz)?
Jeśli nie to może tak:
  1. <?php
  2. case 'edit':
  3.  if ($_POST['edycja']) {
  4.    // tu update
  5.  }
  6.  else {
  7.    // nic jeszcze nie przeslano, wiec wyswietl formularz
  8.  }
  9.  break;
  10. }
  11. ?>
Kamil90
zrobiłem to sobie w ten sposób:
  1. <?php
  2. case 'edit':
  3. $napis = 'Kategoria edytowana.';
  4. if ($_POST['edycja'])
  5. {
  6. mysql_query('UPDATE `tele` SET `nazwa` = '' . $_POST['edycja'] . '' WHERE `id` =' . (int)$_GET['id'] . '');
  7. echo '<div style="margin-bottom: 20px;">' . $napis . '</div>';
  8. }
  9. else
  10. {
  11. echo $napis;
  12. }
  13. break;
  14.  
  15. }
  16.  
  17.  
  18.  
  19. $sql = 'SELECT * FROM tele WHERE segment = "filmiki"';
  20. $wynik = mysql_query($sql);
  21.  
  22.  
  23. if (mysql_num_rows($wynik))
  24. {
  25.  while ($row = mysql_fetch_array($wynik))
  26. {      
  27. echo '<div><b>' . $row['nazwa'] . '</b> <form action="index.php?page=filmiki&amp;x=edit&amp;id=' . $row['id'] . '" method="post"> Nowa nazwa: <input type="text" name="edycja" size="30" /> <input type="submit" value="Edytuj"></form>
  28. <a href="index.php?page=filmiki&amp;x=delete&amp;id=' . $row['id'] . '" title="Kasuj kategorię filmików" onclick="return confirm('Czy na pewno chcesz usunąć kategorię ' . $row['nazwa'] . '?');">[Kasuj kategorię]</a></div>';
  29. echo '<br><br>';
  30. }
  31. }
  32. else
  33. {
  34.  echo 'Brak kategorii';
  35. }
  36. ?>


dzięki ziqzaqu za pomoc smile.gif jestem Ci winien piwo hehe... Oczywiście +
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.