Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] opera a ykonywanie kodu ...
Forum PHP.pl > Forum > Przedszkole
dr_NO
już nie mam siły ;/
Nie wiem dlaczego alw pod wszystkimi innymi przeglądarkami wszystko działa normalnie, za to natomiast pod opera, wszystko na odwrot ;/
Powiedzmy ze mam skrypt dodajacy cokolwiek do bazy i ter przy takim zapytaniu:
  1. <?php
  2. if (empty($tresc)) { wurzyc komunikat o bledzie } else { rob dalej swoje }
  3. ?>

oczywiscie $tresc jest wczesniej sformuowana jako powidzmy: $tresc = $_POST['tresc']
No i sprawa wyglada tak, ze caly czas wyrzuca info o bledzie ;/ a jak dam: !empty, i zamienie miejscami info o bledzie i wykonywanie skryptu offkoz, to za kazdym razem doda dane, nawet jezeli nie bylo podanej tresci ;/

I tak jest TYLKO pod opera ;/
Niewiem, moze dzies cos pominalem , czytajac ksiazke, ale nigdzie nie wyczytalem, ze program server-side, moze sie sie "zpsuc" z poziomu przegladarki ;/
matlas
przegladarka nie ma na to wplywu

zapodaj troche wiecej kodu pewnie tam masz buga
dr_NO
co tu zapodawac, kod taki jak u gory, tylko ze jezeli byla wpisana wartosc w $tekst to dodaje do bazy, jak nie to wywala ze nie wpisano tresci i tyle ...
maryaan
Cytat(dr_NO @ 23.01.2007, 01:49:13 ) *
co tu zapodawac
kod ktory testujesz, a nie jakas imitacje pseudokodu snitch.gif przesylasz w ogole cos postem do tego skryptu czy testujesz go odpalajac w przegladarce strone z tym kodem?
dr_NO
ech ... przesyłam, jak któryś z Was by przeczytał, to by wiedział że tylko pod operą to nie działa, i nie mam pojęcia dlaczego.

  1. <?php
  2. $txt = $_POST['tekst'];
  3. if (!isset($txt))
  4. {
  5. echo "
  6. <div id="blad">
  7. Nie wypełniłeś wszystkich pól<br />
  8. <a href="index.php?modul=komentarze&co=news&nr=".$_POST['nid']."">Kliknij</a>, by spróbowac ponownie
  9. ";
  10. } else {
  11.  
  12. $aut = "~".$_POST['autor'];
  13. $tre = $_POST['tekst'];
  14. $dat = date("d m Y");
  15. $nid = $_POST['nid'];
  16. $sql2="INSERT INTO ".$prefix."komentarze(autor, data, tresc, newsid)VALUES('$aut', '$dat', '$tre', '$nid')";
  17. $result2=mysql_query($sql2);
  18. echo "<div id="info">Komentarz dodany.</div>";
  19. ?>

;/
maryaan
wklej jeszcze formularz bo z tym powyzej przegladarka za wiele zrobic nie moze
Cysiaczek
isset() nie działa tak samo jak empty().
Zobacz, że zawsze ma ona jakąś wartość w Twoim kodzie ($txt), bo jawnie przypisujesz zawartość $_POST['tekst'], która, jeśli pochodzi z pola formularza, ma wartość, a nawet typ. Nie wierzysz?
  1. <?php
  2. print var_dump($_POST['tresc']);
  3. ?>


Sprawdziłem - przeglądarka nic nie ma do rzeczy - musiałeś gdzieś testy zawalić, co się zdarza.

Pozdrawiam
dr_NO
ok, więc w takim razie, jak mam to zrobić ? od razu bez deklarowania dodatkowej zmiennej czy jak ?
Cysiaczek
Użyj empty() tak jak pokazałeś w pierwszym poście.

Pozdrawiam.
dr_NO
no to klops ... niewiem co niegra w moim kodzie, dalej to samo ;/ tylko pod Opera nie mozna nic zdialac ...
  1. <form name="formularz_niezalogowany" action="index.php?modul=komentarze&akcja=dodaj&kto=gosc" method="post">
  2. <input type="hidden" name="akcja" value="wyslij" />
  3. <input type="hidden" name="news_id" value="<? echo $nr ?>" />
  4. <table>
  5. <tr>
  6. <td>Autor</td>
  7. <td><input name="komentarz_autor" type="text" maxlenght="20" /></td>
  8. </tr>
  9. <tr>
  10. <td>Treść</td>
  11. <td><? include('funkcje/bb_tekst.php'); ?><br /><textarea name="tekst" id="tekst" cols="30" rows="4"></textarea>
  12. </tr>
  13. <tr>
  14. <td></td><td><input type="submit" name="Submit" value="Wyślij" /></td>
  15. </tr>
  16. </table>
  17. </form>
  18. <? }} ?>
  19. <?
  20. if($_GET['modul'] == "komentarze" && $_GET['akcja'] == "dodaj" && $_GET['kto'] == "gosc"){
  21. if($_POST['akcja'] == "wyslij"){
  22.  
  23. $news_id = $_POST['news_id'];
  24. if(empty($_POST['tekst'])) {
  25. echo"<div id="blad">Nie wypełniłeś wszystkich wymaganych pól.<br />
  26. <a href="index.php?modul=komentarze&co=news&nr=$news_id">Kliknij</a>, i spróbuj ponownie.</div> ";
  27. } else {
  28. echo"Komentarz zostałby dodany :)";
  29. }} else { echo"błąd formularza"; }}
  30. ?>
maryaan
przed linia 20 wstaw
  1. <?php
  2. var_dump($_POST);
  3. var_dump($_GET);
  4. ?>
i skopiuj to co sie pokaze w zrodle strony, przynajmniej sie dowiesz gdzie gina zmienne. W ogole to zakomentuj wpis w linii 20 (ten duzy warunek) i ostatnia klamre, wystarczy sprawdzenie zmiennej $_POST['akcja']
dr_NO
a więc już nie wiem co się dzieje ;/
$_GET dociera bez problemu ale post .... array(0) { }

upsss a jednak dociera:
Kod
array(3) { ["akcja"]=> string(6) "wyslij" ["news_id"]=> string(1) "1" ["komentarz_autor"]=> string(3) "ggg" }


ale nie wszystko ;/
bo tresc zostaje NULL ;/

Problem rozwiązany
Problem tkwił po stronie funkcji wstawiania bbcode ;/ już zażegnany tongue.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.