Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySql]Edycja newsów
adrianozo
post 15.11.2009, 16:26:49
Post #1





Grupa: Zarejestrowani
Postów: 733
Pomógł: 4
Dołączył: 11.11.2009

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


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:





--------------------
Go to the top of the page
+Quote Post
potreb
post 15.11.2009, 17:16:07
Post #2





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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


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...

Ten post edytował potreb 15.11.2009, 17:17:28


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

Go to the top of the page
+Quote Post
adrianozo
post 15.11.2009, 17:26:20
Post #3





Grupa: Zarejestrowani
Postów: 733
Pomógł: 4
Dołączył: 11.11.2009

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


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


--------------------
Go to the top of the page
+Quote Post
potreb
post 15.11.2009, 18:09:19
Post #4





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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


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ą.

Ten post edytował potreb 15.11.2009, 18:10:19


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

Go to the top of the page
+Quote Post
adrianozo
post 15.11.2009, 21:15:28
Post #5





Grupa: Zarejestrowani
Postów: 733
Pomógł: 4
Dołączył: 11.11.2009

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


Nadal nie mogę sobie z tym poradzić... Może ktoś naprowadzi?


--------------------
Go to the top of the page
+Quote Post
patryk9200
post 15.11.2009, 22:16:45
Post #6





Grupa: Zarejestrowani
Postów: 319
Pomógł: 4
Dołączył: 7.02.2009
Skąd: pless

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


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. ?>


Ten post edytował patryk9200 15.11.2009, 22:18:58
Go to the top of the page
+Quote Post
adrianozo
post 16.11.2009, 15:46:48
Post #7





Grupa: Zarejestrowani
Postów: 733
Pomógł: 4
Dołączył: 11.11.2009

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


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



--------------------
Go to the top of the page
+Quote Post
patryk9200
post 16.11.2009, 16:46:32
Post #8





Grupa: Zarejestrowani
Postów: 319
Pomógł: 4
Dołączył: 7.02.2009
Skąd: pless

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


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.  
Go to the top of the page
+Quote Post
adrianozo
post 16.11.2009, 16:55:52
Post #9





Grupa: Zarejestrowani
Postów: 733
Pomógł: 4
Dołączył: 11.11.2009

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


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


--------------------
Go to the top of the page
+Quote Post
patryk9200
post 16.11.2009, 17:01:44
Post #10





Grupa: Zarejestrowani
Postów: 319
Pomógł: 4
Dołączył: 7.02.2009
Skąd: pless

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


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....
Go to the top of the page
+Quote Post
adrianozo
post 16.11.2009, 17:36:02
Post #11





Grupa: Zarejestrowani
Postów: 733
Pomógł: 4
Dołączył: 11.11.2009

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


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


Ten post edytował adrianozo 16.11.2009, 17:37:20


--------------------
Go to the top of the page
+Quote Post
potreb
post 16.11.2009, 19:17:51
Post #12





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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


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.


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

Go to the top of the page
+Quote Post
adrianozo
post 16.11.2009, 19:26:30
Post #13





Grupa: Zarejestrowani
Postów: 733
Pomógł: 4
Dołączył: 11.11.2009

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


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ł


--------------------
Go to the top of the page
+Quote Post
potreb
post 16.11.2009, 19:34:53
Post #14





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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


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


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

Go to the top of the page
+Quote Post
adrianozo
post 16.11.2009, 19:39:15
Post #15





Grupa: Zarejestrowani
Postów: 733
Pomógł: 4
Dołączył: 11.11.2009

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


Dzięki za podpowiedzi..... chyba zacznę je stosować smile.gif


--------------------
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: 5.07.2025 - 11:57