Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] input
Forum PHP.pl > Forum > Przedszkole
kalafoon
witam,
mam taki kod do zapisywania emaili do bazy z opziomu strony.
  1. <?php
  2. <font class="szukaj">Wpisz swój adres E-mail:</font><br>
  3. <form id=&#092;'f2' method="post">
  4. <input type="text" name="email" maxlength="20" size="20" value="'.$email.'" /><br>';
  5. if ($_POST[email]) {
  6. if (!eregi("^[0-9a-z_.-]+@([0-9a-z-]+.)+[a-z]{2,4}$",$email)) {
  7. $blad++;
  8. $_POST[email]="";
  9. echo "<font class=\"alert_c\">zły adres e-mail!</font><br>";
  10. }
  11. }
  12.  
  13. if ($_POST[email] && $blad==0) {
  14.  
  15. $zapytanie="insert into subskrypcja values('','','".$email.")";
  16. $wykonanie_zap=mysql_query($zapytanie);
  17. echo "<font class=&#092;"alert_z\">e-mail został dodany</font>";
  18.  
  19. }
  20. ?>


problem polega na tym ze gdy adres jest poprawny to wpisuje go do bazy ale chcialbym zeby jednocześnie czyściło się pole input. Zrobić jakiś warunek na tym albo pętle?
-mysz0n-
rozumiem ze pole input ma wartość $email
a jakbys po poprawnym dodaniu robił $email =' ';
wtedy przy przeładowniu strony zmienna była pusta i w miejscu value zapakowałoby sie NIC ?
kalafoon
no właśnie nie działa....wstawiałem to w każdy możliwy fragment i klops :/
Ar2r
Zamień miejscami bloki kodu. Zacznij od warunku sprawdzącego+zapis do bazy, zerowanie zmiennej, formularz.
kalafoon
a moglbys mi to na tym moim kodzie pokazac jak to widzisz?
bo probowalem tak zrobic i dalej to samo :/
Ar2r
Przerobiłem trochę Twój kod. Wypróbuj.
  1. <?php
  2. if ($_POST['email']) {
  3. if (!eregi("^[0-9a-z_.-]+@([0-9a-z-]+.)+[a-z]{2,4}$",$_POST['email'])) {
  4. echo "<font class=\"alert_c\">zły adres e-mail!</font><br>";
  5. $tmpMail = $_POST['email'];
  6. }
  7. else {
  8. $zapytanie="insert into subskrypcja values('','','".$_POST['email']."')";
  9. $wykonanie_zap=mysql_query($zapytanie);
  10. echo "<font class='alert_z'>e-mail został dodany</font>";
  11. $tmpMail = "";
  12. }
  13. }
  14. ?>
  15. <font class="szukaj">Wpisz swój adres E-mail:</font><br>
  16. <form id="f2" method="post">
  17. <input type="text" name="email" maxlength="20" size="20" value="<?php print $tmpMail;?>" /><br>
kalafoon
super smile.gif

gdy jest zly email to zostawia go w inpucie a gdy jest ok to znika smile.gif o to chodzilo...tylko jeszcze jeden problem, mimo ze znika zawartosc inputa to przy odswiezaniu strony dodaje ponownie tego emaila do bazy tyle razy ile odswieze
Ar2r
Możesz to rozwiązać na kilka sposobów:
- wykonywać dodatkowe zapytanie do bazy i sprawdzać czy pole o danej wartości już istnieje w tabeli, jeśli tak to nie wykonywać zapisu
- w action formularza wskazać inny plik, w którym wykonujesz zapis i wracasz po nim na stronę z formularzem (trochę więcej roboty z obsługą błędów i przekazywaniem zmiennych formularza z powrotem do niego)
- zastosować dodatkową zmienną opartą na sesjach; ustawiać ją po zapisie do bazy, a przed zapisem sprawdzać czy jest ustawiona
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.