Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML] formularze
Forum PHP.pl > Forum > Przedszkole
taktu
Witam, moj skrypt odczytuje, dodaje i usuwa dane z plików o roznej budowie. Do dodawania i usuwania danych używam formularzy i tu pojawia się problem. Kiedy po zalogowaniu (logowanie na sesjach) po raz pierwszy dodaje lub usuwam wpis, skrypt otwiera nowe okno i w nim wykonuje kod. Kolejne dodanie wpisu wykonuje się juz poprawnie w tym samym oknie, natomiast kiedy po kilku (nawet po 1 czy 2) 'dodaniach' usune ktorys wpis znow sytuacja sie powtarza i skrypt otwiera nowe okno i tam wykonuje kod. Podobnie jesli najpierw usuwam a pozniej dodaje. Czy moze to byc spowodowane uzywaniem zarowno GET jak i POST na tej samej podstronie? Dla jasnosci GET uzywam w polaczeniu z instrukcja case aby includowac odpowiednie funkcje np. /usuwanie.php?akcja=UsuwanieZpliku1, natomiast POST do edycji pliku.
MiFlo
Ujawnij nam kawałek kodu, może coś się poradzi smile.gif
taktu
Wlasnie staram sie wybrac te istotne fragmenty bo troche juz tego nabazgralem winksmiley.jpg wiec to bedzie mniej wiecej tak:

dodawanie.php
  1. <?php
  2. require('includes/SessionCheck.php');
  3. require('includes/header.php');
  4. require('includes/funkcje.php');
  5.  
  6. ?>
  7. <div id="menu">
  8. <?
  9. require('includes/menu.php');
  10. ?>
  11. </div>
  12.  
  13. <div id="tresc">
  14. <?
  15. require('includes/add.php');
  16. ?>
  17. </div>
  18. <?
  19. require('includes/footer.php');
  20. ?>


menu.php
  1. <? 
  2. echo ('<a href="index.php">Strona glowna</a> &nbsp&nbsp|&nbsp&nbsp');
  3. echo ('<a href="logout.php">Wyloguj</a><br><br>');
  4.  
  5. switch ($_SESSION['poziom']) {
  6. case 4:
  7. ?>
  8.  
  9. <ul>
  10. <li>Pokoje
  11. <ul><li><a href='wyswietlanie.php?typ=p' >Wyswietlanie</a>
  12. <li><a href='dodawanie.php?typ=p' >Dodawanie</a>
  13. <li>Edycja
  14. <li><a href='usuwanie.php?typ=p'>Usuwanie</a>
  15. </ul>
  16. ...
  17. <?
  18.  break;
  19. case 3:
  20. ...
  21. ?>


add.php
  1. <?php
  2.  
  3.  
  4. switch ($_GET['typ']) 
  5. {
  6. case 'p';
  7.  
  8. ?>
  9.  
  10. <form name= "dodajpokoj" method="post" target="dodawanie.php">
  11.  
  12. <fieldset><legend><b>Dodawanie nowego pokoju</b></legend><br>
  13. Nr. pokoju: <input type="text" name="nr" maxlength="3" size="6"><br>
  14. Nr. telefonu: <input type="text" name="tel" maxlength="3" size="6"><br>
  15. Dostepnosc:<br> 
  16. <input type="radio" name="dost" value="1">Tak<br>
  17. <input type="radio" name="dost" value="0">Nie<br>
  18. Gotowosc:<br>
  19. <input type="radio" name="got" value="1">Tak<br>
  20. <input type="radio" name="got" value="0">Nie<br>
  21. </fieldset>
  22.  
  23. <input type="submit" name="dodajp" value="potwierdz">&nbsp
  24. <input type="reset" value="wyczyść">
  25.  
  26. </form>
  27. <?
  28. $wyk = 0;
  29. if ($_POST['dodajp'] == 'potwierdz')
  30. {
  31. $wyk = 1;
  32. cyfry ($_POST['nr']);
  33. cyfry ($_POST['tel']);
  34. }
  35.  
  36. if ($wyk == 1 and (empty($_POST['nr']) or empty($_POST['tel']) ))
  37.  {
  38. echo('<b>podano nie kompletne dane!</b>');
  39. }
  40. else if ($wyk == 1 and !empty($_POST['nr']) and !empty($_POST['tel']) )
  41. {
  42. $plik = "dane/pokoje.txt";
  43. $file = file($plik);
  44.  
  45. foreach ($file as $pozycja)
  46. {
  47. $tablica = explode('|&&|', $pozycja);
  48. if ($tablica[0] == $_POST['nr'])
  49. {
  50. echo('<b>Pokoj o podanym numerze juz istnieje!</b>');
  51. exit();
  52. }
  53. else if ($tablica[1] == $_POST['tel'])
  54. {
  55. echo('<b>Pokoj o podanym nr. telefonu juz istnieje!</b>');
  56. exit();
  57. }
  58. }
  59.  
  60.  
  61. $spacja = '|&&|';
  62. $karetka = PHP_EOL;
  63. $dane = $_POST['nr'].$spacja.$_POST['tel'].$spacja.$_POST['dost'].$spacja.$_POST['got'].$karetka;
  64. $fp1 = fopen($plik, "a");
  65. fputs($fp1, $dane);
  66. fclose($fp1); 
  67. echo('<b>Dodano nowy pokoj!</b>');
  68. }
  69.  
  70. break;
  71. }
  72.  
  73. ?>
nitek
z tego co kojarze, <form> nie ma atrybutu 'target', tylko action...\action zawsze mozna pozostawić w formie pusty, wtedy skryot pozostanie na stronie z której został wywołany..

z innej beczki - jeśli dajesz juz coś takiego, jak &nbsp, zawsze dawaj po tym średnik - &nbsp; ponieważ niektóre przeglądarki wyświetlą zwykły tekst na stronie...


edit:

przepraszam - target jest, ale określa nazwę ramki, w której ma zostać wyświetlony formularz po 'obrobieniu' winksmiley.jpg
http://www.w3.org/TR/html401/present/frames.html#target-info
taktu
Wielkie dzieki, nie mam pojecia skad ten target sie tam wzial wstydnis.gif plus wyslany 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.