Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML] Problem z instrukcją IF
Forum PHP.pl > Forum > Przedszkole
Sublove
Cześć Wam
Siedzię dziś pól dnia i nie wiem co jest. Otóż,
Mam stronę kontakt.php
Na tej stronie jest formularz oraz skrypt php jednocześnie.
Wiem, że można zrobić tak, że nie dając "action" w FORM, ten wykona się na tej samej stronie... tak też próbuję ale...
wpisując wartośći do formularza, instrukcja IF sprawdza czy nie ma gdzieś pustego pola, jeżeli jest to wywala mnie jakby w połowie strony i nie formatuje już HTML-owo strony tylko ucina ją w połowie (menu ucieka naprzykła).
Chciałbym żeby poprostu do tego co mam na stronie dodawał się jeden z dwóch komunikatów pętli IF - Wysłano albo Nie wysłano
Nie wiem co robię źle sad.gif

Załączam poniżej mój plik
  1. <?php
  2. $Name = $_POST['imienad'];
  3. $email = $_POST['mailnad'];
  4. $recipient = "[email="tomczak@gandalf.mac.edu.pl"]tomczak@gandalf.mac.edu.pl[/email]";  
  5. $mail_body = $_POST['tresc'];
  6. $subject = "Zapytanie ze strony www";
  7. if(empty($Name) OR empty($email) OR empty($mail_body))
  8. {
  9. Błąd!<br/>
  10. Upewnij się czy wypełniłeś wszystkie pola...<br/>';
  11. }
  12. $header = "From: ". $Name . " <" . $email . ">r\n";
  13. $header .= "Content-type: text/html; charset=iso-8859-2r\n";
  14. $header .= "Content-Transfer-Encoding: 8bitr\n ";
  15. mail($recipient, $subject, $mail_body, $header);
  16. echo 'Wysłano zapytanie';
  17. ?>
erix
  1. <?php
  2. ?>

To Ci ucina. winksmiley.jpg

Zamiast tego, użyj else" title="Zobacz w manualu PHP" target="_manual w instrukcji warunkowej.
Sublove
no i już Cię lubię smile.gif Dzięki
ale teraz inny problem... Jeżeli odpalę ten plik, to automatycznie widzę komunikat który pojawia się przy błędzie... tak jakby od razu po wywołaniu tego pliku, jeszcze przed wprowadzeniem jakich kolwiek danych, już sprawdzał pola... w zasadzie to logiczne bo są jaby puste... co na to poradzić można?
Tak, żeby ten IF od razu nie sprawdzał po wczytaniu pliku ze sktryptem, ale dopiero po kliknięciu SUBMITa.
Cienki1980
Wystarczy jak zrobisz takie coś :

  1. <!--formularz-->
  2. <input type="submit" name="wyslij" value="Send">


a potem w php
  1. <?php
  2. //warunek sprawdzajcy czy formularz wyslany
  3. if (isset($_POST['wyslij']) && $_POST['wyslij'] == 'Send') {
  4.  //pozostale warunki sprawdzajace czy pola nie sa puste
  5. // i wyslanie maila
  6. }
  7. ?>
deirathe
dodaj sobie w formularzu ukryte pole o jakiejs wartosci i sprawdzaj czy ma wartosc,np:
  1. <input type="hidden" name="send" value="true" />



i sprawdzaj przez
  1. <?php
  2. isset($_POST['send']) and $_POST['send'] == "true"
  3. ?>



taki przyklad



//nie zdazylem tongue.gif

--
jesteś już tyle czasu na forum, a co z bbcode?

erix
Sublove
bardzo Wam dziękuje, teraz śmiga jak szalony smile.gif

Ogólnie muszę zrobić bardzo restrykcyjne pola formularzy, idioto odporne wręcz smile.gif

1.Chciałbym aby pole email koniecznie zawierało małpę w nazwie, jak zbadać zmienną pod tym kątem w php?
2.Czy jest gdzieś jakaś ładna zbiórka wiedzy poza php.pl.... smile.gif gdzie jest więcej o robieniu takich restrykcyjych formularzy? O zakładaniu ograniczeń?
3. Mam bazę w Postrgresie, tam w tabeli są wyrazy pisane raz z dużej raz z małej, zrobiłem wyszukiwarkę i chciałbym aby niezależnie jakimi literami się wpisze (wielkie czy małe) to mogło odnaleźć wyraz w tabeli.. mamy na to jakiś patent ?

Dzięki z góry i sorry za zawracanie gitary ale nie mam aż takiej wiedzy sad.gif
erix
Cytat
1.Chciałbym aby pole email koniecznie zawierało małpę w nazwie, jak zbadać zmienną pod tym kątem w php?

strpos" title="Zobacz w manualu PHP" target="_manual

Cytat
2.Czy jest gdzieś jakaś ładna zbiórka wiedzy poza php.pl.... gdzie jest więcej o robieniu takich restrykcyjych formularzy? O zakładaniu ograniczeń?

Hmm, a w jakim celu szukać takich "zbiórek"? Właściwie, to wystarczą gotowce w stylu: http://www.phpclasses.org/browse/package/1.html

Cytat
3. Mam bazę w Postrgresie, tam w tabeli są wyrazy pisane raz z dużej raz z małej, zrobiłem wyszukiwarkę i chciałbym aby niezależnie jakimi literami się wpisze (wielkie czy małe) to mogło odnaleźć wyraz w tabeli.. mamy na to jakiś patent ?

  1. SELECT * FROM test1 WHERE lower(col1) = 'value'
Sublove
Cytat(erix @ 24.01.2009, 22:27:55 ) *
  1. SELECT * FROM test1 WHERE lower(col1) = 'value'


Spoko, dziękuję
Tylko gdzie dodać tą funkcję w takim zapytaniu
Przed LIKE czy po LIKE?

  1. <?php
  2. $query = "SELECT nazwa, kategoria, marka, model, producent, roczniki, zapas FROM parts WHERE
  3. nazwa LIKE '%".$nazwa."%' AND
  4. marka LIKE '%".$marka."%' AND
  5. model LIKE '%".$model."%' AND
  6. kategoria LIKE '%".$kategoria."%'
  7. ORDER BY nazwa";
  8. ?>
erix
  1. lower(nazwa) LIKE '%".$nazwa."%' AND
Sublove
Cytat(erix @ 24.01.2009, 23:05:04 ) *
  1. lower(nazwa) LIKE '%".$nazwa."%' AND


Rozumiem, ale sprawa jest taka, że w bazie danych mam pisane raz dużą a raz małą literą (mam pole opisowe które niestety musi mieś kilka wyrazów, jest to opis części samochodowych i naprzykład "Drążek kierowniczy LEWY") I tu jest problem bo chciałbym móc znaleźć z tego pola nie ważne czy wpiszę: Drążek czy DrĄżeK, lEwy czy LEWy... poprostu żeby nie zwracał uwagi na wielkość liter. Podobnie chciałbym zrobić dla polskich znaków, żeby działało w obie stronty, wpisująć drążek, żeby znalazł drazek, i wpisująć drazek żeby mógł znaleźć drążek... jest na to metoda ?
erix
Cytat
Drążek czy DrĄżeK, lEwy czy LEWy... poprostu żeby nie zwracał uwagi na wielkość liter

Właśnie w ten sposób. Tylko $nazwa też zmniejszasz i po kłopocie. Małe = małe, nie będzie wtedy problemu.

Cytat
wpisująć drążek, żeby znalazł drazek, i wpisująć drazek żeby mógł znaleźć drążek

Nie jestem specem od PostgreSQL, ale trzeba by było chyba napisać najpierw procedurę zamieniającą diakrytyki na odpowiedniki łacińskie.
Sublove
Cytat(erix @ 24.01.2009, 23:29:30 ) *
Właśnie w ten sposób. Tylko $nazwa też zmniejszasz i po kłopocie. Małe = małe, nie będzie wtedy problemu.


Nie jestem specem od PostgreSQL, ale trzeba by było chyba napisać najpierw procedurę zamieniającą diakrytyki na odpowiedniki łacińskie.



Kolejny raz mi pomogłeś smile.gif Dzięki wielkie smile.gif

Ale zrodził mi isę jeszcze jeden problem....

Jak nie znajdzie żadnych wyników zapytania to nie drukuje mi mojego komunikatu który jest printf ("Brak takij części w magazynie");

Co tym razem robię źle?


  1. <?php
  2. $query = "SELECT nazwa, marka, model, roczniki, zapas FROM parts WHERE
  3. lower(nazwa) LIKE lower('%".$nazwa."%') AND
  4. lower(marka) LIKE lower('%".$marka."%') AND
  5. lower(model) LIKE lower('%".$model."%')
  6. ORDER BY nazwa";
  7.  
  8. $result = pg_exec($db, $query);
  9. if (!$result) {
  10. printf ("Brak takij części w magazynie");
  11. }
  12. else
  13. {
  14. $numrows = pg_numrows($result);
  15. $row=0;
  16. printf ("<table width=530>");
  17. printf ("<tr>
  18.  
  19. <td height=30 align=center>Nazwa</td>
  20. <td height=30 align=center>Marka</td>
  21. <td height=30 align=center>Model</td>
  22. <td height=30 align=center>Roczniki</td>
  23. <td height=30 align=center>Zapas</td>
  24. </tr>");
  25. do
  26. {
  27. $myrow = pg_fetch_row ($result);
  28. printf ("<tr><td height=30 >%s</td>
  29. <td height=20 >%s</td>
  30. <td height=20 >%s</td>
  31. <td height=20 >%s</td>
  32. <td height=20 >%s</td>
  33. </tr>",
  34. $myrow[0], $myrow[1], $myrow[2], $myrow[3], $myrow[4]
  35.  
  36. );
  37. $row++;
  38. }
  39.  
  40. while ($row < $numrows);
  41.  
  42. printf ("</table>");
  43. }
  44. ?>








Help please.... sad.gif
erix
  1. <?php
  2. $result = pg_exec($db, $query);
  3. if (!$result) {
  4. ?>

Ono zwróci powodzenie wykonania zapytania. A jeśli chodzi o zwrócone wyniki: wywołujesz przecież:
  1. <?php
  2. $numrows = pg_numrows($result);
  3. $row=0;
  4. ?>

Śmignij to przed warunkiem i sprawdzaj $numrows, a nie pg_exec. winksmiley.jpg
Sublove
JEst już pół sukcesu, jest komentarz smile.gif Dziękuję po raz n++ biggrin.gif

Ale jeszcze prócz komunikatu są takie krzaki:

Warning: pg_fetch_row() [function.pg-fetch-row]: Unable to jump to row 0 on PostgreSQL result index 3 in /home/informatyka/2004/19dr-q-1/tomczak/public_html/wyszukaj.php on line 72
a poniżej nagłówki tabeli same zwraca

NazwaMarkaModelRocznikiZapasCo możemy poradzić zeby był sam ładny czysty komunikat?
Dlaczego tak się dzieje?
erix
Jeśli masz zero rekordów, to już nie wykonuj tamtej pętli.
Sublove
tzn wywalić wogóle mam ze skryptu pętlę DO WHILE ?
Bo ona to się raz wykona zawsze jak nic smile.gif
Pomógłbyś mi to zamienić bo czuję że nie ogarnę :/

Może kodzik dla przypomnienia dam

  1. <?php
  2. $numrows = pg_numrows($result);
  3. $row=0;
  4. if (!$numrows)
  5. { printf("Brak takiej części w bazie");
  6. }
  7.  
  8. printf ("<table width=530>");
  9. printf ("<tr>
  10.  
  11. <td height=30 align=center>Nazwa</td>
  12. <td height=30 align=center>Marka</td>
  13. <td height=30 align=center>Model</td>
  14. <td height=30 align=center>Roczniki</td>
  15. <td height=30 align=center>Zapas</td>
  16. </tr>");
  17. do
  18. {
  19. @$myrow = pg_fetch_row ($result,$row);
  20. printf ("<tr><td height=30 >%s</td>
  21. <td height=20 >%s</td>
  22. <td height=20 >%s</td>
  23. <td height=20 >%s</td>
  24. <td height=20 >%s</td>
  25. </tr>",
  26. $myrow[0], $myrow[1], $myrow[2], $myrow[3], $myrow[4]
  27.  
  28. );
  29. $row++;
  30. }
  31.  
  32. while ($row < $numrows);
  33.  
  34. printf ("</table>");
  35. }
  36. ?>
erix
Cytat
tzn wywalić wogóle mam ze skryptu pętlę DO WHILE ?
Bo ona to się raz wykona zawsze jak nic
Pomógłbyś mi to zamienić bo czuję że nie ogarnę :/

NIE wywalić, a nie wykonywać, jeśli nie ma rekordów. Oducz się tej małpy przed funkcjami, to zły zwyczaj.

Jest takie magiczne słówko, jak else" title="Zobacz w manualu PHP" target="_manual. tongue.gif
Sublove
nie wiem czy pijasz piwo ale mogę Ci je kupić winksmiley.jpg Baaardzo dziękuję, hula jak należy smile.gif

A mógłbyś mi jeszcze rozwinać zastosowanie tej funkcji co pomoże mi wymusić prawidłowy adres mail?
Chciałbym aby ta małpa się pojawiła... smile.gif
ładnie proszę biggrin.gif
erix
Przecież napisałem: http://forum.php.pl/index.php?s=&showt...st&p=562405

strpos" title="Zobacz w manualu PHP" target="_manual, szukasz małpy -> jeśli nie ma, adres do bani. A przykład użycia jest w manualu.

Cytat
nie wiem czy pijasz piwo ale mogę Ci je kupić

Nie piję. ;P
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.