Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skrypt na UPDATE, DELETE i INSERT danych do MySQL.
Forum PHP.pl > Forum > PHP
serekpl
Cześć mam mały problem i nie wiem jak sobie z nim poradzić. Odpowiedzi szukałem przez funkcje SZUKAJ, na innych forach oraz studiując inne skrypty o podobnym działaniu, jednak moja wiedza jest nadal zbyt mała żeby zgadnąć co jest nie tak.

TABELA SQL
  1. CREATE TABLE `calendar` (
  2. `id_eventu` INT(11) NOT NULL AUTO_INCREMENT,
  3. `id_spektaklu` INT(11) NOT NULL,
  4. `event` text NOT NULL,
  5. `spektakl` text NOT NULL,
  6. `lang` text NOT NULL,
  7. PRIMARY KEY (`id_eventu`)
  8. ) ENGINE=MyISAM;



Połączenie z bazą danych nawiązane pomyślnie, zmienne metodą GET i POST również przechodzą.

  1. <?php
  2. $url = 'localhost';
  3. $login = 'test';
  4. $pass = 'test';
  5. mysql_connect($url,$login,$pass);
  6.  
  7. //Przejecie zmiennych metoda GET i POST
  8. $lang = $_GET['lang'];
  9. $id_eventu = $_GET['id_eventu'];
  10. $id_spektaklu = $_GET['id_spektaklu'];
  11. $event = $_GET['event'];
  12. $spektakl = $_GET['spektakl'];
  13.  
  14. $langP = $_POST['langP'];
  15. $id_spektakluP = $_POST['id_spektakluP'];
  16. $eventP = $_POST['eventP'];
  17. $spektaklP = $_POST['spektaklP'];
  18. ?>


Skrypt, który powinien modyfikować dane w tabeli MYSQL:

  1. <?php
  2.  
  3. //modyfikuj bazę danych
  4. switch($action) {
  5. case('DELETE'):
  6. $zapytanie="DELETE FROM calendar WHERE id_eventu=$id_eventu";
  7. $wynik = mysql_query($zapytanie);
  8. break;
  9. case('INSERT'):
  10. $zapytanie="INSERT INTO calendar SET id_spektaklu='$id_spektakluP', event='$eventP', spektakl='$spektaklP', lang='$langP'";
  11. $wynik = mysql_query($zapytanie);
  12. break;
  13. case('UPDATE'):
  14. $zapytanie="UPDATE calendar SET id_spektaklu='$id_spektakluP', event='$eventP', spektakl='$spektaklP', lang='$langP' WHERE id_eventu=$id_eventu";
  15. $wynik = mysql_query($zapytanie);
  16. break;
  17. default:  
  18. break;
  19. }
  20.  
  21. ?>



TERAZ FORMULARZ:

  1. <?php
  2.  
  3. if($id_eventu) {
  4. $zapytanie = "SELECT * FROM calendar WHERE id_eventu=$id_eventu";
  5. $wynik = mysql_query($zapytanie);
  6. $row = mysql_fetch_array($wynik);
  7. $akcja = "add.php?lang=$lang&id_spektaklu=$id_spektaklu&action=UPDATE&id_eventu=$id_eventu";
  8. $przycisk = "Update event";
  9. } else {
  10. $akcja = "add.php?lang=$lang&id_spektaklu=$id_spektaklu&action=INSERT";
  11. $przycisk = "Add event";
  12. }
  13.  
  14. ?>


  1. <form method="post" action="<? echo $akcja; ?>" name="form1">
  2.  
  3. <table cellpadding=4 cellspacing=4>
  4. <tr>
  5. <th></th>
  6. </tr>
  7. </thead>
  8.  
  9. <tr >
  10. <td>Spectacle</td>
  11. <td><?php
  12. if($id_spektaklu == 1)
  13. {
  14. echo '<input type="radio" name="id_spektakluP" value="1" checked="checked"> Monsieur et Madame O<br />';
  15. }
  16. elseif($id_spektaklu == 2)
  17. {
  18. echo '<input type="radio" name="id_spektakluP" value="2" checked="checked"> Pierre et Jeanne<br />';
  19. }
  20. else
  21. {
  22. echo '<input type="radio" name="id_spektakluP" value="1" checked="checked"> Monsieur et Madame O<br />';
  23. echo '<input type="radio" name="id_spektakluP" value="2"> Pierre et Jeanne<br />';
  24. } ?>
  25. </tr>
  26. <tr >
  27. <td>Language</td>
  28. <td><?php
  29. if($lang == English)
  30. {
  31. echo '<input type="radio" name="langP" value="',$row['lang'],'" checked="checked"> English<br />';
  32. }
  33. elseif($lang == French)
  34. {
  35. echo '<input type="radio" name="langP" value="',$row['lang'],'" checked="checked"> French<br />';
  36. }
  37. else
  38. {
  39. echo '<input type="radio" name="langP" value="English" checked="checked"> English<br />';
  40. echo '<input type="radio" name="langP" value="French"> French<br />';
  41. } ?></td>
  42. </tr>
  43. <tr >
  44. <td>Event</td>
  45. <td><textarea name="eventP" rows="6" cols="48" wrap="virtual"><?php echo $row['event']; ?></textarea></td>
  46. </tr>
  47. <tr >
  48. <td><?php
  49. if($id_spektaklu == 1)
  50. {
  51. echo '<input type="hidden" name="id_spektakluP" value="Monsieur et Madame O">';
  52. }
  53. elseif($id_spektaklu == 2)
  54. {
  55. echo '<input type="hidden" name="id_spektakluP" value="Pierre et Jeanne">';
  56. }
  57. else
  58. {
  59. echo '<input type="radio" name="id_spektakluP" value="Monsieur et Madame O" checked="checked"> Monsieur et Madame O<br />';
  60. echo '<input type="radio" name="id_spektakluP" value="Pierre et Jeanne"> Pierre et Jeanne<br />';
  61. } ?></td>
  62. </tr>
  63. <tr >
  64. <td><input type="button" value="<? echo $przycisk; ?>" onclick="java script:document.form1.submit()">
  65. <input type="button" value="Cancel" onclick="document.location.href='add.php?lang=<?php echo $lang; ?>&id_spektaklu=<?php echo $id_spektaklu; ?>"></td>
  66. </tr>
  67. </tbody>
  68. </table>
  69.  
  70. </form>


No i wyświetlanie danych z bazy:

  1. <?php
  2.  
  3. //pobierz liste wpisow do wyswietlenia
  4. $zapytanie = "SELECT * FROM calendar WHERE id_spektaklu = '$id_spektaklu' AND lang = '$lang'";
  5. $wynik = mysql_query($zapytanie);
  6.  
  7. ?>
  8.  
  9. <table border="0" cellspacing="0" cellpadding="3" align="center">
  10. <tr>
  11. <td><b>lp.</b></td>
  12. <td colspan="2"> </td>
  13. <td><b>event</b></td>
  14. <td><b>spectacle</b></td>
  15. <td><b>language</b></td>
  16. </tr>
  17.  
  18. <?
  19. $i=1;
  20. while($rekord = @mysql_fetch_array($wynik)) {
  21. echo '<tr><td align="right">'.$i.'.</td>';
  22. echo '<td><a href="add.php?lang=',$lang,'&id_spektaklu=',$id_spektaklu,'&action=UPDATE&id_eventu=',$rekord['id_eventu'],'"><b>Edit</b></td>';
  23. echo '<td ><a href="add.php?action=DELETE&id_eventu=',$rekord['id_eventu'],'"><b>Delete</b></td>';
  24. echo '<td>',$rekord['event'],'</td>';
  25. echo '<td>',$rekord['spektakl'],'</td>';
  26. echo '<td>',$rekord['lang'],'</td>';
  27. echo '</tr>';
  28. $i++;
  29. }
  30.  
  31. ?>
  32. <BR /><BR />
  33. </table>


I zastanawiam się od 5 dni, gdzie tam jest błąd. Piszę ten skrypt chyba z 15 raz od nowa, opierając się o nowe rzeczy, które znajduje w necie. Nic mi to nie daje bo ciągle dochodze do tego momentu i wszystko stoi.

Czy ktoś ma jakieś wskazówki?
Jen
  1. <?php
  2.  
  3. //modyfikuj bazę danych
  4. switch($action) {
  5. case('DELETE'):
  6. $zapytanie="DELETE FROM calendar WHERE id_eventu=$id_eventu";
  7. $wynik = mysql_query($zapytanie);
  8. break;
  9. case('INSERT'):
  10. $zapytanie="INSERT INTO calendar SET id_spektaklu='$id_spektakluP', event='$eventP', spektakl='$spektaklP', lang='$langP'";
  11. $wynik = mysql_query($zapytanie);
  12. break;
  13. case('UPDATE'):
  14. $zapytanie="UPDATE calendar SET id_spektaklu='$id_spektakluP', event='$eventP', spektakl='$spektaklP', lang='$langP' WHERE id_eventu=$id_eventu";
  15. $wynik = mysql_query($zapytanie);
  16. break;
  17. default:  
  18. break;
  19. }
  20.  
  21. ?>


chyba powinno byc:
  1. <?php
  2. switch ($action)
  3. {
  4.  case 'DELETE': costam
  5.  // itd
  6. }
  7. ?>

bez nawiasow.
serekpl
zmieniłem, lecz skrypt nadal nie działa poprawnie.

znalazłem jeszcze jeden błąd.

W formularzu miałem wywoływaną zmienną $AKCJA a w skrypcie używałem $ACTION. Zamieniłem wszędzie na $ACTION i nadal nie działa.

Napisałem cały skrypt od nowa, troche zmodyfikowałem i działa.

Problem występował przez źle napisane zapytanie do bazy MYSQL. Wyciągał nie te rekordy co trzeba.

Pozdrawiam i zachęcam wszystkich do szukania rozwiązań samemu, satysfakcja jest niesamowicie duża 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.