Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pętla - nie zmienia się treść w inpucie.
Forum PHP.pl > Forum > Przedszkole
Slide
Cześć wszystkim.

Na forum jestem świeżakiem, ale i w PHP również. Co prawda jakąś styczność już z nim miałem, ale postanowiłem że w długie jesienne wieczory "od nowa" do niego usiąde i postaram się łyknąć trochę więcej.

A teraz do sedna.
Piszę (chcę napisać) malutkiego CMSa pozwalającego na dodawanie newsów i obsługę galerii stron internetowych.
Pracę rozpocząłem od wg. mnie najtrudniejszej części czyli od zarządzania galerią.

Zczytywanie z bazy już mam, dodawanie zdjęć i galerii też. Problem tylko z usuwaniem galerii. Mianowicie mam pętlę która zczytuje z bazy wszystkie galerie i przy każdej tworzy przycisk usuń. Sama jakby idea tego wszystkiego działa, problem w tym że postanowiłem zrobić w jquery okienko które wyrzuci powiadomienie że jesteś świadom że właśnie wywalam z bazy całą galerię i wszystkie fotki w niej, bla bla...
Okej wszedłem na stronkę jqueryUI i znalazłem tam dialog który mi się spodobał.

Implementacja do projektu i... Nie działa. Mianowicie formularz się wysyła ale ciągle usuwa tylko jedną galerię. Jeśli formularz byl submitowany przez php, a raczej html wszystko działalo poprawnie. Teraz już działać nie chce. Przerobiłem (zakomentowałem) skrypt usuwający galerię i okazuje się że ID galerii bez względu na to przy której kliknę usuń zawsze jest takie samo. Tzn pierwsze które "wpisze" się do inputa w pętli while.

Co do samego formularza w pętli, to korzystam z niego żeby zmienna wysyłana była przez POST, ponieważ linka z GETem łatwo będzie można samemu "skonstruować". Próbowałem też użyć sesji, ale wtedy zmienna wynosiła zawsze tyle, ile wpisało się przy ostatnim obrocie pętli.

Kody źródłowe:

index.php
  1. <!doctype html>
  2.  
  3. <html lang="pl">
  4. <head>
  5. <meta charset="utf-8" />
  6. <title>SimpleCMS</title>
  7. <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" />
  8. <link rel="stylesheet" type="text/css" href="styles/style-admin.css" />
  9. <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
  10. <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
  11. <script>
  12. $(function() {
  13. $( "#tabs" ).tabs();
  14. });
  15.  
  16. $(function() {
  17. $( "#okno" ).dialog({
  18. autoOpen: false,
  19. height: 400,
  20. width: 500,
  21. modal: true,
  22. buttons: {
  23. Tak: function() {
  24. document.getElementById('MsgForm').submit();
  25. },
  26. Anuluj: function() {
  27. $( this ).dialog( "close" );
  28. }
  29. }
  30. });
  31.  
  32. $( ".button" )
  33. .button()
  34. .click(function() {
  35. $( "#okno" ).dialog( "open" );
  36. });
  37. });
  38. </script>
  39.  
  40. </head>
  41. <body>
  42. <div id="logo"></div>
  43.  
  44. <div id="okno" title="Usuwanie galerii.">
  45. <p><span class="ui-icon ui-icon-alert" style="float: left; margin: 0 7px 20px 0;"></span>Czy na pewno chcesz usunąć wybraną galerię?</p>
  46. </div>
  47.  
  48. <div id="tabs">
  49. <ul>
  50. <li><a href="#z1">Aktualności</a></li>
  51. <li><a href="#z2">Strony</a></li>
  52. <li><a href="#z3">Galeria</a></li>
  53. <li><a href="#z4">Slider</a></li>
  54. <li><a href="#z5">Ustawienia</a></li>
  55. </ul>
  56.  
  57. <div id="z1">
  58. </div>
  59.  
  60. <div id="z2">
  61. </div>
  62.  
  63. <div id="z3">
  64. <table id="row">
  65. <thead>Twoje aktualne galerie:</thead>
  66. <br><br>
  67. <tbody>
  68. <?php
  69. include ("$_SERVER[DOCUMENT_ROOT]/admin/gallery.php");
  70. ?>
  71. </tbody>
  72. </table>
  73. </div>
  74.  
  75. <div id="z4">
  76. </div>
  77.  
  78. <div id="z5">
  79. </div>
  80.  
  81. </div>
  82.  
  83. </body>
  84. </html>


galerry.php
  1. <?php
  2. include ("$_SERVER[DOCUMENT_ROOT]/admin/config.php");
  3. $dbc=mysqli_connect($host, $user, $password, $name) or die ('Błąd połączenia z bazą danych: '.mysqli_connect_error());
  4.  
  5. $result = mysqli_query($dbc, 'SELECT * FROM galleries');
  6. $num = mysqli_num_rows($result);
  7.  
  8. if ($num > 0) {
  9. echo "<tr class='orange'>";
  10. echo "<td>Nazwa</td>";
  11. echo "<td>Opis</td>";
  12. echo "<td>Data</td>";
  13. echo "<td>Zdjęcia</td>";
  14. echo "<td>Operacje</td>";
  15. echo "</tr>";
  16.  
  17. while ($row = mysqli_fetch_array($result)) {
  18. echo "<tr id="."border".">";
  19. echo "<td>".$row['nazwa']."</td>";
  20. echo "<td>".$row['opis']."</td>";
  21. echo "<td>".$row['data']."</td>";
  22. $nr = $row['id'];
  23. $fotos = mysqli_query($dbc, "SELECT idgal FROM foto WHERE idgal = '$nr'");
  24. $idgal = mysqli_num_rows($fotos);
  25. echo "<td>".$idgal."</td>";
  26. echo "<td>
  27. <form action='delete/gallery.php' method='POST' id='MsgForm'>
  28. <input type='hidden' name='id' value=".$row['id']."></input>
  29. <input class='button' value='Usun'></input>
  30. </form>
  31. </td>";
  32. echo "</tr>";
  33.  
  34. }} else {
  35. echo "Brak utworzonych galerii!";
  36. }
  37. ?>


/delete/gallery.php - usuwanie galerii
  1. <?php
  2. /*
  3. include ("$_SERVER[DOCUMENT_ROOT]/admin/config.php");
  4. $dbc=mysqli_connect($host, $user, $password, $name) or die ('Błąd połączenia z bazą danych: '.mysqli_connect_error());
  5.  
  6. $id = $_POST['id'];
  7.  
  8. $gal = mysqli_query($dbc, "DELETE FROM galleries WHERE id ='$id' LIMIT 1");
  9. $foto = mysqli_query($dbc, "DELETE FROM foto WHERE idgal ='$id'");
  10.  
  11. $adres = 'http://'.$_SERVER['SERVER_NAME'].'/admin/#z3';
  12. header ('Location: '.$adres);
  13.  
  14. $id = '';
  15. */
  16.  
  17. $zmienna = $_POST['id'];
  18. echo $zmienna;
  19. $zmienna = '';
  20. ?>


Mam nadzieję, że problem jest zrozumiały. Umieściłem to tutaj, ale być może problem leży po stronie skryptu jQuery, więc proszę moderatora o przeniesienie w razie potrzeby.

Pozdrawiam, Maciek (Slide)
nospor
<form action='delete/gallery.php' method='POST' id='MsgForm'>
document.getElementById('MsgForm').submit();

Zawsze submitujesz forma o ID MsgForm, a ze u Ciebie wszystkie formy to MsgForm, wiec js bierze pierwszy, jaki znajdzie.

Id to ID. Ma byc unikalnego dla kazdego elementu.

ps:
nie: <input type='hidden' name='id' value=".$row['id']."></input>
a: <input type='hidden' name='id' value=".$row['id']." />
Analogicznie drugie pole input
Jakies podstawy HTML mozna by wpierw poznac.

Przenosze na przedszkole. Problem z PHP na chwile obecną nie ma zadnego zwiazku.
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.