Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problemy z If
Forum PHP.pl > Forum > PHP
AuronDiel
Witam wszystkich! Chętnych mi pomoc a nawet tych którzy raczyli zajrzeć tutaj z czystej ciekawości.
Po morderczych cieżkich próbach, przeszukaniu chmury, pozstanowiłem napisać na forum, jak to zwykły człowiek z problemem.
A mianowicie problemy sa dwa, lecz wszystkie te dotycza intrukcji if.

1.Pierwszy skrypt miał sprawdzać czy dana nazwa pliku istnieje, jesli istnieje, to nic nie robi, a jeśli nie to tworzy plik o danej nazwie wpisanej przez uzytkownika w formularzu.
  1. $nazwa_do_sprawdzenia = '$temat.php';
  2. $czy_plik_istnieje = file_exists($nazwa_do_sprawdzenia);
  3. if($czy_plik_istnieje)
  4. {
  5. echo'Nazwa Tematu już jest zajęta, proszę wpisać inną.';
  6. }
  7. else
  8. {
  9. $fp = fopen("sc/$kategoria/$temat.php", "w");
  10. echo'Plik został utworzony.';
  11. }

W tym problem, że mój skrypt tak czy siak robi nowe pliki, nowe to złe słowo... Zastępuje je nowszymi.

2.Drugi skrypt miał za zadanie wpisać pewną treść do pliku o którym wspominałem w podpunkcie pierwszym, poczym przekierować na strone z plikiem.
  1. $test = fwrite($fp, $dane_pierwotne);
  2. if($test)
  3. {
  4. header("Location: $tresc.php");
  5.  
  6. }

W tym problem jak dobrze wiemy, header musi być na poczatku skryptu. Właśnie tutaj jest kolejny haczyk, jesli header zostanie wpisany poprawnie to od razu przekierowuje użytkownika na daną stronę, bez wypisania formularza. Kompletnie nie mam pomysłu na to.

Proszę was drodzy koledzy, koleżanki o pomoc.
Szymciosek
$nazwa_do_sprawdzenia = '$temat.php';

$nazwa_do_sprawdzenia = 'temat.php';

temat.php to plik, a nie zmienna.


header nie musi być na początku, są zasady dotyczące tego.
punoljoe
oj , jestem na poziomie przypominania sobie programowania tongue.gif , ale spróbuj ....
if(empty($czy_plik_istnieje)) { }else{}

lub if($czy_plik_istnieje==null) { } else { }


a co do drugiego problemu:

z tego co wiem to header(' '); a nie header( " " );

a czy coś jeszcze ... nie wiem smile.gif

pozdrawiam
AuronDiel
$temat - to zmiena
$temat.php - to zmiena z dopiskiem .php

skrypt ma sprawdzic czy plik o nazwie ktora znajduje sie w zmienej $temat istnieje

to strasznie fajnie ze header nie musi byc na poczatku ale jak mi to ma pomoc?
punoljoe
Cytat(Szymciosek @ 27.06.2012, 10:55:10 ) *
$nazwa_do_sprawdzenia = '$temat.php';

$nazwa_do_sprawdzenia = 'temat.php';

temat.php to plik, a nie zmienna.


header nie musi być na początku, są zasady dotyczące tego.



header w takim przypadku nie musi być na początku... zadziała. Nie zadziała np. przy
header('Content-type: image/jpeg');

pozdrawiam

koledzy po fachu... pomocy przy temacie 'minimalizacja zdjęć - problem' ... bo mnie to wstrzymuje w pracy. Jest na tablicy . pozdrawiam
!*!
Cytat
$temat - to zmiena
$temat.php - to zmiena z dopiskiem .php


Czyli powinno być

  1. $nazwa_do_sprawdzenia = "$temat.php";


albo

  1. $nazwa_do_sprawdzenia = $temat.'.php';
AuronDiel
  1. $nazwa_do_sprawdzenia = '$temat.php';
  2. $czy_plik_istnieje = file_exists($nazwa_do_sprawdzenia);
  3. if(empty($czy_plik_istnieje))
  4. {
  5. echo'Nazwa Tematu już jest zajęta, proszę wpisać inną.';
  6. }
  7. else
  8. {
  9. $fp = fopen("sc/$kategoria/$temat.php", "w");
  10. echo'Plik został utworzony.';
  11. }


Lipa, wypisuje mi ,,Nazwa Tematu już jest zajęta, proszę wpisać inną." na samym poczatku przed wypelnieniem formularza, a co najlepsze katalog z plikami jest pusty
wiec nie moze byc temat zajety

  1. $test = fwrite($fp, $dane_pierwotne);
  2. if($test)
  3. {
  4. header('Location: $tresc.php');
  5. }


Warning: fwrite(): supplied argument is not a valid stream resource in /home/dawtuz94/domains/yoursound.pl/public_html/skrypt.php on line 48
Wiersz 48 to właśnie ten:
  1. $test = fwrite($fp, $dane_pierwotne);
Szymciosek
  1. $nazwa_do_sprawdzenia = "$temat.php";
  2. $czy_plik_istnieje = file_exists($nazwa_do_sprawdzenia);
  3. if(empty($czy_plik_istnieje))
  4. {
  5. echo'Nazwa Tematu już jest zajęta, proszę wpisać inną.';
  6. }
  7. else
  8. {
  9. $fp = fopen("sc/$kategoria/$temat.php", "w");
  10. echo'Plik został utworzony.';
  11. }


Spróbuj tak, ma być w cudzysłowiu zmienna jeśli już albo napisz to tak:
$nazwa_do_sprawdzenia = $temat.'.php';
!*!
Przeczytaj raz jeszcze to co napisałem i popraw kod. Poza tym

  1. $czy_plik_istnieje = file_exists($nazwa_do_sprawdzenia);
  2. if(empty($czy_plik_istnieje))


To jakaś bzdura, po co w ogóle przepisujesz to do zmiennych? Wpisz to od razu do IF
AuronDiel
Cytat(!*! @ 27.06.2012, 11:06:35 ) *
Czyli powinno być

  1. $nazwa_do_sprawdzenia = "$temat.php";


albo

  1. $nazwa_do_sprawdzenia = $temat.'.php';

Zrobiłem to co napisałeś, zero efektów.
!*!
Pokaż kod po zmianach.
Szymciosek
  1. $nazwa_do_sprawdzenia = $temat.'.php';
  2. if(file_exists($nazwa_do_sprawdzenia))
  3. {
  4. echo'Nazwa Tematu już jest zajęta, proszę wpisać inną.';
  5. }
  6. else
  7. {
  8. $fp = fopen("sc/$kategoria/$temat.php", "w"); //tutaj jeszcze pewnie będzie błąd
  9. echo'Plik został utworzony.';
  10. }


Ciekawi mnie jeszcze fakt, że sprawdzasz czy plik istenieje temat.php... a później tworzysz go w jakimś katalogu... a sprawdzane jest w tym miejscu, gdzie masz ten plik php
AuronDiel
  1. $nazwa_do_sprawdzenia = "$temat.php";
  2. $czy_plik_istnieje = file_exists($nazwa_do_sprawdzenia);
  3. if(empty($czy_plik_istnieje))
  4. {
  5. echo'Nazwa Tematu już jest zajęta, proszę wpisać inną.';
  6. }
  7. else
  8. {
  9. $fp = fopen("sc/$kategoria/$temat.php", "w");
  10. echo'Plik został utworzony.';
  11. }
!*!
A wiesz do czego służy empty? to po co ją dajesz w warunku, wyrzuć. I Szymciosek zauważył dobrą rzecz z katalogiem.
AuronDiel
  1. $nazwa_do_sprawdzenia = "$temat.php";
  2. $czy_plik_istnieje = file_exists($nazwa_do_sprawdzenia);
  3. if($czy_plik_istnieje)
  4. {
  5. echo'Nazwa Tematu już jest zajęta, proszę wpisać inną.';
  6. }
  7. else
  8. {
  9. fopen("sc/$kategoria/$temat.php", "w");
  10. echo'Plik został utworzony.';
  11. }


Dalej nie sprawdza czy plik o takiej nazwie istnieje, tylko dodaje.
Nie widze błędu z katalogiem, to jedyna rzecz która mi działą.

A co do Empty. To nie wiem do czego sluzy i ktos kazał wpisać to wpisałem.
!*!
Sprawdzacz czy plik istnieje w katalogu gdzie jest skrypt, a później chcesz go otwierać w katalogu sc/$kategoria/$temat.php ? To raczej nie jest poprawne.

  1. if(file_exists("sc/$kategoria/$temat".'.php'))
  2. {
  3. echo'Nazwa Tematu już jest zajęta, proszę wpisać inną.';
  4. }
  5. else
  6. {
  7. fopen("sc/$kategoria/$temat.php", "w");
  8. echo'Plik został utworzony.';
  9. }


Cytat
A co do Empty. To nie wiem do czego sluzy i ktos kazał wpisać to wpisałem.

Zauważ że ten ktoś się nie znał, a Ty powinieneś to sprawdzić.
Szymciosek
  1. <?php
  2. $temat = 'dupa';
  3.  
  4. $nazwa_do_sprawdzenia = "$temat.php";
  5. $czy_plik_istnieje = file_exists($nazwa_do_sprawdzenia);
  6. if($czy_plik_istnieje)
  7. {
  8. echo'Nazwa Tematu już jest zajęta, proszę wpisać inną.';
  9. }
  10. else
  11. {
  12. fopen("$temat.php", "w");
  13. echo'Plik został utworzony.';
  14. }
  15.  
  16. ?>


U mnie działa tak, tworzy plik jeśli go nie ma i wyświetla info jeśli jest

  1. <?php
  2.  
  3. $temat = 'dupa';
  4.  
  5. $nazwa_do_sprawdzenia = "$temat.php";
  6. if(file_exists($nazwa_do_sprawdzenia))
  7. {
  8. echo'Nazwa Tematu już jest zajęta, proszę wpisać inną.';
  9. } else {
  10. fopen("$temat.php", "w");
  11. echo'Plik został utworzony.';
  12. }
  13.  
  14. ?>



!*! o tym samym napisałem wyżej, dlatego dziwne to mi się wydało.

Autor: Co zwraca przed całym skryptem echo $temat ?
AuronDiel
FAKTYCZNIE!
Dobra! Dzięki! Nie skapłem się, już to poprawiłem i działą.

Ale dalej jak myślałem nawale header.
Wypisuje błąd ,,Warning: Cannot modify header information - headers already sent by (output started at /home/daw/domains/pl/public_html/skrypt.php:5) in /home/daw/domains/pl/public_html/skrypt.php on line 51"

  1. $test = fwrite($fp, $dane_pierwotne);
  2. if($test)
  3. {
  4. header('Location: sc/$kategoria/$temat.php');
  5. }
Szymciosek
ob_start() na początku skryptu

ob_end_flush() na końcu skryptu
!*!
Wyświetlasz coś w echo, lub html przed tym. Było już wiele razy na forum. na początku index.php wklej ob_start();
AuronDiel
Działa!
I ostatni problem.
Kiedy wchodzę na skrypt.php, to od razu wypisuje mi
,,Nazwa Tematu już jest zajęta, proszę wpisać innš.
Warning: fwrite(): supplied argument is not a valid stream resource in /home/dawtuz94/domains/yoursound.pl/public_html/skrypt.php on line 50"

  1. $nazwa_do_sprawdzenia = "sc/$kategoria/$temat.php";
  2. $czy_plik_istnieje = file_exists($nazwa_do_sprawdzenia);
  3. if($czy_plik_istnieje)
  4. {
  5. echo'Nazwa Tematu już jest zajęta, proszę wpisać inną.';
  6. }
  7. else
  8. {
  9. $fp = fopen("sc/$kategoria/$temat.php", "w");
  10. echo'Plik został utworzony.';
  11. }
  12. //Tworzy plik o nazwie zmienej $temat w danej kategori
  13. $test = fwrite($fp, $dane_pierwotne);
  14. if($test)
  15. {
  16. header("Location: sc/$kategoria/$temat.php");
  17. }


Jak zrobić by tego nie wypisywał?
Szymciosek
Dzieje się tak chyba dlatego, że od razu jest odpalany ten cały warunek i wszystko jest sprawdzane.
A dwa to, że tylko wtedy otwierasz plik i go tworzysz, gdy go nie ma.
Jeśli jest plik to go tylko OTWÓRZ, jeśli nie ma to STWÓRZ I OTWÓRZ, za to odpowiadają te literki, a czy w
http://php.net/manual/en/function.fopen.php tu masz spis
!*!
Nie przekazujesz $dane_pierwotne.
AuronDiel
!*! - przekazuje, mam wyżej napisaną zmieną $dane_pierwotne, ale wam jej nie wyslałem
Szymciosek - Coś kapujeee ale i tak nie wiem jak to poprawić
Szymciosek
w tym miejscu
  1. if($czy_plik_istnieje)
  2. {
  3. echo'Nazwa Tematu już jest zajęta, proszę wpisać inną.';
  4. }


dodaj też fopen... ale z parametrem r+
!*!
A masz odpowiednie prawa ustawione, chmod? Poza tym nie możesz użyć file_ get_ contents lub file_ put_ contents nie ma sensu babrać sie w fopen jak to nie są duże pliki.
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.