Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySql]Edycja newsów
Forum PHP.pl > Forum > Przedszkole
adrianozo
Witam. Napisałem taki mały skrypt edycji newsów, ale coś nie chce działać, nie wiem dla czego.

Oto kod:

  1. <?php
  2. $connect = mysql_connect('localhost', 'root', 'pass') or die('Nie mo&#x17C;na po#x142;&#x105;czyc si&#x119; z baz&#x105; danych. Przepraszamy za k#x142;opoty');
  3. $db = mysql_select_db('db') or die('Nie mo&#x17C;na po#x142;&#x105;czyc si&#x119; z baz&#x105; danych. Przepraszamy za k#x142;opoty');
  4. include('panel/dane.php');
  5. if(!$_POST['id'])
  6. {
  7. echo '<center><form action="index.php?page=edytujnews&edytuj=1" method="post">
  8. <select name="id"> ';
  9. $zapytanie = "SELECT `id`, `tytul` FROM `news` ORDER BY `id` DESC";
  10. $idzapytania = mysql_query($zapytanie);
  11. while ($wiersz = mysql_fetch_array($idzapytania))
  12. echo '<option value="'.$wiersz[0].'"> '.$wiersz[1].'</option>';
  13. </select>
  14. <input type="submit" value="Wybierz">
  15. <br>
  16. </form>';
  17. echo'<br><FORM><INPUT TYPE="button" VALUE="Wr&#xF3;&#x107; do Panelu Administratora" onclick="history.go(-1)"></FORM></center>';
  18. }
  19. elseif($_POST['id'])
  20. {
  21. echo '<center><form action="index.php?page=edytujnews&edytuj=2" method="post">
  22. <select name="id"> ';
  23. $zapytanie = 'SELECT `id`, `tytul`, `tresc` FROM `news` WHERE `id`="'.$_POST['id'].'"';
  24. $idzapytania = mysql_query($zapytanie);
  25. while ($wiersz = mysql_fetch_row($idzapytania))
  26. echo '<input type="hidden" name="id" value="'.$wiersz[0].'">
  27. <br><br><input type="text" name="tytul" value="'.$wiersz[1].'" size="20">
  28. <br>
  29. <textarea name="tresc" cols="20" rows="20">'.$wiersz[2].'</textarea>
  30. <br>
  31. <input type="submit" value="Edytuj"><br>
  32. </form>';
  33. echo'<br><FORM><INPUT TYPE="button" VALUE="Wr&#xF3;&#x107; do Panelu Administratora" onclick="history.go(-2)"></FORM></center>';
  34. }
  35. else
  36. {
  37. $zapytanie = 'UPDATE `news` SET `tytul`= "'.$_POST['tytul'].'", `tresc`= "'.$_POST['tresc'].'" WHERE `id`="'.$_POST['id'].'"';
  38. $idzapytania = mysql_query($zapytanie);
  39. if($idzapytania)
  40. {
  41. echo '<center>Zedytowano news\'a<br><br><FORM><INPUT TYPE="button" VALUE="Wr&#xF3;&#x107; do Panelu Administratora" onclick="history.go(-3)"></FORM></center>';
  42. }
  43. else
  44. {
  45. echo mysql_errno() . ": " . mysql_error() . "\n";
  46. }
  47. }
  48. mysql_close($connect);
  49. ?>


A tutaj screeny jak działa:




A powinien tak:



potreb
Twój kod i screeny wszystko, mówią. Może tak zastosujesz echo mysql_error(); żeby sprawdzić czy nie wywala błędów.
I dodatkowo możesz napisać coś więcej oprócz tego, że nie działa, jak się przejawia nie działanie...
adrianozo
Cytat(potreb @ 15.11.2009, 17:16:07 ) *
Twój kod i screeny wszystko, mówią. Może tak zastosujesz echo mysql_error(); żeby sprawdzić czy nie wywala błędów.


Spójrz na 47 linijkę w kodzie :]


Cytat(potreb @ 15.11.2009, 17:16:07 ) *
I dodatkowo możesz napisać coś więcej oprócz tego, że nie działa, jak się przejawia nie działanie...


A to przepraszam,
Nie edytuje rekordów
potreb
Popatrz tu:
  1. #
  2. <select name="id"> '; // Do czego select się odnosi
  3. $zapytanie = 'SELECT `id`, `tytul`, `tresc` FROM `news` WHERE `id`="'.$_POST['id'].'"';
  4. $idzapytania = mysql_query($zapytanie);
  5. while ($wiersz = mysql_fetch_row($idzapytania))
  6. echo '<input type="hidden" name="id" value="'.$wiersz[0].'"> // input i select ma taką samą nazwę name=id


Twój kod to sieczka. Nie wiem po co w action masz &edytuj=1 a później &edytuj=2.
Przed UPDATE możesz dać print_r($_POST); żeby zobaczyć jakie dane zostają przesłane, czy id jest zgodny itp.
Możesz sobie nawet zapytanie wyświetlić, żeby zobaczyć czy aby wszystkie dane tam trafiają.
adrianozo
Nadal nie mogę sobie z tym poradzić... Może ktoś naprowadzi?
patryk9200
ale chłopie namieszałeś biggrin.gif zaraz to przebuduję...

trochę pozmieniałem, zobacz czy działa, za mało danych dałes więc robiłem trochę na oślep, jak wywołujesz edycję newsów? tzn. podaj adres www a dokładniej to co masz po "?"
  1. <?php
  2. include('panel/dane.php');
  3. function ConnectMysql ()
  4. {
  5. $connect = mysql_connect('localhost', 'root', 'pass') or die('Nie można połączyć się z bazą danych. Przepraszamy za kłopoty');
  6. $db = mysql_select_db('db') or die('Nie można połączyć się z bazą danych. Przepraszamy za kłopoty');
  7. global $connect;
  8. }
  9. function CloseMysql()
  10. {
  11. global $connect;
  12. mysql_close($connect);
  13. }
  14. if(!$_POST['id'] && $_GET['edytuj'] == NULL)
  15. {
  16. echo '<center><form action="index.php?page=edytujnews&edytuj=1" method="post">
  17. <select name="id"> ';
  18. ConnectMysql ();
  19. $zapytanie = "SELECT `id`, `tytul` FROM `news` ORDER BY `id` DESC";
  20. $idzapytania = mysql_query($zapytanie);
  21. while ($wiersz = mysql_fetch_array($idzapytania))
  22. {
  23. echo '<option value="'.$wiersz[0].'"> '.$wiersz[1].'</option>';
  24. }
  25. CloseMysql ();
  26. </select>
  27. <input type="submit" value="Wybierz">
  28. <br>
  29. </form>';
  30. echo'<br><FORM><INPUT TYPE="button" VALUE="Wr?? do Panelu Administratora" onclick="history.go(-1)"></FORM></center>';
  31. }
  32. elseif($_POST['id'] && $_GET['edytuj'] == 1)
  33. {
  34. echo '<center><form action="index.php?page=edytujnews&edytuj=2" method="post">
  35. <select name="id"> ';
  36. ConnectMysql ();
  37. $zapytanie = 'SELECT `id`, `tytul`, `tresc` FROM `news` WHERE `id`="'.$_POST['id'].'"';
  38. $idzapytania = mysql_query($zapytanie);
  39. while ($wiersz = mysql_fetch_row($idzapytania))
  40. {
  41. echo '<input type="hidden" name="id" value="'.$wiersz[0].'">
  42. <br><br><input type="text" name="tytul" value="'.$wiersz[1].'" size="20"> <br>
  43. <textarea name="tresc" cols="20" rows="20">'.$wiersz[2].'</textarea> ';
  44. }
  45. CloseMysql();
  46. echo '<br>
  47. <input type="submit" value="Edytuj"><br>
  48. </form>';
  49. echo'<br><FORM><INPUT TYPE="button" VALUE="Wr?? do Panelu Administratora" onclick="history.go(-2)"></FORM></center>';
  50. }
  51. elseif($_POST['id'] && $_GET['edytuj'] == 2)
  52. {
  53. ConnectMysql();
  54. $zapytanie = 'UPDATE `news` SET `tytul`= "'.$_POST['tytul'].'", `tresc`= "'.$_POST['tresc'].'" WHERE `id`="'.$_POST['id'].'"';
  55. $idzapytania = mysql_query($zapytanie);
  56. CloseMysql ();
  57. if($idzapytania)
  58. {
  59. echo '<center>Zedytowano news\'a<br><br><FORM><INPUT TYPE="button" VALUE="Wr?? do Panelu Administratora" onclick="history.go(-3)"></FORM></center>';
  60. }
  61. else
  62. { ConnectMysql();
  63. echo mysql_errno() . ": " . mysql_error() . "\n";
  64. CloseMysql();
  65. }
  66. }
  67.  
  68. ?>
adrianozo
Dzięki ale nie skorzystam z twojej pomocy ponieważ nie lubię pracować na funkcjach.

Kod wygląda tak:

  1. <?php
  2. $connect = mysql_connect('localhost', 'root', 'pass') or die('Nie mo&#x17C;na poł&#x105;czyc si&#x119; z baz&#x105; danych. Przepraszamy za kłopoty');
  3. $db = mysql_select_db('db') or die('Nie mo&#x17C;na poł&#x105;czyc si&#x119; z baz&#x105; danych. Przepraszamy za kłopoty');
  4. include('panel/dane.php');
  5. if(!$_POST['id'])
  6. {
  7. echo '<center><form action="index.php?page=edytujnews&edytuj=1" method="post">
  8. <select name="id"> ';
  9. $zapytanie = "SELECT `id`, `tytul` FROM `news` ORDER BY `id` DESC";
  10. $idzapytania = mysql_query($zapytanie);
  11. while ($wiersz = mysql_fetch_array($idzapytania))
  12. echo '<option value="'.$wiersz[0].'">('.$wiersz[0].') '.$wiersz[1].'</option>';
  13. </select>
  14. <input type="submit" value="Wybierz">
  15. <br>
  16. </form>';
  17. echo'<br><FORM><INPUT TYPE="button" VALUE="Wr&#xF3;&#x107; do Panelu Administratora" onclick="history.go(-1)"></FORM></center>';
  18. }
  19. elseif($_POST['id'])
  20. {
  21. if($_POST['edycja'])
  22. {
  23. $zapytanie = 'UPDATE `news` SET `tytul`= "'.$_POST['tytul'].'", `tresc`= "'.$_POST['tresc'].'" WHERE `id`="'.$_POST['id'].'"';
  24. $idzapytania = mysql_query($zapytanie);
  25. echo '<center>Zedytowano news\'a<br><br><FORM><INPUT TYPE="button" VALUE="Wr&#xF3;&#x107; do Panelu Administratora" onclick="history.go(-3)"></FORM></center>';
  26. }
  27. else
  28. {
  29. echo '<center><form action="index.php?page=edytujnews&edytuj=2" method="post">
  30. <select name="id"> ';
  31. $zapytanie = 'SELECT `id`, `tytul`, `tresc` FROM `news` WHERE `id`="'.$_POST['id'].'"';
  32. $idzapytania = mysql_query($zapytanie);
  33. while ($wiersz = mysql_fetch_row($idzapytania))
  34. echo '<input type="hidden" name="id" value="'.$wiersz[0].'">
  35. <input type="hidden" name="edycja" value="wartość" />
  36. <br><br><input type="text" name="tytul" value="'.$wiersz[1].'" size="20">
  37. <br>
  38. <textarea name="tresc" cols="20" rows="20">'.$wiersz[2].'</textarea>
  39. <br>
  40. <input type="submit" value="Edytuj"><br>
  41. </form>';
  42. echo'<br><FORM><INPUT TYPE="button" VALUE="Wr&#xF3;&#x107; do Panelu Administratora" onclick="history.go(-2)"></FORM></center>';
  43. }
  44. }
  45. mysql_close($connect);
  46. ?>


Działa prawie tak jak chcę tylko nie wiem dlaczego ale dalej pokazuje pustą listę rozwijalną. Proszę o pomoc smile.gif

patryk9200
ehh.......tongue.gif
niech ci będzie masz tu bez funkcji:
  1. <?php
  2. include('panel/dane.php');
  3. if(!$_POST['id'] && $_GET['edytuj'] == NULL)
  4. {
  5. echo '<center><form action="index.php?page=edytujnews&edytuj=1" method="post">
  6. <select name="id"> ';
  7. $connect = mysql_connect('localhost', 'root', 'pass') or die('Nie można połączyć się z bazą danych. Przepraszamy za kłopoty');
  8. $zapytanie = "SELECT `id`, `tytul` FROM `news` ORDER BY `id` DESC";
  9. $idzapytania = mysql_query($zapytanie);
  10. while ($wiersz = mysql_fetch_array($idzapytania))
  11. {
  12. echo '<option value="'.$wiersz[0].'"> '.$wiersz[1].'</option>';
  13. }
  14. mysql_close($connect);
  15. </select>
  16. <input type="submit" value="Wybierz">
  17. <br>
  18. </form>';
  19. echo'<br><FORM><INPUT TYPE="button" VALUE="Wr?? do Panelu Administratora" onclick="history.go(-1)"></FORM></center>';
  20. }
  21. elseif($_POST['id'] && $_GET['edytuj'] == 1)
  22. {
  23. echo '<center><form action="index.php?page=edytujnews&edytuj=2" method="post">
  24. <select name="id"> ';
  25. $connect = mysql_connect('localhost', 'root', 'pass') or die('Nie można połączyć się z bazą danych. Przepraszamy za kłopoty');
  26. $zapytanie = 'SELECT `id`, `tytul`, `tresc` FROM `news` WHERE `id`="'.$_POST['id'].'"';
  27. $idzapytania = mysql_query($zapytanie);
  28. while ($wiersz = mysql_fetch_row($idzapytania))
  29. {
  30. echo '<input type="hidden" name="id" value="'.$wiersz[0].'">
  31. <br><br><input type="text" name="tytul" value="'.$wiersz[1].'" size="20"> <br>
  32. <textarea name="tresc" cols="20" rows="20">'.$wiersz[2].'</textarea> ';
  33. }
  34. mysql_close($connect);
  35. echo '<br>
  36. <input type="submit" value="Edytuj"><br>
  37. </form>';
  38. echo'<br><FORM><INPUT TYPE="button" VALUE="Wr?? do Panelu Administratora" onclick="history.go(-2)"></FORM></center>';
  39. }
  40. elseif($_POST['id'] && $_GET['edytuj'] == 2)
  41. {
  42. $connect = mysql_connect('localhost', 'root', 'pass') or die('Nie można połączyć się z bazą danych. Przepraszamy za kłopoty');
  43. $zapytanie = 'UPDATE `news` SET `tytul`= "'.$_POST['tytul'].'", `tresc`= "'.$_POST['tresc'].'" WHERE `id`="'.$_POST['id'].'"';
  44. $idzapytania = mysql_query($zapytanie);
  45. mysql_close($connect);
  46. if($idzapytania)
  47. {
  48. echo '<center>Zedytowano news\'a<br><br><FORM><INPUT TYPE="button" VALUE="Wr?? do Panelu Administratora" onclick="history.go(-3)"></FORM></center>';
  49. }
  50. else
  51. { $connect = mysql_connect('localhost', 'root', 'pass') or die('Nie można połączyć się z bazą danych. Przepraszamy za kłopoty');
  52. echo mysql_errno() . ": " . mysql_error() . "\n";
  53. mysql_close($connect);
  54. }
  55. }
  56.  
  57. ?>
  58.  
adrianozo
Wiesz co... dzięki, ale wolałbym na moim przykładzie, bo tutaj wiem co i jak...
Gdybyś był tak łaskaw na moim przykładzie sprawić, aby ta pusta lista rozwijalna zniknęła?? biggrin.gif
patryk9200
hehe ależ to twój kod z poprawioną masą błędów, inaczej ci tego nie zrobie. Po prostu go poukładałem, poprawiłemi dodałem co trzeba i gotowe....
adrianozo
Nie skorzystam ponieważ nie działa, a poza tym wole własny... no nic muszę się sam pomęczyć

Po przeanalizowaniu kodu html doszedłem do wniosku, że winna jest linia 32

  1. <select name="id"> ';


Po usunięciu tej linijki działa smile.gif

TEMAT CLOSE
potreb
Cytat(adrianozo @ 16.11.2009, 17:36:02 ) *
Nie skorzystam ponieważ nie działa, a poza tym wole własny... no nic muszę się sam pomęczyć

Po przeanalizowaniu kodu html doszedłem do wniosku, że winna jest linia 32

[PHP] pobierz, plaintext
  1. <select name="id"> ';
[PHP] pobierz, plaintext

Po usunięciu tej linijki działa smile.gif


Tak to jest jak się czyta między wierszami.
adrianozo
Sory, ale po prostu nic dla mnie nie było błędne w tym wcześniejszym kodzie...
Dzięki za pomoc, ale nie zrozumiałem tamtego postu i się wkurzałem, ale w sumie czasami lepiej samemu do tego dojść... będę pamiętam na przyszłość smile.gif Oczywiście leci pomógł
potreb
Chodzi bardziej o to, abyś sam szukał rozwiązań, zanim napisz o problemie.
Pamiętaj, że stosowanie print_r($_POST); var_dump($zmienna); echo mysql_error(); error_reporting(E_ALL); ułatwia pracę. Gdybyś zastosowal odrazu print_r($_POST) zobaczyłbyś, że POST['id'] jest puste, dlatego nie spełnia warunku.
Stosuj dla kodu tabulatory dla każdej klamry, aby kod był czytelniejszy i dodatkowo komentuj co dana częśc skryptu robi, bardzo się przydaje, jak człowiek zapomina po pięcu browarach co tam napisał.

Pozdro
adrianozo
Dzięki za podpowiedzi..... chyba zacznę je stosować smile.gif
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.