Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] dodawanie, usuwanie, edytowanie rekordów
Forum PHP.pl > Forum > Przedszkole
asiab
Witam. Jestem calkiem zielona z php. Mam zrobic stronke w php zeby wyswietlic baze danych ( zrobiona wczesniej na mysql.cba.pl ) , moc usuwac, dodawac i edytowac rekordy ( wszystko na jednej stronie) . Szukalam sporo na forum ale siedze na tym juz 12 godzine z rzedu i nie udaje mi sie. Napisalam kod na usuwanie i dodawanie. Osobno dzialaja idealnie. Ale jak je lacze na jednej stronie to usuwanie dziala ale dodawac moge tylko jeden rekord ( po dodaniu kolejnego ten poprzedni mi sie usuwa) . Prosze o pomoc ... Z góry dzieki wink.gif
  1. <html>
  2. <head>
  3. <META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=iso-8859-2">
  4. </head>
  5. <body>
  6.  
  7. <table>
  8.  
  9. <?php
  10. $link = mysql_connect("mysql.cba.pl:3306", "nazwa", "haslo")
  11. or die("Brak połączenia z mySQL");
  12.  
  13. mysql_select_db('nazwa_bazy', $link)
  14. or die("Brak połączenia z bazą");
  15.  
  16. $query = "SELECT * FROM baza";
  17. $wynik = mysql_query ($query);
  18.  
  19. if ($_POST['ID'] && $_POST['IMIE'] && $_POST['NAZWISKO'])
  20. {
  21. $sql = "INSERT INTO baza (ID,IMIE,NAZWISKO)VALUES ('" .$_POST['ID']. "' , '" .$_POST['IMIE']. "' , '" .$_POST['NAZWISKO']. "')";
  22. $wynik = mysql_query($sql);
  23.  
  24. }
  25. mysql_close($link);
  26.  
  27. echo '<FORM METHOD="POST">';
  28.  
  29. echo '<table>';
  30. echo '<tr><td>Dodaj nowy rekord</td></tr>';
  31. echo '<tr><td>ID:</td><td>IMIE:</td><td>NAZWISKO:</td></tr>';
  32. echo '<tr><td><INPUT TYPE="text" NAME="ID"></td><td><INPUT TYPE="text" NAME="IMIE"></td><td><INPUT TYPE="text" NAME="NAZWISKO"></td></tr>';
  33.  
  34.  
  35. echo '</table>';
  36. echo '<INPUT TYPE="submit" VALUE="Dodaj">';
  37.  
  38.  
  39.  
  40. echo '</FORM>';
  41.  
  42. ?>
  43.  
  44. <TABLE>
  45. <TR>
  46. <TD><STRONG>ID</STRONG></TD>
  47. <TD><STRONG>IMIE</STRONG></TD>
  48. <TD><STRONG>NAZWISKO</STRONG></TD>
  49. </TR>
  50. <?php
  51. $link = mysql_connect("mysql.cba.pl:3306", "nazwa", "haslo")
  52. or die("Brak połączenia z mySQL");
  53.  
  54. mysql_select_db("nazwa_bazy")
  55. or die("Brak połączenia z bazą");
  56.  
  57. $query = "SELECT * FROM baza";
  58. $wynik = mysql_query($query)
  59. or die("Brak połączenia");
  60.  
  61. while ($row = mysql_fetch_array($wynik)) {
  62. echo "<TR>
  63. <TD>".$row["ID"]."</TD>
  64. <TD>".$row["IMIE"]."</TD>
  65. <TD>".$row["NAZWISKO"]."</TD>
  66. </TR>\n";
  67. }
  68. mysql_close($link);
  69. ?>
  70. </TABLE>
  71.  
  72. <?php
  73.  
  74. $link = mysql_connect("mysql.cba.pl:3306", "nazwa", "haslo")
  75. or die("Brak połączenia z mySQL");
  76.  
  77. mysql_select_db('nazwa_bazy', $link)
  78. or die("Brak połączenia z bazą");
  79.  
  80.  
  81. $result=mysql_query('SELECT * FROM baza');
  82. mysql_query('DELETE FROM baza WHERE ID='.$_POST['ID']);
  83. mysql_close($link);
  84.  
  85. echo('<form method="post">');
  86. echo('<input type="text" name="ID" value="Usun rekord">');
  87. echo '<input type="submit" VALUE="Usun">';
  88. echo('</form>');
  89.  
  90. ?>
  91.  
  92. </body>
  93. </html>
kujol
Po pierwsze ten kod nic tu nie wnosi a po drogie masz dla każdego rekordu id w bazie?
Kshyhoo
Podziel skrypt na moduły w instrukcji IF lub SWITCH a zmienną potrzebną do przełączania przekazuj w linku. Czyli:
  1. <a hreh="index.php?co_robic"=edytuj>EDYTUJ</a> <a hreh="index.php?co_robic=usun">USUŃ</a> // itd...
  2. ...
  3. $co_robic = $_GET["co_robic"];
  4. ...
  5. if ($co_robic="dodaj") {
  6. // tu kod dodawania
  7. } else if ($co_robic="usun") {
  8. // tu kod usuwania
  9. } else if ($co_robic="edytuj") {
  10. // tu kod edytowania
  11. } esle {
  12. // tu tylko pokaż
  13. }

Oczywiście to tylko zarys skryptu. Nie napiszę Ci wszystkiego co i jak, bo przecież masz się nauczyć a nie dostać gotowca smile.gif
YourFrog
@Kshyhoo
Nie podawaj jej takich rozwiązań bo się tak nauczy i później będzie tak robiła. A za 2-3 tygodnie rozrośnie jej się za bardzo plik. Jak się uczy totalnie od zera to lepiej żeby wykorzystała prostą fabrykę bo nawet jeżeli jej nie do końca zrozumie to chociaż będzie miała porządek w kodzie i łatwiej jej się będzie programowało..

@topic
Poniżej zamieszczam kod. Gdy w adresie url podasz adres "index.php" to odpali się metoda IndexController->indexAction(), natomiast dla adresu "index.php?action=delete" odpali się metoda DeleteController->indexAction(). W przypadku podania zupełnie błędnych danych w adresie url odpali się metoda jak przy odwołaniu "index.php".

Oczywiście można ten kod rozbić na poszczególne pliki i utworzyć plik autoloader'a dzięki czemu pozbyjesz się 90% instrukcji warunkowych w swoim kodzie tongue.gif
  1. <?php
  2.  
  3. /**
  4.  * Klasa uruchamiająca odpowiedni kontroller :)
  5.  */
  6. class Factory
  7. {
  8. static public function run($action)
  9. {
  10. $controller = self::getControllerName($action);
  11.  
  12. if( class_exists($controller, true) )
  13. $obj = new $controller();
  14. else
  15. $obj = new IndexController();
  16.  
  17. $obj->indexAction();
  18. }
  19.  
  20. static protected function getControllerName($action)
  21. {
  22. return $action . 'Controller';
  23. }
  24. }
  25.  
  26. /**
  27.  * Interfejs dla kontrollerów
  28.  */
  29. interface Controller
  30. {
  31. public function indexAction();
  32. }
  33.  
  34. /**
  35.  * Podstawowa obsługa, wykona się w przypadku podania nie prawidłowego kontrollera w zmiennej $_GET['action']
  36.  */
  37. class IndexController implements Controller
  38. {
  39. public function indexAction()
  40. {
  41. //Standardowa strona
  42. echo 'index';
  43. }
  44. }
  45.  
  46. /**
  47.  * Obsługa dodawania danych
  48.  */
  49. class InsertController implements Controller
  50. {
  51. public function indexAction()
  52. {
  53. //Strona służąca do dodania
  54. echo 'insert';
  55. }
  56. }
  57.  
  58. /**
  59.  * Obsługa usuwania danych
  60.  */
  61. class DeleteController implements Controller
  62. {
  63. public function indexAction()
  64. {
  65. //Strona służąca do usuwania
  66. echo 'delete';
  67. }
  68. }
  69.  
  70. /**
  71.  * Obsługa aktualizowania danych
  72.  */
  73. class UpdateController implements Controller
  74. {
  75. public function indexAction()
  76. {
  77. //Strona służąca do aktualizowania
  78. echo 'update';
  79. }
  80. }
  81.  
  82. //Wywołanie
  83. if( !isset($_GET['action']) )
  84. $_GET['action'] = 'index';
  85.  
  86. Factory::run($_GET['action']); //Przykładowy link localhost/index.php?action=insert << Dla kontrollera InsertController
Kshyhoo
Przecież jest początkująca a Ty jej z obiektówką wyjeżdżasz?
YourFrog
I co z tego że początkująca ? W javie musiała by się obiektów od samego początku uczyć. Ma błąd bo ma bałagan w kodzie który u początkujących jest normalną rzeczą. Dlatego jak ich uczymy robienia sobie porządku to zróbmy to wmiarę dobrze. Nawet jeżeli nie do końca to zrozumie to będzie mogła tego używać jak przysłowiowa małpa (ja tak na początku programowałem tongue.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.