Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Po odświeżeniu strony skrypt wykonuje się sam
Forum PHP.pl > Forum > Przedszkole
bolus150
Problem jest następujący. Jeżeli wpisze jakiegoś newsa to go oczywiście doda, ale jak np odświeżę stronę na tym pliku to dodaje 2 taki sam rekord do bazy wie ktoś może jak sobie z tym poradzić i jeszcze nie chcę wyświetlać komunikatu np "News dodany poprawnie" Pomoże ktoś?

  1. <?php
  2.  
  3. include ('menu.php');
  4. include ('header.php');
  5. echo '<form action="add.php" method="post">
  6. <br/>Autor <input type="text" value="'.$user_data['user_name'].'" disabled="true"><br>
  7. Tytuł: <input type="text" name="tytul">
  8. <br/>Treść <textarea name="tresc" ></textarea>
  9. <br/><input type="submit" value="Dodaj"></form>'
  10. ?>
  11.  
  12. <?php
  13. include("polacz.php");
  14. if(isset($_POST['tresc']))
  15. {
  16. $query = mysql_query("insert into news values('','".$_POST['tytul']."',now(),'".$user_data['user_name']."','".$_POST['tresc']."')");
  17. }
  18. ?>
  19. <?php
  20. include 'wys.php';
  21.  
  22. ?>
fastlone
Jest to raczej logiczne, że przy odświeżaniu strony wykonuje Ci zapytanie na nowo, gdyż dane z formularza zostają przesłane do strony ponownie.
Spróbuj zrobić tak:
  1. <?php
  2. include("polacz.php");
  3. if(isset($_POST['tresc']))
  4. {
  5. $query = mysql_query("insert into news values('','".$_POST['tytul']."',now(),'".$user_data['user_name']."','".$_POST['tresc']."')");
  6. header('Location: add.php');
  7. }
  8. ?>


I jeśli między wklejonymi kawałkami kodu PHP nie ma żadnego html'a, to usuń te wszystkie <?php i ?> znajdujące się w środku, a zostaw tylko te na początku i końcu.
bolus150
Chodzi o to, że przy odświeżeniu nie trzeba nic wpisywać w formularz, a nowy rekord doda.


  1. <?
  2.  
  3. include 'header.php';
  4. include 'config.php';
  5.  
  6. if($_SESSION['logged'])
  7. {
  8.  
  9. include 'polacz.php';
  10. if(isset($_GET['newsy']) && $_GET['newsy']=='edytuj' && isset($_GET['id']))
  11. {
  12. $id=$_GET['id'];
  13. $link=mysql_query("SELECT * FROM news WHERE id='$id'");
  14. $wiersz=mysql_fetch_array($link);
  15.  
  16. echo '<b>Edytuj newsa:</b><br>';
  17. echo '<form method="POST" action="index.php?newsy=wyedytuj&id='.$wiersz['id'].'">
  18. Tytul:<br>
  19. <input type="text" name="nazwa" size="64" value="'.$wiersz['nazwa'].'"><br>
  20. Tresc:<br>
  21. <textarea rows="5" name="tresc" cols="42">'.$wiersz['tresc'].'</textarea><br>
  22. <input type="submit" value="EDYTUJ">
  23. </form>';
  24. }
  25. elseif(isset($_GET['newsy']) && $_GET['newsy']=='wyedytuj' && isset($_GET['id']))
  26. {
  27. $nazwa=$_POST['nazwa'];
  28. $tresc=$_POST['tresc'];
  29. $id=$_GET['id'];
  30.  
  31. mysql_query("UPDATE `karol_piekarski_cba_pl`.`news` SET `nazwa` = '$nazwa', tresc='$tresc' WHERE `news`.`id` = '$id'");
  32. echo 'Pomyslnie wyedytowalem newsa! <br> Jego nowy tytul to: <b>'.$nazwa.'</b>, a tresc: <b>'.$tresc.'</b>';
  33.  
  34. }
  35. elseif(isset($_GET['newsy']) && $_GET['newsy']=='usun' && isset($_GET['id']))
  36. {
  37. $id=$_GET['id'];
  38.  
  39. mysql_query("DELETE FROM news WHERE id='$id'");
  40. echo 'Pomyslnie usunalem newsa numer '.$id.'!';
  41.  
  42. }
  43. echo '<br>';
  44. echo '<b>Newsy:</b><br>';
  45. $link=mysql_query('SELECT * FROM news where autor = '$wiersz['autor']' ORDER BY id desc');
  46. while($wiersz=mysql_fetch_array($link))
  47. {
  48.  
  49. echo'<table border="1" width="150px"><tr><br>
  50. <th>Autor<td>'.$wiersz['autor'].'<tr></th>
  51. <th>Tytuł<td>'.$wiersz['tytul'].'<tr></th>
  52. <th>Data<td>'.$wiersz['data'].'<tr></th>
  53. <th><td>
  54. <a href="index.php?newsy=edytuj&id='.$wiersz['id'].'">Edytuj</a>
  55. <a href="index.php?newsy=usun&id='.$wiersz['id'].'">Usuń</a><tr></th>';
  56. }
  57.  
  58.  
  59. }
  60. ?>


Z tamtym sobie jakoś poradziłem, teraz mam taki problem. Mianowicie chciałbym, żeby z bazy wypisywało mi tylko newsy użytkownika zalogowanego.

Wydaje mi się, że znaczenie może mieć ten :

'SELECT * FROM news where autor = '$wiersz['autor']' ORDER BY id desc'

Zmieniłem zapytanie na :

$link=mysql_query('SELECT * FROM news where autor = "$autor" ORDER BY id desc');
$autor = $wiersz['autor'];


I nie wyświetla nic. :/
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.