Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][MySQL][PHP] Problem ze zdarzeniem w Select
Forum PHP.pl > Forum > Przedszkole
nighttrain
Witam,

mam taki problemik, mam skrypcik, dzięki, któremu z pola select wybieram sobie rekord, który chce zedytować, wtedy wyświetla mi się formularz, w którym są pobrane dane wybranego rekordu, mam pod to podpięty skrypcik Java Script. Jeżeli sobie cos zmienię i klikne na submit pokaże się komunikat JS : "Dane zostały uaktualnione!" w else mam natomiast skrypcik, który przy nieudanej próbie wyświetli: "Niestet nie udało się". Cały problem polega na tym iż jak np wybiorę rekord z selecta oraz ponownie wybiorę jakis inny to pokaże się komunikat: "Dane zostały uaktualnione" ;/. To ma miejsce w przeglądarce Chrom. W firefoxie niby działa ok - moge kilka razy wybierać z selecta nazwy i dopiero jak kliknę submit to mi wyswietli lub nie komunikat. Proszę o pomoc jak się z tym uporać. Domyślam się, że to wina tego kawałka kodu <select name="id_programu" onchange="this.form.submit()"> dokładnie this.form.submit, jednak jak wykasuję te linijkę to nie będę mógł zmieniać wartości z selecta..

Zamieszczam skrypt PHP, oraz 2 te dwa skrypty JS:
  1. $msql = mysql_connect('localhost', 'root', 'qazwsx');
  2. mysql_select_db('komputery');
  3.  
  4. //DEKLARACJA ZMIENNEJ
  5.  
  6. $wynik = mysql_query("SELECT * FROM komputery")
  7. or die('Blad zapytania');
  8.  
  9. echo("<center>");
  10. echo "<table cellpadding=\"7\" border=1>";
  11. echo("<tr>");
  12. echo("<h1>");
  13. <form action="" method="post">
  14. <select name="id_programu" onchange="this.form.submit()">
  15. <option value="">Wybierz program do edycji:</option>';
  16.  
  17. $res = mysql_query('select id_programu, nazwa_programu, system_operacyjny from oprogramowanie ORDER BY nazwa_programu');
  18. while ($row = mysql_fetch_assoc($res))
  19. echo '<option value="'.$row['id_programu'].'"'.($row['id_programu'] == $_GET['id_programu'] ? ' selected="selected"' : '').'>'.$row['nazwa_programu'].' '.$row['system_operacyjny'].'</option>';
  20. echo '</select>
  21. <input type="hidden" name="a" value="edit";
  22. </form><br />';
  23. echo ("</center>");
  24.  
  25. $a = trim($_POST['a']);
  26. $id_programu = trim($_POST['id_programu']);
  27.  
  28. switch ($a) {
  29. case 'edit':
  30. /* zapytanie do tabeli */
  31. $wynik = mysql_query("SELECT * FROM oprogramowanie WHERE
  32. id_programu='$id_programu'")
  33. or die('Blad zapytania');
  34.  
  35. //wyswietlamy wyniki, sprawdzamy, czy zapytanie zwrócilo wartosc wieksza od 0
  36.  
  37. echo '<script type="text/javascript" src="skrypty_java/czyjestespewien.js"></script>';
  38.  
  39. if(mysql_num_rows($wynik) > 0) {
  40. /* odczytujemy zawartosc wiersza z tabeli */
  41. $r = mysql_fetch_assoc($wynik);
  42. /* wczytujemy dane do formularza */
  43. /*
  44.   w formularz znajduja sie ukryte pola "a"
  45.   z wartoscia "save" i pole "id" z wartoscia
  46.   zmiennej id
  47.   */
  48. echo("<center>");
  49. echo ("<h2><b>Prosze uaktualnic dane: </b></h2><br />");
  50. echo '<form action="" method="post" onSubmit="return confirmSubmit();">
  51. <input type="hidden" name="a" value="save" />
  52. <input type="hidden" name="id_programu" value="'.$id_programu.'" />
  53. <input type="hidden" size="40" name="id_programu"
  54. value="'.$r['id_programu'].'" /><br />
  55. <b>Nazwa programu:</b><br />
  56. <input type="text" size="40" name="nazwa_programu"
  57. value="'.$r['nazwa_programu'].'" /><br />
  58. <b>Wersja programu:</b><br />
  59. <input type="text" name="system_operacyjny"
  60. value="'.$r['system_operacyjny'].'" /><br />
  61.  
  62. <input type="image" src="graphics/Kopia button_uaktualnij.jpg" alt="Wyslij" value="uaktualnij">
  63.  
  64. </form>';
  65. echo("</center>");
  66. }
  67. break;
  68.  
  69. case 'edit-selected';
  70. if (empty($id));
  71. break;
  72.  
  73. case 'save':
  74.  
  75. /* odbieramy zmienne z formularza */
  76. $id_programu = $_POST['id_programu'];
  77. $nazwa_programu = trim($_POST['nazwa_programu']);
  78. $system_operacyjny = trim($_POST['system_operacyjny']);
  79.  
  80. // uaktualniamy tabele test o nowe dane ktore wpisalismy do formularza
  81. if (mysql_query("UPDATE oprogramowanie SET id_programu='$id_programu', nazwa_programu='$nazwa_programu', system_operacyjny='$system_operacyjny' WHERE id_programu='$id_programu'")) {
  82.  
  83. echo '<script type="text/javascript" src="skrypty_java/alertdaneuaktualnione.js"></script>';
  84.  
  85. }
  86. else echo '<script type="text/javascript" src="skrypty_java/nieudalosie.js"></script>';
  87. }
  88. ?>


skrypt "nieudalosie.js"
  1. window.location.reload();
  2. alert("Nie udało się zaktualizować, proszę spróbuj ponownie");


skrypt "alertdanezostalyuaktualnione"
  1. alert("Dane zostały uaktualnione!");
wiiir
zamknij input linia 22
  1. <input type="hidden" name="a" value="edit";


Takie rzeczy moga sie dziac z powyzszego powodu, dlatego iz niektore przegladarki jak FF czasem sam zamyka niepozamykane elementy (czasami robi to dobrze czasami zle tongue.gif) dlatego na FF moze dzialac ci dobrze, chrome jak tego nie zrobi mozliwe ze formularze sa jakos polaczone dlatego wyzwala sie update bo wyslany zostaje nie ten formularz
nighttrain
Hehe, faktycznie, dzięki bardzo. Słuchaj tak przy okazji mam problem z dołączeniem funkcji w JS, żeby po kliknięciu w "wykasuj wpis" spytała mnie, czy na pewno usunąć - Mam kod JS o nazwie confirsubmit:
  1. function confirmSubmit() {
  2. if (confirm("Czy jesteś pewien tego kroku?")) return true;
  3. else return false;
  4. }

dodaje go tutaj w kodzie w tym miejscu: (ale nie dziala)
  1. echo '<form action="usunrelacyjna.php" method="post" onSubmit="return confirmSubmit();">

oczywiście przed tym dołączenie:
  1. echo '<script type="text/javascript" src="skrypty_java/confirmSubmit.js"></script>';


oto cały kod:
  1. <?php include "top.php"; ?>
  2. <?php
  3.  
  4. $msql = mysql_connect('localhost', 'root', 'qazwsx');
  5. mysql_select_db('komputery');
  6.  
  7. $wynik = mysql_query("SELECT * FROM komputery")
  8. or die('Blad zapytania');
  9.  
  10. echo'<form action="" method="post">
  11. <select STYLE="width: 230px" name="id" onchange="this.form.submit() ">
  12. <option value="">Wybierz komputer:</option>';
  13.  
  14.  
  15. $res = mysql_query('select id, nazwa_komputera from komputery ORDER by nazwa_komputera');
  16. while ($row = mysql_fetch_assoc($res))
  17. echo '<option value="'.$row['id'].'"'.($row['id'] == $_GET['id'] ? ' selected="selected"' : '').'>'.$row['nazwa_komputera'].'</option>';
  18. echo '</select>
  19. <input type="hidden" name="a" value="edit" />
  20. </form><br />';
  21. echo ("</center>");
  22.  
  23. $a = trim($_POST['a']);
  24. $id = trim($_POST['id']);
  25.  
  26. switch ($a) {
  27. case 'edit':
  28.  
  29. $wynik = mysql_query("SELECT * FROM komputery WHERE id='$id'")
  30. or die('Blad zapytania');
  31.  
  32. // dolaczenie js do dolnego onsubmit formy z ptyaniem czy na pewno?
  33. echo '<script type="text/javascript" src="skrypty_java/onsubmit.js"></script>';
  34.  
  35. if(mysql_num_rows($wynik) > 0) {
  36.  
  37. $r = mysql_fetch_assoc($wynik);
  38.  
  39. echo ("<center>");
  40. echo ("<h2><b>Prosze uaktualnic dane: </b></h2><br />");
  41. echo '<form action="" method="post" onSubmit="return confirmSubmit();">
  42. <input type="hidden" name="a" value="save" />
  43. <input type="hidden" name="id" value="'.$id.'" />
  44. <input type="hidden" size="40" style=" font-family:Verdana, Arial, Helvetica, sans-serif; font-size:16px; color:#000000; border: 2px solid #red" name="id"
  45. value="'.$r['id'].'" /><br />
  46. <b>Nazwa komputera:</b><br />
  47. <input type="text" size="40" style=" font-family:Verdana, Arial, Helvetica, sans-serif; font-size:16px; color:#000000; border: 2px solid #red" name="nazwa_komputera"
  48. value="'.$r['nazwa_komputera'].'" /><br />
  49. <b>Nazwa dzialu:</b><br />
  50. <input type="text" size="40" style=" font-family:Verdana, Arial, Helvetica, sans-serif; font-size:16px; color:#000000; border: 2px solid #red" name="nazwa_dzialu"
  51. value="'.$r['nazwa_dzialu'].'" /><br />
  52. <b>Imie i nazwisko usera:</b><br />
  53. <input type="text" size="40" style=" font-family:Verdana, Arial, Helvetica, sans-serif; font-size:16px; color:#000000; border: 2px solid #red" name="imie_nazwisko_usera"
  54. value="'.$r['imie_nazwisko_usera'].'" /><br />
  55. <b>Adres IP:</b><br />
  56. <input type="text" size="40" style=" font-family:Verdana, Arial, Helvetica, sans-serif; font-size:16px; color:#000000; border: 2px solid #red" name="adres_ip"
  57. value="'.$r['adres_ip'].'" /><br />
  58. <b>System operacyjny:</b><br />
  59. <input type="text" size="40" style=" font-family:Verdana, Arial, Helvetica, sans-serif; font-size:16px; color:#000000; border: 2px solid #red" name="system_operacyjny"
  60. value="'.$r['system_operacyjny'].'" /><br />
  61. <b>Mac adres:</b><br />
  62. <input type="text" size="40" style=" font-family:Verdana, Arial, Helvetica, sans-serif; font-size:16px; color:#000000; border: 2px solid #red" name="mac_adress"
  63. value="'.$r['mac_adress'].'" /><br />
  64. <b>ilosc RAM:</b><br />
  65. <input type="text" size="40" style=" font-family:Verdana, Arial, Helvetica, sans-serif; font-size:16px; color:#000000; border: 2px solid #red" name="ilosc_ram"
  66. value="'.$r['ilosc_ram'].'" /><br />
  67. <b>Procesor:</b><br />
  68. <input type="text" size="40" style=" font-family:Verdana, Arial, Helvetica, sans-serif; font-size:16px; color:#000000; border: 2px solid #red" name="procesor"
  69. value="'.$r['procesor'].'" /><br />
  70. <b>Model komputera:</b><br />
  71. <input type="text" size="40" style=" font-family:Verdana, Arial, Helvetica, sans-serif; font-size:16px; color:#000000; border: 2px solid #red" name="model_komputera"
  72. value="'.$r['model_komputera'].'" /><br />
  73.  
  74. <input type="image" src="graphics/Kopia button_uaktualnij.jpg" alt="Wyslij" value="uaktualnij">
  75.  
  76. </form>';
  77. echo ("</center>");
  78. }
  79. break;
  80.  
  81. case 'edit-selected';
  82. if (empty($id));
  83. break;
  84.  
  85. case 'save':
  86.  
  87. $id = $_POST['id'];
  88. $nazwa_komputera = trim($_POST['nazwa_komputera']);
  89. $nazwa_dzialu = trim($_POST['nazwa_dzialu']);
  90. $imie_nazwisko_usera = trim($_POST['imie_nazwisko_usera']);
  91. $adres_ip = trim($_POST['adres_ip']);
  92. $system_operacyjny = trim($_POST['system_operacyjny']);
  93. $mac_adress = trim($_POST['mac_adress']);
  94. $ilosc_ram = trim($_POST['ilosc_ram']);
  95. $procesor = trim($_POST['procesor']);
  96. $model_komputera = trim($_POST['model_komputera']);
  97.  
  98.  
  99. mysql_query("UPDATE komputery SET id='$id', nazwa_komputera='$nazwa_komputera', nazwa_dzialu='$nazwa_dzialu',imie_nazwisko_usera='$imie_nazwisko_usera', adres_ip='$adres_ip',system_operacyjny='$system_operacyjny', mac_adress='$mac_adress', ilosc_ram='$ilosc_ram', procesor='$procesor', model_komputera='$model_komputera' WHERE id='$id'")
  100. or die('Blad zapytania');
  101. //echo nl2br("\n");
  102. echo '<script type="text/javascript" src="skrypty_java/alertdaneuaktualnione.js"></script>';
  103. echo '<script type="text/javascript" src="skrypty_java/reloadsite.js"></script>';
  104.  
  105. break;
  106. }
  107. ?>
  108. <?php include "bottom.php"; ?>
wiiir
ja bym to zrobil tak

JS
  1.  
  2. function confirmSubmit() {
  3. if (confirm("Czy jesteś pewien tego kroku?")) {
  4. // zalezy z czego korzystasz :)
  5. $("form[name=form_submit_update]").submit(); //jquery
  6. document.form_submit_update.submit(); // normalna metoda
  7. }


FORM
  1. <form action="" method="post" name="form_submit_update">
  2. <input type="hidden" name="a" value="save" />
  3. <input type="hidden" name="id_programu" value="'.$id_programu.'" />
  4. <input type="hidden" size="40" name="id_programu"
  5. value="'.$r['id_programu'].'" /><br />
  6. <b>Nazwa programu:</b><br />
  7. <input type="text" size="40" name="nazwa_programu"
  8. value="'.$r['nazwa_programu'].'" /><br />
  9. <b>Wersja programu:</b><br />
  10. <input type="text" name="system_operacyjny"
  11. value="'.$r['system_operacyjny'].'" /><br />
  12.  
  13. <input type="image" src="graphics/Kopia button_uaktualnij.jpg" alt="Wyslij" value="uaktualnij" onClick="confirmSubmit();">
  14.  
  15. </form
nighttrain
Niestety, ani ta metoda z jquery, ani zwykła nie wdraża nic nowego (nic się nie dzieje), jest tak jak poprzednio. Pokaże cały kod z zastosowaniem Twoich rad:

  1. <?php
  2.  
  3. $msql = mysql_connect('localhost', 'root', 'qazwsx');
  4. mysql_select_db('komputery');
  5.  
  6. //SEKCJA IMPLEMENTACJI KODU DLA DELETE (DEL)
  7. $a = "";
  8. if (!empty($_GET['a']))
  9. {
  10. $a = trim($_GET['a']);
  11. $id = trim($_GET['id']);
  12. }
  13. elseif(!empty($_REQUEST['a']))
  14.  
  15. {
  16. $a = trim($_REQUEST['a']);
  17. $id = trim($_GET['id']);
  18. }
  19. if($a != "")
  20. {
  21. if($a == 'del' and !empty($id)) {
  22.  
  23. /* usuwamy rekord */
  24. if (mysql_query("DELETE FROM rel_komputer_oprogramowanie WHERE id='$id'")) {
  25.  
  26. echo '<script type="text/javascript" src="skrypty_java/alertdaneuaktualnione.js"></script>';
  27. }
  28.  
  29. }
  30.  
  31. if($a == 'edit' and !empty($id)) {
  32.  
  33. $wynik = mysql_query("SELECT komputery.nazwa_komputera, oprogramowanie.nazwa_programu, oprogramowanie.system_operacyjny, rel_komputer_oprogramowanie.komputer_id, rel_komputer_oprogramowanie.program_id, rel_komputer_oprogramowanie.zainstalowany FROM komputery, oprogramowanie, rel_komputer_oprogramowanie WHERE komputery.id = rel_komputer_oprogramowanie.komputer_id AND oprogramowanie.id_programu = rel_komputer_oprogramowanie.program_id AND rel_komputer_oprogramowanie.id='$id'")
  34. or die('Blad zapytania');
  35.  
  36. echo '<script type="text/javascript" src="jquery/confirmSubmit.js"></script>';
  37. if(mysql_num_rows($wynik) > 0) {
  38.  
  39. $r = mysql_fetch_assoc($wynik);
  40.  
  41. echo('<a name="edit"><br></a>');
  42. echo '<form action="usunrelacyjna.php" method="post" name="form_submit_update">
  43. <input type="hidden" name="a" value="save" />
  44. <input type="hidden" name="komputer_id" value="'.$r['komputer_id'].'" />
  45. <input type="hidden" name="program_id" value="'.$r['program_id'].'" />
  46. <input type="hidden" name="id" value="'.$id.'" />
  47. <h2>Prosze zedytować dane:</h2><br />
  48. <b>Nazwa Komputera:</b><br />
  49. <input type="text" size="50" style=" font-family:Verdana, Arial, Helvetica, sans-serif; font-size:16px; color:#000000; border: 2px solid #red" name="komputer_name"value="'.$r['nazwa_komputera'].'" /><br />
  50. <b>Nazwa Programu:</b><br />
  51. <input type="text" size="50" style=" font-family:Verdana, Arial, Helvetica, sans-serif; font-size:16px; color:#000000; border: 2px solid #red" name="program_name"
  52. value="'.$r['nazwa_programu'].'" /><br />
  53. <b>Wersja programu:</b><br />
  54. <input type="text" size="50" style=" font-family:Verdana, Arial, Helvetica, sans-serif; font-size:16px; color:#000000; border: 2px solid #red" name="program_name"
  55. value="'.$r['system_operacyjny'].'" /><br />
  56. <b>Zainstalowany:</b><br />
  57. <input type="text" size="50" style=" font-family:Verdana, Arial, Helvetica, sans-serif; font-size:16px; color:#000000; border: 2px solid #red" name="zainstalowany"
  58. value="'.$r['zainstalowany'].'" /><br />
  59. <input type="image" src="graphics/Kopia button_uaktualnij.jpg" alt="Wyslij" value="popraw" onClick="confirmSubmit();">
  60. </form>';
  61. }
  62. }
  63. elseif($a == 'save') {
  64. /* odbieramy zmienne z formularza */
  65. $komputer_id = $_POST['komputer_id'];
  66. $program_id = trim($_POST['program_id']);
  67. $system_operacyjny = $_POST['system_operacyjny'];
  68. $id = trim($_POST['id']);
  69. $zainstalowany = trim($_POST['zainstalowany']);
  70.  
  71. /* uaktualniamy tabele test o nowe dane ktore wpisalismy do formularza*/
  72. mysql_query("UPDATE rel_komputer_oprogramowanie SET komputer_id='$komputer_id', program_id='$program_id' WHERE komputer_id='$komputer_id'")
  73. or die('Blad zapytania');
  74. mysql_query("UPDATE rel_komputer_oprogramowanie SET zainstalowany='$zainstalowany' WHERE id='$id'") or die('Blad zapytania');
  75.  
  76. echo nl2br("\n");
  77. echo 'DANE ZOSTALY POPRAWNIE ZAKTUALIZOWANE!';
  78. echo '<script type="text/javascript" src="skrypty_java/reloadsite.js"></script>'; // przeładowuje stronę, aby odświerzyć wyniki
  79. }
  80. }
  81.  
  82. $wynik = mysql_query("SELECT komputery.nazwa_komputera, oprogramowanie.nazwa_programu, oprogramowanie.system_operacyjny, rel_komputer_oprogramowanie.id, rel_komputer_oprogramowanie.zainstalowany FROM komputery, oprogramowanie, rel_komputer_oprogramowanie WHERE komputery.id = rel_komputer_oprogramowanie.komputer_id AND oprogramowanie.id_programu = rel_komputer_oprogramowanie.program_id ORDER BY nazwa_programu")
  83. or die('Blad zapytania');
  84.  
  85. //jezeli wynik jest pozytywny > 0, to wyswietlamy dane
  86.  
  87. echo "<table cellpadding=\"0\" cellspacing=\"0\" border=1>";
  88. echo "<tr><td colspan=4 bgcolor=\"#a7a7a7\"><b>Programy zainstalowane na danych komputerach</b></td></tr>";
  89. $deinstalled = 0;
  90. echo "<tr class='colheader'><th nowrap class='colheader' valign='top' align='left'>Operacja</th>";
  91. echo "<th nowrap class='colheader' valign='top' align='left'>Nazwa programu</th>";
  92. echo "<th nowrap class='colheader' valign='top' align='left'>Wersja programu</th>";
  93. echo "<th nowrap class='colheader' valign='top' align='left'>Powiazanie z</th>";
  94. echo "</tr>";
  95. while($r = mysql_fetch_assoc($wynik)) {
  96. if($deinstalled == 0 and $r['zainstalowany'] == 0)
  97. {
  98. echo "<tr><td colspan=4 bgcolor=\"#a7a7a7\"><b>Programy odinstalowane</b></td></tr>";
  99. $deinstalled = 1;
  100. }
  101. echo "<tr>";
  102. echo "<td>";
  103. echo "<a href=\"usunrelacyjna.php?a=del&amp;id={$r['id']}#edit\">WYKASUJ WPIS</a>
  104. </td>";
  105. echo "<td>".$r['nazwa_programu']."</td>";
  106. echo "<td>".$r['system_operacyjny']."</td>";
  107. echo "<td>".$r['nazwa_komputera']."</td>";
  108.  
  109. echo "</tr>";
  110. }
  111. echo "</table>";
  112. ?>
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.