Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z echo
Forum PHP.pl > Forum > Przedszkole
kubax33
mam taki kod:

  1. <?php
  2. $szukane = $_GET['info'];
  3. $plik = "db.txt";
  4. $dane = file($plik);
  5.  
  6. if ((isset($_POST['nazw'])) AND (trim($_POST['nazw']) != ""))
  7. {
  8.  
  9. for($i=0;$i<count($dane);$i++)
  10. list($imie[$i], $nazwisko[$i], $miejscowosc[$i]) = explode(" || ", $dane[$i]);
  11.  
  12.  
  13. for($i=0;$i<count($nazwisko);$i++)
  14. if (strpos($nazwisko[$i],$_POST['nazw']) !== false && $_GET['info'] == $id[$i])
  15.  
  16.  
  17. echo $imie[$i]." ".$nazwisko[$i].", ".$miejscowosc[$i]."<br />";
  18.  
  19. /* tutaj else echo!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  20. }
  21.  
  22. }
  23. ?>


i kombinuje na wszelkie sposoby, ale nie moge dopisać else echo w miejscu, którym wskazałem czyli chodzi mi o to jeśli nie będzie spełniony "if" pokaże się informacja! Proszę o pomoc
seba123
Polecam stosować nawiasy { } to będzie wszystko jasne.
slawek3422
  1. <?php
  2. $szukane = $_GET['info'];
  3. $plik = "db.txt";
  4. $dane = file($plik);
  5.  
  6. if ((isset($_POST['nazw'])) AND (trim($_POST['nazw']) != "")){
  7.  
  8. for($i=0;$i<count($dane);$i++){
  9. list($imie[$i], $nazwisko[$i], $miejscowosc[$i]) = explode(" || ", $dane[$i]);
  10. }
  11.  
  12. for($i=0;$i<count($nazwisko);$i++){
  13. if (strpos($nazwisko[$i],$_POST['nazw']) !== false && $_GET['info'] == $id[$i]){
  14. echo $imie[$i]." ".$nazwisko[$i].", ".$miejscowosc[$i]."<br />";
  15. } else {
  16. echo "HELP !!";
  17. }
  18.  
  19.  
  20. }
  21.  
  22. }
  23. ?>
Sephirus
Naucz się używać klamr {}

  1. <?php
  2. $szukane = $_GET['info'];
  3. $plik = "db.txt";
  4. $dane = file($plik);
  5.  
  6. if ((isset($_POST['nazw'])) AND (trim($_POST['nazw']) != ""))
  7. {
  8.  
  9. for($i=0;$i<count($dane);$i++)
  10. {
  11. list($imie[$i], $nazwisko[$i], $miejscowosc[$i]) = explode(" || ", $dane[$i]);
  12. }
  13.  
  14. for($i=0;$i<count($nazwisko);$i++)
  15. {
  16. if (strpos($nazwisko[$i],$_POST['nazw']) !== false && $_GET['info'] == $id[$i])
  17. echo $imie[$i]." ".$nazwisko[$i].", ".$miejscowosc[$i]."<br />";
  18. else
  19. echo '!!!';
  20. }
  21. }
  22. ?>
by_ikar
Użyj klamerek. Przy jednym bloku możesz sobie pozwolić na nie danie klamerek. Przy zagnieżdżeniu wielu bloków, lepiej użyć klamerki, żeby potem nie głowić się dlaczego sypie mi errorem.
kubax33
mam spore problemy z tymi klamrami przyznaje!

już trace cierpliwość co tutaj jest źle?questionmark.gif

  1.  
  2. $szukane = $_GET['zamowienie'];
  3. if ($szukane)
  4. {
  5.  
  6. $plik = "db.txt";
  7. $dane = file($plik);
  8. {
  9. if ((isset($_GET['zamowienie'])) AND (trim($_GET['zamowienie']) != "")) {
  10. {
  11. for($i=0;$i<count($dane);$i++)
  12. {
  13. list($nr[$i], $nick[$i], $ilosc[$i]) = explode("|", $dane[$i]);
  14. }
  15. for($i=0;$i<count($nick);$i++)
  16. {
  17. if (strpos($nick[$i],$_GET['zamowienie']) !== false && $_GET['zamowienie'] == $nick[$i])
  18. {
  19. echo $nr[$i]." ".$nick[$i].", ".$ilosc[$i]."<br />";
  20.  
  21. else
  22. echo '!!!';
  23.  
  24. }
  25.  
  26. }
  27.  


i czy kto jest wstanie mi logicznie wytlumaczyć jak stosuje się te klamry albo jakiś dobry link podesłać bo szczerze mówiąc często robie je metoda prób i błędów edytując jakiegos gotowca :/
Sephirus
Zrób inaczej - skoro masz z tym problem to używaj ich wszędzie i zawsze obojętnie od liczby linijek w nich smile.gif

  1. // dla warunków :
  2.  
  3. if(...) {
  4. // kod...
  5. // kod...
  6. }
  7.  
  8. // pętli :
  9.  
  10. foreach(...) {
  11. // kod...
  12. }
  13.  


i tak dalej... i pamiętaj o dobrym formatowaniu kodu i wcięciach! Czytelny kod to taki w którym łatwiej znaleźć błąd, zarówno logiczny jak i składniowy wink.gif

Twój kod po "próbie" sformatowania:
  1. $szukane = $_GET['zamowienie'];
  2. if ($szukane)
  3. {
  4. $plik = "db.txt";
  5. $dane = file($plik);
  6. { // WTF? po co tutaj ta klamerka
  7. if((isset($_GET['zamowienie'])) AND (trim($_GET['zamowienie']) != ""))
  8. {
  9. { // i po co tutaj??
  10. for($i=0;$i<count($dane);$i++)
  11. {
  12. list($nr[$i], $nick[$i], $ilosc[$i]) = explode("|", $dane[$i]);
  13. }
  14. for($i=0;$i<coun($nick);$i++)
  15. {
  16. if (strpos($nick[$i],$_GET['zamowienie']) !== false && $_GET['zamowienie'] == $nick[$i])
  17. {
  18. echo $nr[$i]." ".$nick[$i].", ".$ilosc[$i]."<br />";
  19. else // do czego to else niby??
  20. echo '!!!';
  21. }
  22. }
  23. // gdzie reszta klamerek :)
kubax33
Jakoś trace siły żeby się męczyć 3 h z klamrami ehhh ciężko mi to opanować. Zrobiłem tak jak mówiłeś tylko...

  1. $szukane = $_GET['zamowienie'];
  2.  
  3. if ($szukane)
  4. {
  5.  
  6. $plik = "db.txt";
  7. $dane = file($plik);
  8.  
  9. if ((isset($_GET['zamowienie'])) AND (trim($_GET['zamowienie']) != ""))
  10. {
  11. for($i=0;$i<count($dane);$i++)
  12. {
  13. list($nr[$i], $nick[$i], $ilosc[$i]);
  14. }
  15. for($i=0;$i<count($nick);$i++)
  16. {
  17. if (strpos($nick[$i],$_GET['zamowienie']) !== false && $_GET['zamowienie'] == $nick[$i])
  18. {
  19. echo $nr[$i]." ".$nick[$i].", ".$ilosc[$i]."<br />";
  20. else
  21. echo '!!!'; // musze mieć else zeby zwracało błąd jeśli nie są spełnione warunki if-a ( if (strpos($nick[$i],$_GET['zamowienie'] itd. )
  22. }
  23.  
  24. }
  25. } // te klamry miałem zamknąć wcześniej otwierając górne?
  26. }
  27.  
  28.  


untorched
  1. $szukane = $_GET['zamowienie'];
  2.  
  3. if ($szukane)
  4. {
  5. $plik = "db.txt";
  6. $dane = file($plik);
  7.  
  8. if ((isset($_GET['zamowienie'])) AND (trim($_GET['zamowienie']) != ""))
  9. {
  10. for($i=0;$i<count($dane);$i++)
  11. {
  12. list($nr[$i], $nick[$i], $ilosc[$i]);
  13. }
  14.  
  15. for($i=0;$i<count($nick);$i++)
  16. {
  17. if (strpos($nick[$i],$_GET['zamowienie']) !== false && $_GET['zamowienie'] == $nick[$i])
  18. {
  19. echo $nr[$i]." ".$nick[$i].", ".$ilosc[$i]."<br />";
  20. }
  21. else
  22. {
  23. echo '!!!'; // musze mieć else zeby zwracało błąd jeśli nie są spełnione warunki if-a ( if (strpos($nick[$i],$_GET['zamowienie'] itd. )
  24. }
  25. }
  26. }
  27. }
kubax33
zadziałało dziękuję! Jest tylko jeden problem że w pomencie kiedy zostaje wywoływane else echo zamiast "!!!" pokazuje mi ich :
exclamation.gif!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

czyli kilkunastokrotnie wpisuje to co jest w else echo. Czego to moze byc wina?

do tego teraz jednocześnie pokazuje na stronie to co jest w samym echo oraz w else echo :/ cos jest nie tak...

  1.  
  2. <?php
  3. $szukane = $_GET['zamowienie'];
  4.  
  5. if ($szukane)
  6. {
  7.  
  8. $plik = "db.txt";
  9. $dane = file($plik);
  10.  
  11. if ((isset($_GET['zamowienie'])) AND (trim($_GET['zamowienie']) != ""))
  12. {
  13. for($i=0;$i<count($dane);$i++)
  14. {
  15. list($nr[$i], $nick[$i], $ilosc[$i]) = explode("|", $dane[$i]);
  16. }
  17. for($i=0;$i<count($id);$i++)
  18. {
  19. if (strpos($nick[$i],$_GET['zamowienie']) !== false && $_GET['zamowienie'] == $nick[$i])
  20. {
  21. echo $nr[$i]." ".$nick[$i].", ".$ilosc[$i]."<br />";
  22. }
  23. else
  24. {
  25. echo '!!!';
  26.  
  27. }
  28.  
  29. }
  30. }
  31. }
  32.  
  33. ?>
untorched
To jest wina tego, że instrukcja for(15 linijka) dalej się wykonuje. Jeśli chcesz ją przerwać gdy wystąpi echo '!!!'; to pod tym echo daj break;, lub napisz to w ten sposób:
  1. $szukane = $_GET['zamowienie'];
  2. $error = 0;
  3.  
  4. if ($szukane)
  5. {
  6. $plik = "db.txt";
  7. $dane = file($plik);
  8.  
  9. if ((isset($_GET['zamowienie'])) AND (trim($_GET['zamowienie']) != ""))
  10. {
  11. for($i=0;$i<count($dane);$i++)
  12. {
  13. list($nr[$i], $nick[$i], $ilosc[$i]);
  14. }
  15.  
  16. for($i=0;$i<count($nick);$i++)
  17. {
  18. if (strpos($nick[$i],$_GET['zamowienie']) !== false && $_GET['zamowienie'] == $nick[$i])
  19. {
  20. $zwrot .= $nr[$i]." ".$nick[$i].", ".$ilosc[$i]."<br />";
  21. }
  22. else
  23. {
  24. $error = 1;
  25. }
  26. }
  27.  
  28. if($error == 1)
  29. {
  30. echo 'Wystąpił błąd!';
  31. }
  32. else
  33. {
  34. echo $zwrot;
  35. }
  36. }
  37. }


PS. Obstawiam że ta linijka:
  1. for($i=0;$i<count($nick);$i++)
Ma wyglądać tak:
  1. for($i=0;$i<count($nick-1);$i++)
kubax33

a jednak nadal szwankuje coś sad.gif


  1. <?php
  2. $szukane = $_GET['zamowienie'];
  3.  
  4. if ($szukane)
  5. {
  6.  
  7. $plik = "db.txt";
  8. $dane = file($plik);
  9.  
  10. if ((isset($_GET['zamowienie'])) AND (trim($_GET['zamowienie']) != ""))
  11. {
  12. for($i=0;$i<count($dane);$i++)
  13. {
  14. list($nr[$i], $nick[$i], $ilosc[$i]) = explode("|", $dane[$i]);
  15. }
  16. for($i=0;$i<count($id);$i++)
  17. {
  18. if (strpos($nick[$i],$_GET['zamowienie']) !== false && $_GET['zamowienie'] == $nick[$i])
  19. {
  20. echo $nr[$i]." ".$nick[$i].", ".$ilosc[$i]."<br />";
  21. break;
  22. }
  23. else
  24. {
  25. echo '!!!';
  26. brak;
  27. }
  28.  
  29. }
  30. }
  31. }
  32.  
  33. ?>
  34.  
  35.  


mianowicie jeśli wyśle przez get i wyswietli dane to zawsze jest na poczatku else echo czyli : "!!!!!!!!!!" i do tego dopiero echo wyswietlone (prawidlowo)
Jeśli wywołam else echo to jest ono znowu kilkunastokrotnie powtorzone czyli "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"

A ten sposób drugi co wysłałeś "untorched" wyrzuca bład cały czas przy każdej akcji.

Jeśli ma ktos jakies pomysły będę wdzięczny...
untorched
Nie łaska wrzucić jakie błędy? Na oko nie zawsze wszystko da się zauważyć.. Poniżej masz działający, testowany skrypt
  1. $szukane = (isset($_GET['zamowienie']) ? $_GET['zamowienie'] : NULL);
  2.  
  3. if ($szukane !== NULL)
  4. {
  5. $plik = 'db.txt';
  6. $dane = file($plik);
  7.  
  8. if (trim($szukane) != '')
  9. {
  10. foreach($dane as $linia => $text)
  11. {
  12. list($nr[$linia], $nick[$linia], $ilosc[$linia]) = explode('|', $text);
  13. }
  14.  
  15. $zwrot = '';
  16.  
  17. for($i=0; $i<count($nr); $i++)
  18. {
  19. if (strpos($nick[$i],$szukane) !== false && $szukane == $nick[$i])
  20. {
  21. $zwrot .= $nr[$i].', '.$nick[$i].', '.$ilosc[$i].'<br />';
  22. }
  23.  
  24. }
  25.  
  26. if($zwrot != '')
  27. {
  28. echo $zwrot;
  29. }
  30. else
  31. {
  32. echo '!!!';
  33. }
  34. }
  35. }
kubax33
Dziękuję uprzejmie działa bez zarzutów o to chodziło.

Pozdrawiam
-Bono-
Uczę się PHP za pomocą pewnej książki HELIONU, mam tam kod
  1. <?php
  2. echo "<p>Zamówienie przyjęte o:</p>";
  3. echo date('H:i. jS F');
  4. echo '</p>';
  5. echo '<blink><h2>Zamówienie Państwa wygląda następująco:</h2></blink>';
  6. echo $iloscopon.'<center> opon</center><br />';
  7. echo $iloscoleju.'<center> butelek oleju</center><br />';
  8. echo $iloscswiec.'<center> Swiec zapłonowych</center><br />';
  9. $ilosc = 0;
  10. $ilosc = $iloscopon + $iloscoleju + $iloscswiec;
  11. echo 'Zamówionych częsci: '.$ilosc.'<br />';
  12.  
  13. $wartosc = 0.00;
  14.  
  15. define('CENAOPON'. 400);
  16. define('CENAOLEJU'. 100);
  17. define('CENASWIEC'. 40);
  18.  
  19. $wartosc = $iloscopon * CENAOPON /* Tu Rozpoczyna się problem */
  20. + $iloscoleju * CENAOLEJU /* np.zamiast "CENAOLEJU" podam 100 to obliczy bez problemu*/
  21. + $iloscswiec * CENASWIEC;
  22.  
  23. echo 'Cena netto: '[font="Arial Black"].[b]$wartosc[/b].[/font]' PLN<br />';/*tu daje format type*/
  24. $stawkavat = 0.23;
  25. $wartosc = $wartosc * ( 1 + $stawkavat );
  26. echo 'Cena brutto: '[font="Arial Black"].[b]$wartosc[/b].[/font]' PLN<br />'; /*Tu daje format_type*/
  27. ?>

A mianowicie gdy zdefiniowałem słowa CENA-||- mimo to nie potrafi wyczytać że cena np. CENAOPON to to samo co 400
po prostu daje wynik 0.
Problem rozwiązuje danie kodu
$wartosc = $iloscopon * 400 I TAK DALEJ.
Ale mnie to nie zadowala. Czemu mi nie działa "define"?
Mam jeszcze problem z
'.format_type($wartosc. 2).'
Co powinno mi dać (ja tak to rozumie) 2 wyrazy po przecinku tak jak to np.(3.21)=e
a daje mi tak (0.321)=e
Czemu?
Próbowałem to rozgryźć na wszelkie sposoby nie widzę błędu? Może w php.ini?
by_ikar
define ci nie działa, bo użyłeś zamiast przecinku żeby podać drugi parametr, to użyłeś kropki, powinieneś dostać warning, ale pewnie masz wyłączone raportowanie błędów. Tak samo jest w format_type tam również podałeś kropkę zamiast przecinku.
kubax33
i napotkałem kolejny błąd odnośnie mojego kodu. W firefoxie jest ok, ale w IE wyrzuca błąd :
Notice: Undefined offset:

tyczy się to linijki:
  1. list($nr[$linia], $nick[$linia], $ilosc[$linia]) = explode('|', $text);


Co tutaj jest źle? Niby wyczytałem, że pętla powtarza się w nieskończoność? jak temu zaradzić.

Zastanawiam się czy związku z tym nie ma też:

  1. $szukane = (isset($_GET['zamowienie']) ? $_GET['zamowienie'] : NULL);
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.