Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Dodawanie podstron problem z odswieżaniem
Forum PHP.pl > Forum > Przedszkole
artekp999
Mam stworzony skrypt dodawania podstron ale jest w nim jeden poważny błąd z którym nie potrafię sobie poradzić. Chodzi o wyświetlenie komunikatu o prawidłowym dodaniu podstrony. Gdy odświeżam w tym czasie stronę to dodaję się takie same podstrony (ta sama treść) ale o innym id. Jak zablokować to dodawanie gdy odświeżam.

Kod dodawania
  1. <?php
  2. $tytul = "Dodaj";
  3. include ('glowne/gora.php');
  4. include("zabezpieczenie.php");
  5. if(isset($_POST['nazwa']))
  6. {
  7. $miejscowosc = strip_tags(htmlspecialchars(mysql_real_escape_string($_POST['miejscowosc'])));
  8. $zdjecie = strip_tags(htmlspecialchars(mysql_real_escape_string($_POST['zdjecie'])));
  9. $szerokosc = strip_tags(htmlspecialchars(mysql_real_escape_string($_POST['szerokosc'])));
  10. $wysokosc = strip_tags(htmlspecialchars(mysql_real_escape_string($_POST['wysokosc'])));
  11. $trescglowna = strip_tags(htmlspecialchars(mysql_real_escape_string($_POST['trescglowna'])));
  12. $trescdodatkowa = strip_tags(htmlspecialchars(mysql_real_escape_string($_POST['trescdodatkowa'])));
  13. $trescdodatkowa1 = strip_tags(htmlspecialchars(mysql_real_escape_string($_POST['trescdodatkowa1'])));
  14. $trescdodatkowa2 = strip_tags(htmlspecialchars(mysql_real_escape_string($_POST['trescdodatkowa2'])));
  15. $trescdodatkowa3 = strip_tags(htmlspecialchars(mysql_real_escape_string($_POST['trescdodatkowa3'])));
  16. $data = date('Y-m-d-G:i:s');
  17. $autor = $_SESSION['nick'];
  18.  
  19.  
  20. }
  21. else
  22. {
  23. echo '<form action="dodajz.php" method="post">
  24. <input type="hidden" name="send" value="1">
  25. Tytuł:<br /><input type="text" name="nazwa" size="50" /></br>
  26. Miejscowość:<br/><select name="miejscowosc">
  27. <option>Andrychów</option>
  28. <option>Bulowice</option>
  29. <option>Inwałd</option>
  30. <option>Kęty</option>
  31. <option>Targanice</option>
  32. <option>Roczyny</option>
  33. <option>Rzyki</option>
  34. <option>Wadowice</option>
  35. <option>Wieprz</option>
  36. </select><br />
  37. Link do zdjęcia:<br /><input type="text" name="zdjecie" size="50" /></br>
  38. Szerokość:<br/><select name="szerokosc">
  39. <option>500</option>
  40. <option>250</option>
  41. </select>
  42. <br>
  43. Wysokość:<br/><select name="wysokosc">
  44. <option>300</option>
  45. <option>500</option>
  46. </select>
  47. <br>
  48. Podpis zdjęcia:<br /><input type="text" name="podpis" size="50" /></br>
  49. Treść główna:<br /><textarea name="trescglowna" cols="50" rows="5" id="textarea" id="textarea"></textarea><br/>
  50. Treść<br /><textarea name="tresc" cols="50" rows="5" id="textarea" id="textarea"></textarea><br/>
  51. Treść dodatkowa:<br /><textarea name="trescdodatkowa" cols="50" rows="5" id="textarea" id="textarea"></textarea><br/>
  52. Treść dodatkowa 1:<br /><textarea name="trescdodatkowa1" cols="50" rows="5" id="textarea" id="textarea"></textarea><br/>
  53. Treść dodatkowa 2:<br /><textarea name="trescdodatkowa2" cols="50" rows="5" id="textarea" id="textarea"></textarea><br/>
  54. Treść dodatkowa 3:<br /><textarea name="trescdodatkowa3" cols="50" rows="5" id="textarea" id="textarea"></textarea><br/>
  55. Zródło:<br /><input type="text" name="zrodlo" size="50" /></br>
  56. <br />Autor: <b>'.$_SESSION['nick'].'</b> <br><input type="hidden" name="autor" value="'.$_SESSION['nick'].'" /><br />
  57. <br /><br />
  58. <input name="dodaj" type="submit" value="Dodaj">
  59. <input name="wyczysc" type="reset" value="Wyczyść">
  60. </form<br /><br />';
  61. }
  62. if((isset($_POST['dodaj'])))
  63. {
  64. if(empty($_POST["nazwa"]) || empty($_POST["miejscowosc"]) || empty($_POST["zdjecie"]) || empty($_POST["szerokosc"]) || empty($_POST["wysokosc"]) || empty($_POST["podpis"]) || empty($_POST["trescglowna"]) and isset($_POST['tresc']))
  65. {
  66. echo 'Nie wypełniono wszystkich pól<br>';
  67. echo '<a href="dodajz.php">Wróć aby poprawnie wypelnic formularz</a>';
  68. }
  69. else
  70. {
  71. $zapytanie = "INSERT INTO `podstrony` (`nazwa`, `miejscowosc`, `zdjecie`, `szerokosc`, `wysokosc`, `podpis`, `trescglowna`, `tresc`, `trescdodatkowa`, `trescdodatkowa1`, `trescdodatkowa2`, `trescdodatkowa3`, `zrodlo` , `autor`, `data`) VALUES ('".$nazwa."', '".$miejscowosc."', '".$zdjecie."', '".$szerokosc."', '".$wysokosc."', '".$podpis."', '".$trescglowna."', '".$tresc."', '".$trescdodatkowa."', '".$trescdodatkowa1."', '".$trescdodatkowa2."', '".$trescdodatkowa3."' , '".$zrodlo."' , '".$autor."', '".$data."')";
  72. $idzapytania = mysql_query($zapytanie) or die(mysql_error());
  73. }
  74. if($_POST['send'])
  75. {
  76. if(isset($idzapytania))
  77. {
  78. if($idzapytania === TRUE)
  79. {
  80. $dane = mysql_fetch_array(mysql_query("select * from podstrony where id=".mysql_insert_id()))or die(mysql_error());
  81. $tyt = $dane['nazwa'];
  82. $mie = $dane['miejscowosc'];
  83. $link=str_replace(" ","_",$tyt);
  84. echo '<font color="green"><b>Dodano nową podstronę.</font><br> Link do podstrony : <br> <input type="text" name="name" readonly="readonly" size="100" value="http://www.dziedzictwo-kulturowe.cba.pl/'.$id.','.$mie.','.$link.'.html" /> </b><br><p>';
  85. echo '<a href="index.php">Wróc na strone główną</a><br>';
  86. echo '<a href="dodajp.php">Dodaj kolejnego newsa</a>';
  87. }
  88. else
  89. {
  90. echo '<font color="red"><b>Nie dodano nowej podstrony. Spróbuj za jakiś czas.</b></font><br />';
  91. echo '<a href="index.php">Wróc na strone główną</a><br>';
  92. }
  93. }
  94. }
  95. }
  96. include ('glowne/stopka.php');
  97. mysql_close($connect);
  98. ?>
yoshinobi
Może spróbuj zrobić przekierowanie spowrotem na strone po prawidłowym dodaniu newsa.
artekp999
ten sposób jest zły ponieważ gdy utworzę podstronę to wyskakuje jeszcze link a bez tego użytkownik nie znalazłby swojej podstrony

TEMAT DO ZAMKNIĘCIA

PORADZIŁEM SOBIE SAM Z PROBLEMEM
blooregard
Cytat
ten sposób jest zły ponieważ gdy utworzę podstronę to wyskakuje jeszcze link a bez tego użytkownik nie znalazłby swojej podstrony


Nie jest zły, a jak najbardziej poprawny. Jeśli podstrona zapisze się prawidłowo do bazy, nic nie stoi na przeszkodzie, by po przekierowaniu ten link wyświetlić, pobierając konieczne informacje z nowo utworzonego rekordu wg. przykładowo takiego schematu:

1. formularz poprawnie wypełniony -> submit() -> zapis do bazy danych

2. przekierowanie na stronę z np. informacją o poprawnym dodaniu (to zabezpieczy przed wysłaniem danych z formularza po odświeżeniu strony)

3. pobierasz z bazy danych ostatnie ID i tworzysz link: "Link do dodanej treści: http://strona.com/pokaz.php?id=[ tu pobrane ID ] "

A jeśli poradziłeś sobie sam, miło byłoby, byś podzielił się swoim rozwiązaniem z innymi, może komuś się przyda na przyszłość.

artekp999
blooregard zrobiłem własnie tak samo jak podałeś
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.