Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]
Forum PHP.pl > Forum > Przedszkole
saren_as
Witam! Mam takie cos:
  1. <html>
  2. <head>
  3. <title>Prezenty2</title>
  4. </head>
  5.  
  6. <body>
  7. <?php
  8. $hash = $_POST['hash'];
  9. function generateHash()
  10. {
  11.    return md5(time() * rand()); //samo time() nie wystarczy, gdyz jego wartosc zmienia sie co sekunde a to za malo
  12. }
  13.  
  14.  
  15. // pobranie zmiennej globalnej czyj prezent ma byc dodany
  16. $name_losujacy = $_GET['name_losujacy'];
  17. //jesli byl wyslany formularz przechodzimy do obslugi danych
  18. if(isset($_POST['wyslij']))
  19. {
  20.  
  21.    //Obrabiamy wszystkie zmienne przekazane metoda POST
  22.    foreach ($_POST AS $klucz => $wartosc)
  23.    {
  24.        $wartosc= trim($wartosc);//usuwamy biale znaki
  25.          if (get_magic_quotes_gpc())
  26.              $wartosc= stripslashes($wartosc);
  27.        $wartosc=htmlspecialchars($wartosc, ENT_QUOTES);
  28.        $_POST[$klucz]=$wartosc;
  29.    }
  30.  
  31.    $name_gift=$_POST['name_gift'];
  32.    $link_gift=$_POST['link_gift'];
  33.    
  34.    $blad_txt='';
  35.    $blad=false;
  36.    //sprawdzamy czy jest wypelnine pole nazwa prezentu
  37.    if(strlen($name_gift)<3){
  38.        $blad_txt.='Podaj prawidlowa nazwe prezentu<br/>';
  39.        $blad=true;
  40.    }
  41.    
  42.    if(!$blad)
  43.    {
  44.        
  45.        if (  = $hash)    // JAKI WARUNEK MAM TUTAJ WSTAWIC
  46.        {
  47.        echo "Dodano juz taki prezent";
  48.        }
  49.        else
  50.        {
  51.  
  52.        //poprawne dane - robmy z nimi co trzeba (zapisujemy do bazy danych itp.)
  53.  
  54. include('connect.php');
  55.                            
  56. // pobranie zmiennej w celu okreslenia nazwy prezentu oraz linku do niego
  57. $name_gift = $_POST['name_gift'];
  58. $link_gift = $_POST['link_gift'];
  59. $hash = $_POST['hash'];
  60.  
  61. // wykonanie zapytania i dodanie nowego prezentu
  62. $ADD = mysql_query ("INSERT INTO `prezenty` ( `user_name`, `name_gift`, `link_gift`, `hash`) " .
  63.                    "VALUES ('$name_losujacy', '$name_gift', '$link_gift', '$hash')")
  64.  or die (mysql_error());
  65.  
  66.        }
  67.    }
  68.    else
  69.    {
  70.        //cos jest zle – wyswietlamy stosowne komunikaty
  71.        echo $blad_txt;
  72.    }
  73. }
  74.  
  75. else
  76. {
  77.    //wypelniamy zmienne pustymi danymi jesli formularz nie zostal jeszcze wyslany
  78.    $name_gift='';
  79.    $link_gift='';
  80.  
  81. }
  82.  
  83. //wyswietlamy formularz
  84. ?>
  85. <form action="<?php echo "$_SERVER[PHP_SELF]?name_losujacy=$name_losujacy"; ?>" method="POST">
  86. <input type="hidden" name="name_losujacy" /><br />
  87. <h2>Dodaj nowy prezent</h2>
  88. <textarea name="name_gift" value="<?php '.$name_gift.' ?>" rows="4" cols="25">Podaj nazwe prezentu lub/i jego krotki opis...</textarea><br />
  89. Tutaj mozez podac link do zdjecia lub aukcji z prezentem:<br />
  90. <input type="text" size="120" name="link_gift" /><br />
  91. <input type="submit" name="wyslij" value="Dodaj prezent"><br />
  92. <input type="reset" value="Wyczysc" /><br /><br /><br />
  93. <input type="hidden" id="hash" name="hash" value="<?php echo generateHash(); ?>" /><br />
  94. </form>
  95.  
  96. <a href="swieta.html">Wroc do strony glownej</a><br/>
  97.  
  98. </body>
  99. </html>


Problemem bylo to, ze po odswiezeniu strony dodawalo mi jeszcze raz te same dane do bazy. Teraz postepujac zdognie z podpowiedziami z tad podobny temat (@nospor @be2k) stworzylem takie cos jak powyzej. Zamierzony cel osiagnalem w polowie, tzn po odswiezeniu strony dodaje mi sie jeszcze raz nowy rekord, ale z taka sama wartoscia `hash` Teraz tylko nie wiem jak mam zrobic ten warunek, aby jezeli `hash` = '$hash' dodanie do bazy nie zostalo wykonane. Prosze popatrzec na wiersz 43.
Dzieki za pomoc i pozdrawiam!
saren_as
nospor
bylo wiele razy
http://forum.php.pl/index.php?showtopic=44...t=0&start=0
saren_as
OKI poradzilem sobie z tym problemem wedlug zalecen @nospor i @be2k. Jedyne co mnie teraz zastanawia to jak zrobic, aby po dodaniu czegos do bazy danych strona zostala odswiezona i od razu pokazal mi sie nowo dodany wpis?

  1. <html>
  2. <head>
  3. <title>Prezenty2</title>
  4. </head>
  5.  
  6. <body>
  7.  
  8. <?php
  9. // pobranie zmiennych globalnych
  10. @$name_gift = $_POST['name_gift'];
  11. @$link_gift = $_POST['link_gift'];
  12. $name_losujacy = $_GET['name_losujacy'];
  13. @$hash = $_POST['hash'];
  14.  
  15. include('connect.php');
  16.  
  17. // pobranie listy prezentow jednej osoby
  18. $LISTA1 = mysql_query ("SELECT `_id`, `user_name`, `name_gift`, `link_gift` " .
  19.                      "FROM `prezenty` " .
  20.                      "WHERE `user_name` = '$name_losujacy' " .
  21.                      "ORDER BY `_id`")
  22.    or die (mysql_error());
  23.    
  24. $select_1 = '';
  25.  
  26. while ($row = mysql_fetch_array($LISTA1)) {
  27.  
  28. $Id = $row['_id'];
  29. $name_gift = $row['name_gift'];
  30. $link_gift = $row['link_gift'];
  31. $select_1 .=<<<EOD
  32.   <tr>
  33.     <td><center>$Id</center></td>
  34.     <td><center>$name_losujacy</center></td>    
  35.     <td><center>$name_gift</center></td>
  36.     <td><center><a href="$link_gift">link do zdjecia lub aukcji z prezentem</a></center></td>
  37. <td>
  38. <a title="Edytuj" href="edycja.php?edit=edytuj&amp;Id=$Id&amp;name_losujacy=$name_losujacy&amp;name_gift=$name_gift&amp;link_gift=$link_gift"><img border="0" alt="Edytuj" src="application_edit.png" /></a>
  39. <a title="Usun"   href="edycja.php?delete=usun&amp;Id=$Id&amp;name_losujacy=$name_losujacy"><img border="0" alt="Usun" src="application_delete.png" /></a></td>
  40.   </tr>
  41. EOD;
  42. }
  43.  
  44. /*  table_start  */
  45. $table_start=<<<EOD
  46. <h2><center>Lista prezentow</center></h2>
  47. <table width="90%" border="1" cellpadding="2" cellspacing="2" align="center">
  48.   <tr>
  49.     <th  width="10%">Numer prezentu</th>
  50.     <th  width="10%">Imie</th>
  51.     <th  width="45%">Nazwa prezentu</th>
  52.     <th> Link do prezentu</th>
  53.     <th  width="10%">Opcje</th>
  54.   </tr>
  55. EOD;
  56.  
  57. /*  table_end  */
  58. $table_end =<<<EOD
  59.   </table>
  60. EOD;
  61. echo $table_start;
  62. echo $select_1;
  63. echo $table_end;    
  64.    
  65.  
  66. // funkcja zwracajaca losowo wybrany ciag znakow potrzebna do wygenerowania $hash
  67. function generateHash()
  68. {
  69.    return md5(time() * rand()); //samo time() nie wystarczy, gdyz jego wartosc zmienia sie co sekunde a to za malo
  70. }
  71.  
  72. //jesli byl wyslany formularz przechodzimy do obslugi danych
  73. if(isset($_POST['wyslij'])){
  74.  
  75.    //Obrabiamy wszystkie zmienne przekazane metoda POST
  76.    foreach ($_POST AS $klucz => $wartosc)
  77.    {
  78.        $wartosc= trim($wartosc);//usuwamy biale znaki
  79.          if (get_magic_quotes_gpc())
  80.              $wartosc= stripslashes($wartosc);
  81.        $wartosc=htmlspecialchars($wartosc, ENT_QUOTES);
  82.        $_POST[$klucz]=$wartosc;
  83.    }
  84.  
  85.    $name_gift=$_POST['name_gift'];
  86.    $link_gift=$_POST['link_gift'];    
  87.    $blad_txt='';
  88.    $blad=false;
  89.    //sprawdzamy czy jest wypelnine pole nazwa prezentu
  90.    if(strlen($name_gift)<3){
  91.        $blad_txt.='Podaj prawidlowa nazwe prezentu<br/>';
  92.        $blad=true;
  93.    }
  94.                      // DANE SA POPRAWNE WIEC MOZEMY JE ZAPISAC DO BAZY DANYCH
  95. // jezeli zmienna $blad nieistnieje mozemy wykonywac skrypt dalej
  96.    if(!$blad)
  97.    {
  98. include('connect.php');
  99. // tutaj sprawdzam czy unikatowe zmienne $hash nie istnieja juz w bazie danych
  100. //aby nie dopuscic do sytuacji, gdy odswiezymy strone, a formularz zostanie wyslany ponownie
  101. $HASH = mysql_query ("SELECT `hash` AS `_hash` FROM `prezenty` ")
  102.    or die (mysql_error());
  103.    
  104. while ($row = mysql_fetch_array($HASH)) {
  105. $_hash = $row['_hash'];    
  106. }
  107. // oto wlasnie ten warunek ze jezeli zmienna pobrana z DB jest taka sama jaka otrzymalismy z formularza to skrypt dodania sie nie wykona                
  108.        if ($_hash == $hash)
  109.        {
  110.        }
  111.        else
  112.        {
  113. // wszystko jest ok...dane poprawne i nie jest to odswiezenie strony
  114. include('connect.php');
  115. // wykonanie zapytania i dodanie nowego prezentu
  116. $ADD = mysql_query ("INSERT INTO `prezenty` ( `user_name`, `name_gift`, `link_gift`, `hash`) " .
  117.                    "VALUES ('$name_losujacy', '$name_gift', '$link_gift', '$hash')")
  118.  or die (mysql_error());  
  119.        }
  120.    
  121.    }
  122.    else
  123.    {
  124.        //cos jest zle – wyswietlamy stosowne komunikaty
  125.        echo $blad_txt;
  126.    }
  127. }
  128.  
  129. else
  130. {
  131.    //wypelniamy zmienne pustymi danymi jesli formularz nie zostal jeszcze wyslany
  132.    $name_gift='';
  133.    $link_gift='';
  134. }
  135.  
  136. //wyswietlamy formularz
  137. ?>
  138. <form action="<?php echo "$_SERVER[PHP_SELF]?name_losujacy=$name_losujacy"; ?>" method="POST">
  139. <input type="hidden" name="name_losujacy" /><br />
  140. <h2>Dodaj nowy prezent</h2>
  141. <textarea name="name_gift" value="<?php '.$name_gift.' ?>" rows="4" cols="25">Podaj nazwe prezentu lub/i jego krotki opis...</textarea><br />
  142. Tutaj mozez podac link do zdjecia lub aukcji z prezentem:<br />
  143. <input type="text" size="120" name="link_gift" /><br />
  144. <input type="submit" name="wyslij" value="Dodaj prezent"><br />
  145. <input type="reset" value="Wyczysc" /><br /><br /><br />
  146. <input type="hidden" id="hash" name="hash" value="<?php echo generateHash(); ?>" /><br />
  147. </form>
  148.  
  149. <a href="swieta.html">Wroc do strony glownej</a><br/>
  150.  
  151. </body>
  152. </html>
Lion_87
Możesz dodawać przed wyświetlaniem albo Refresh...
saren_as
Jak dodaje to przed wyswietlaniem to raz sie pojawia tabela z prezentami, a po odswiezeniu znika i wogole to jakos dziwnie dziala winksmiley.jpg
Mozesz mi jakos dokladniej podpowiedziec co i jak z tym "wczesniej dodac a potem wyswietlic" Nie wiem, ale problemem moze byc to ze wszystko wykonuje sie na jednej i tej samej stronie (takze sprawdzenie czy w formularzu sa wprowadzone odpowiednie dane)

Ewentualnie co z tym refresh?
Lion_87
Po prostu zamień kolejność kod w którym wyświetlasz dane daj niżej niż ten w którym dodajesz.

LUB

Jezeli poprawnie dodano dane to w echo można Refresh dac
  1. <META HTTP-EQUIV=Refresh CONTENT=\"1; URL=\">
saren_as
Cytat(Lion_87 @ 13.11.2008, 13:48:26 ) *
Po prostu zamień kolejność kod w którym wyświetlasz dane daj niżej niż ten w którym dodajesz.

LUB

Jezeli poprawnie dodano dane to w echo można Refresh dac
  1. <META HTTP-EQUIV=Refresh CONTENT=\"1; URL=\">


Jak zamienilem kolejnosc to mi sie dziwne rzeczy robily. Wiersze od 8 do 61 wstawilem od wiersza 127 i nie dzialalo poprawnie. Wykorzystalem zatem druga opcje i dodalem refresh, ale teraz po nacisnieciu F5 dodaje mi kolejny raz wpis do bazy. Wczesniej sie tego pozbylem w linijce 66 i 112, ale teraz problem wrocil? Jakies pomysly?
Lion_87
To nie wiem.
1. Jeszcze zamiast REFRESH jest header.
2. Możesz zrobić dwa oddzielne pliki
3. Zamiast hash zapisywać usera z min dodania do bazy a potem sprawdzać czy w tej minucie dodał już ten user.
saren_as
Cytat(Lion_87 @ 13.11.2008, 14:23:38 ) *
To nie wiem.
1. Jeszcze zamiast REFRESH jest header.
2. Możesz zrobić dwa oddzielne pliki
3. Zamiast hash zapisywać usera z min dodania do bazy a potem sprawdzać czy w tej minucie dodał już ten user.


Ok dalem refresh i jakos dziala. Nie tak jak bym do konca chcial, ale chyba na jednym pliku nie dam rady zrobic lepiej. Chyba lepszym rozwiazaniem bylo by wykonanie tego na oddzielnych plikach, ale nie bardzo wiem, jak dokonac "podwojnego" przekierowania. Input jest na ta sama strone, aby skrypt przed wyslaniem sprawdzil poprawnosc danych, gdzie nastepnie wykonuje sie skrypt dodajacy dane do bazy. I jak teraz zrobic, zeby zamiast wykonywalo sie dodanie do db, przekierowalo mnie na strone, gdzie bedzie wlasnie ten skrypt?

PS.Dzieki @Lion_87 za pomoc i oczywiscie "pomogl"
Lion_87
Nie za bardzo wiem o co Ci chodzi ale może ustaw w formularzu action na inny plik?
saren_as
Ale ja chcem przed wyslaniem formularza sprawdzic poprawnosc danych, a jest to dokonywane w tym samym pliku. Spojrz wiersz 72-97.
W sumie napewno idzie to zrobic, ale ja jeszcze mam spore problemy z php wiec ciesze sie narazie z tego co mam;)
Bo w sumie mi chodzi, jak zrobic:
if ($warunek) {
// przekierowanie na inna strone gdzie bedzie wszystko wykonywane, ale zeby mi pobralo zmienne z inputa (np. dodanie do bazy danych)
}
Lion_87
przekierowanie czyli refresh?? tyle ze w url wpisujesz ścieżkę do pliku ale żeby zmienne przekazać to musiałbyś je do linku doczepić to jak już to prościej action do tego pliku zrobić i tam sprawdzać...
saren_as
Cytat(Lion_87 @ 13.11.2008, 15:55:50 ) *
przekierowanie czyli refresh?? tyle ze w url wpisujesz ścieżkę do pliku ale żeby zmienne przekazać to musiałbyś je do linku doczepić to jak już to prościej action do tego pliku zrobić i tam sprawdzać...


Masz racje, ze prosciej formularz zostawic pusty, a wszystko robic w innym pliku. Tak tez wyglada wczesniejszy moj skrypt, ale myslalem ze jednak tak bedzie lepiej ... ale sie mylilem winksmiley.jpg
Poprostu jeszcze nie umiem wszystkiego przewidziec jak zaczynam cos robic. No i nie wiem czy jest lepiej rozbijac wszystko na kilka podstron czy lepiej jest w miare mozliwosci probowac wszystko wykonywac na jednym pliku. Potrzebuje jeszcze sporo godzin z php, ale mam nadzieje, ze cos z tego kiedys bedzie.
Dzieki jeszcze raz za pomoc i jak cos to sie tutaj do Was jeszcze napewno zglosze winksmiley.jpg

Tylko jeszcze male pytanko. Czy moge uzyc
echo "<META HTTP-EQUIV=Refresh CONTENT=\"1; URL=\">";
takie cos w skrypcie php poza <head></head> ?

Pozdro!
erix
Cytat
takie cos w skrypcie php poza <head></head> ?

A co ma tu PHP do tego? tongue.gif <meta /> ma być w <head />. Spróbuj tego: http://grizzlyweb.com/webmaster/javascripts/refresh.asp
saren_as
Cytat(erix @ 13.11.2008, 17:48:32 ) *
A co ma tu PHP do tego? tongue.gif <meta /> ma być w <head />. Spróbuj tego: http://grizzlyweb.com/webmaster/javascripts/refresh.asp


Chodzi o to, ze ja, aby to u mnie dzialalo tak jak chcem, musialem zrobic tak:
  1. // PATRZ TUTAJ ...
  2. <html>
  3. <head>
  4. <title></title>
  5. </head>
  6. // ... PATRZ TUTAJ
  7.  
  8. <body>
  9. <?php
  10.        if (@$_hash == $hash)
  11.        {
  12.        
  13.        }
  14.        else
  15.        {
  16.        
  17. // wszystko jest ok...dane poprawne i nie jest to odswiezenie strony
  18. // wykonanie zapytania i dodanie nowego prezentu
  19. $ADD = mysql_query ("INSERT INTO `prezenty` ( `user_name`, `name_gift`, `link_gift`, `hash`) " .
  20.                    "VALUES ('$name_losujacy', '$name_gift', '$link_gift', '$hash')")
  21.  or die (mysql_error());  
  22.  
  23. // PATRZ TUTAJ ...  
  24.      echo "<META HTTP-EQUIV=Refresh CONTENT=\"1; URL=\">";
  25. // ... PATRZ TUTAJ        
  26.  
  27.        }
  28.    }
  29.    else
  30.    {
  31.        //cos jest zle – wyswietlamy stosowne komunikaty
  32.        echo $blad_txt;
  33.    }
  34. }
  35.  
  36. else
  37. {
  38. ?>


i nie znajduje sie to w < /head> tylko w tresci kodu php. No i mi to dziala poprawnie, w ten sposob jak chcialem. No i wlasnie czy jest to dopuszczalne, a jak nie to jakie to niesie za soba skutki?
Pozdrawiam!
erix
Cytat
Chodzi o to, ze ja, aby to u mnie dzialalo tak jak chcem, musialem zrobic tak:

Nie musiałeś. Logikę aplikacji mogłeś zrealizować przed wypluciem dokumentu HTML i np. w jakiejś zmiennej przechowywać komunikat.

Cytat
No i wlasnie czy jest to dopuszczalne, a jak nie to jakie to niesie za soba skutki?


Teoretycznie, działa, ale jeśli chodzi o składnie, to specyfikacja mówi: http://www.w3.org/TR/REC-html40/struct/global.html#h-7.4.4

Chyba wyraźnie napisałem, nie? tongue.gif

Wszelkie operacje związane z wyszukiwaniem/wstawianiem/kasowaniem/parzeniem herbaty wykonuj PRZED wysłaniem jakiegokolwiek dokumentu HTML do użytkownika.
saren_as
[quote name='erix' post='536410' date='14.11.2008, 12:55:56 ']Nie musiałeś. Logikę aplikacji mogłeś zrealizować przed wypluciem dokumentu HTML i np. w jakiejś zmiennej przechowywać komunikat.[/quote]

Mozesz mi w skrocie wyjasnic na podstawie mojego kodu:

[codebox]
  1. <html>
  2. <head>
  3. <title>Prezenty2</title>
  4. </head>
  5.  
  6. <body>
  7.  
  8. <?php
  9. // pobranie zmiennych globalnych
  10. @$name_gift = $_POST['name_gift'];
  11. @$link_gift = $_POST['link_gift'];
  12. $name_losujacy = $_GET['name_losujacy'];
  13. @$hash = $_POST['hash'];
  14.  
  15. include('connect.php');
  16.  
  17. // pobranie listy prezentow jednej osoby
  18. $LISTA1 = mysql_query ("SELECT `_id`, `user_name`, `name_gift`, `link_gift` " .
  19.                      "FROM `prezenty` " .
  20.                      "WHERE `user_name` = '$name_losujacy' " .
  21.                      "ORDER BY `_id`")
  22.    or die (mysql_error());
  23.    
  24. $select_1 = '';
  25.  
  26. while ($row = mysql_fetch_array($LISTA1)) {
  27.  
  28. $Id = $row['_id'];
  29. $name_gift = $row['name_gift'];
  30. $link_gift = $row['link_gift'];
  31. $select_1 .=<<<EOD
  32.   <tr>
  33.     <td><center>$Id</center></td>
  34.     <td><center>$name_losujacy</center></td>    
  35.     <td><center>$name_gift</center></td>
  36.     <td><center><a href="$link_gift">link do zdjecia lub aukcji z prezentem</a></center></td>
  37. <td>
  38. <a title="Edytuj" href="edycja.php?edit=edytuj&amp;Id=$Id&amp;name_losujacy=$name_losujacy&amp;name_gift=$name_gift&amp;link_gift=$link_gift"><img border="0" alt="Edytuj" src="application_edit.png" /></a>
  39. <a title="Usun"   href="edycja.php?delete=usun&amp;Id=$Id&amp;name_losujacy=$name_losujacy"><img border="0" alt="Usun" src="application_delete.png" /></a></td>
  40.   </tr>
  41. EOD;
  42. }
  43.  
  44. /*  table_start  */
  45. $table_start=<<<EOD
  46. <h2><center>Lista prezentow</center></h2>
  47. <table width="90%" border="1" cellpadding="2" cellspacing="2" align="center">
  48.   <tr>
  49.     <th  width="10%">Numer prezentu</th>
  50.     <th  width="10%">Imie</th>
  51.     <th  width="45%">Nazwa prezentu</th>
  52.     <th> Link do prezentu</th>
  53.     <th  width="10%">Opcje</th>
  54.   </tr>
  55. EOD;
  56.  
  57. /*  table_end  */
  58. $table_end =<<<EOD
  59.   </table>
  60. EOD;
  61. echo $table_start;
  62. echo $select_1;
  63. echo $table_end;
  64.  
  65. // funkcja zwracajaca losowo wybrany ciag znakow potrzebna do wygenerowania $hash
  66. function generateHash()
  67. {
  68.    return md5(time() * rand()); //samo time() nie wystarczy, gdyz jego wartosc zmienia sie co sekunde a to za malo
  69. }
  70.  
  71. //jesli byl wyslany formularz przechodzimy do obslugi danych
  72. if(isset($_POST['wyslij'])){
  73.  
  74.    //Obrabiamy wszystkie zmienne przekazane metoda POST
  75.    foreach ($_POST AS $klucz => $wartosc)
  76.    {
  77.        $wartosc= trim($wartosc);//usuwamy biale znaki
  78.          if (get_magic_quotes_gpc())
  79.              $wartosc= stripslashes($wartosc);
  80.        $wartosc=htmlspecialchars($wartosc, ENT_QUOTES);
  81.        $_POST[$klucz]=$wartosc;
  82.    }
  83.  
  84.    $name_gift=$_POST['name_gift'];
  85.    $link_gift=$_POST['link_gift'];    
  86.    $blad_txt='';
  87.    $blad=false;
  88.    //sprawdzamy czy jest wypelnine pole nazwa prezentu
  89.    if(strlen($name_gift)<3){
  90.        $blad_txt.='Podaj prawidlowa nazwe prezentu<br/>';
  91.        $blad=true;
  92.    }
  93.                      // DANE SA POPRAWNE WIEC MOZEMY JE ZAPISAC DO BAZY DANYCH
  94. // jezeli zmienna $blad nieistnieje mozemy wykonywac skrypt dalej
  95.    if(!$blad)
  96.    {
  97. include('connect.php');
  98. // tutaj sprawdzam czy unikatowe zmienne $hash nie istnieja juz w bazie danych
  99. //aby nie dopuscic do sytuacji, gdy odswiezymy strone, a formularz zostanie wyslany ponownie
  100. $HASH = mysql_query ("SELECT `hash` AS `_hash` FROM `prezenty` ")
  101.    or die (mysql_error());
  102.    
  103. while ($row = mysql_fetch_array($HASH)) {
  104. $_hash = $row['_hash'];    
  105. }
  106. // oto wlasnie ten warunek ze jezeli zmienna pobrana z DB jest taka sama jaka otrzymalismy z formularza to skrypt dodania sie nie wykona                
  107.        if (@$_hash == $hash)
  108.        {
  109.        
  110.        }
  111.        else
  112.        {
  113.        
  114. // wszystko jest ok...dane poprawne i nie jest to odswiezenie strony
  115. // wykonanie zapytania i dodanie nowego prezentu
  116. $ADD = mysql_query ("INSERT INTO `prezenty` ( `user_name`, `name_gift`, `link_gift`, `hash`) " .
  117.                    "VALUES ('$name_losujacy', '$name_gift', '$link_gift', '$hash')")
  118.  or die (mysql_error());  
  119.        echo "<META HTTP-EQUIV=Refresh CONTENT=\"1; URL=\">";        
  120.        }
  121.    }
  122.    else
  123.    {
  124.        //cos jest zle – wyswietlamy stosowne komunikaty
  125.        echo $blad_txt;
  126.    }
  127. }
  128.  
  129. else
  130. {
  131.    //wypelniamy zmienne pustymi danymi jesli formularz nie zostal jeszcze wyslany
  132.    $name_gift='';
  133.    $link_gift='';
  134. }
  135.  
  136. //wyswietlamy formularz
  137. ?>
  138. <form action="<?php echo "$_SERVER[PHP_SELF]?name_losujacy=$name_losujacy"; ?>" method="POST">
  139. <input type="hidden" name="name_losujacy" /><br />
  140. <h2>Dodaj nowy prezent</h2>
  141. <textarea name="name_gift" value="<?php '.$name_gift.' ?>" rows="4" cols="25">Podaj nazwe prezentu lub/i jego krotki opis...</textarea><br />
  142. Tutaj mozez podac link do zdjecia lub aukcji z prezentem:<br />
  143. <input type="text" size="120" name="link_gift" /><br />
  144. <input type="submit" name="wyslij" value="Dodaj prezent"><br />
  145. <input type="reset" value="Wyczysc" /><br /><br /><br />
  146. <input type="hidden" id="hash" name="hash" value="<?php echo generateHash(); ?>" /><br />
  147. </form>
  148.  
  149. <a href="swieta.html">Wroc do strony glownej</a><br/>
  150.  
  151. </body>
  152. </html>



Chyba wyraźnie napisałem, nie? tongue.gif

Wszelkie operacje związane z wyszukiwaniem/wstawianiem/kasowaniem/parzeniem herbaty wykonuj PRZED wysłaniem jakiegokolwiek dokumentu HTML do użytkownika.
[/quote]

Tak, wyraznie, ale problem w tym ze nie dla mnie winksmiley.jpg Rozumiem, ze chodzi o to, ze moglem wszystko zbudowac inaczej? Tak jak to jest teraz, to nie ma opcji, abym wstawil tego refresh w innym miejscu? Oki, bo nie chce Cie juz meczyc, ale dzieki za zainteresowanie! Moglem to w sumie tak zrobic, aby nie byl mi potrzebny i bylo by po problemie, ale chcialem sobie zrobic pod gorke, aby spotkac sie z nowymi problemami - dopiero sie ucze.
Pozdro!
erix
Nie będę odrabiał za Ciebie pracy domowej. tongue.gif I tak już wystarczająco wiele powiedziałem. Może ten pseudokod pomoże Ci zrozumieć:

Kod
<?PHP
jakiestam_operacje();
$petlaSieWykona = true;

while($petlaSieWykona){
  $petlaSieWykona = false;
  $iUstawiJakiesDane = 'na takie';
}
?>
<html>
<head></head>
<body>
<?PHP
echo $iUstawiJakiesDane;
?>
</body>
</html>


Cytat
Moglem to w sumie tak zrobic, aby nie byl mi potrzebny i bylo by po problemie, ale chcialem sobie zrobic pod gorke, aby spotkac sie z nowymi problemami - dopiero sie ucze.

Skoro się uczysz, to ucz się lepiej. winksmiley.jpg Rozwiązując kolejne problemy dużo łatwiej rozwiążesz kolejne. winksmiley.jpg

A separując kod w ten sposób będzie Ci łatwiej kiedyś przejść na programowanie w oparciu o frameworki i MVC. winksmiley.jpg
saren_as
Cytat(erix @ 14.11.2008, 14:06:09 ) *
Nie będę odrabiał za Ciebie pracy domowej. tongue.gif

Jestem juz za stary na prace domowe, ale mam nadzieje, ze nie na nauke php itp.

Cytat(erix @ 14.11.2008, 14:06:09 ) *
I tak już wystarczająco wiele powiedziałem. Może ten pseudokod pomoże Ci zrozumieć:

Kod bardzo fajny - dzieki winksmiley.jpg
A czy jest mozliwe cos takiego:
  1. <?PHP
  2.  jakiestam_operacje_1();
  3.  $petlaSieWykona_1 = true;
  4.  
  5.  while($petlaSieWykona_1){
  6.    $petlaSieWykona_1 = false;
  7.    $iUstawiJakiesDane_1 = 'na takie_1';
  8.  }
  9. jakiestam_operacje_2();
  10.   $petlaSieWykona_2 = true;
  11.  
  12.   while($petlaSieWykona_2){
  13.     $petlaSieWykona_2 = false;
  14.     $iUstawiJakiesDane_2 = 'na takie_2';
  15.   }
  16.  ?>
  17.  <html>
  18.  <head></head>
  19.  <body>
  20.  <?PHP
  21. if ($cos) {
  22. echo $iUstawiJakiesDane_1;
  23. } else {
  24.  echo $iUstawiJakiesDane_2;
  25. }
  26.  ?>
  27.  </body>
  28.  </html>


ps. znacie moze jakies ciekawe linki do cwiczen z rozwiazaniami i opisami do nauki php. Nie chodzi mi o jakies tutoriale, ale o takie bardziej ciekawe zadania.
erix
Cytat
Kod bardzo fajny - dzieki
A czy jest mozliwe cos takiego:

No widzisz. winksmiley.jpg Jak chcesz, to potrafisz. smile.gif

Cytat
Jestem juz za stary na prace domowe, ale mam nadzieje, ze nie na nauke php itp.

No niestety, tak samo, jak muzyk nie nauczy się grać bez ćwiczenia na instrumencie, tak i programista nie nauczy się tworzyć bez odrabiania prac domowych.

A najlepszy sposób na naukę, to manual, manual, manual i ciągłe ćwiczenie. Komentarze w podręczniku również są bardzo wartościowe. winksmiley.jpg
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.