![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 79 Pomógł: 0 Dołączył: 18.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
Witam, mam problem z funkcja DOCUMENT_ROOT. Mam ksiażę Vademecum wydanie 4 z dołączoną płytką. Mam problem z kodem który nie może być zle napisany(z mojego blędu) poniewaz jest skopiowany z plytki ale nie dziala. Nie zapisuje zamowienia w pliku txt. Moglby ktos mi powiedziec dlaczego
![]() KODY formularz.html Kod <html> <head> <title>Części samochodowe Janka</title> </head> <body> <h1>Części samochodowe Janka</h1> <h2>Formularz zamówienia</h2> <form action="przetworzzamowienie.php" method=post> <table border=0> <tr bgcolor=#cccccc> <td width="150">Produkt</td> <td width="15">Ilość</td> </tr> <tr> <td>Opony</td> <td align="left"><input type="text" name="iloscopon" size="3" maxlength="3" /></td> </tr> <tr> <td>Olej</td> <td align="left"><input type="text" name="iloscoleju" size="3" maxlength="3" /></td> </tr> <tr> <td>Świece Zapłonowe</td> <td align="left"><input type="text" name="iloscswiec" size="3" maxlength="3" /></td> </tr> <tr> <td>Adres</td> <td align="left"><input type="text" name="adres" size="40" maxlength="40" /></td> </tr> <tr> <td colspan="2" align="center"><input type="submit" value="Złóż zamówienie"></td> </tr> </table> </form> </body> </html> przetworzzamowienie.php Kod <?php
// utworzenie krótkich nazw zmiennych $iloscopon = $_POST['iloscopon']; $iloscoleju = $_POST['iloscoleju']; $iloscswiec = $_POST['iloscswiec']; $adres = $_POST['adres']; $adres = $_POST['adres']; $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT']; $data=date('H:i, jS F Y'); ?> <html> <head> <title>Części samochodowe Janka — wyniki zamówienia</title> </head> <body> <h1>Części samochodowe Janka</h1> <h2>Wyniki zamówienia</h2> <?php echo "<p>Zamówienie przyjęte o ".$data."</p>"; echo "<p>Zamówienie Państwa wygląda następująco: </p>"; $ilosc = 0; $ilosc = $iloscopon + $iloscoleju + $iloscswiec; echo "Zamówionych części: ".$ilosc."<br />"; if($ilosc == 0) { echo "Na poprzedniej stronie nie zostało złożone żadne zamówienie!<br />"; } else { if ($iloscopon > 0) { echo $iloscopon." opon<br />"; } if ($iloscoleju > 0) { echo $iloscoleju." butelek oleju<br />"; } if ($iloscswiec > 0) { echo $iloscswiec." świec zapłonowych<br />"; } } $wartosc=0.00; define('CENAOPON', 100); define('CENAOLEJU', 10); define('CENASWIEC', 4); $wartosc =$iloscopon * CENAOPON + $iloscoleju * CENAOLEJU + $iloscswiec * CENASWIEC; $wartosc=number_format($wartosc, 2, '.', ' '); echo "<p>Wartość zamówienia wynosi ".$wartosc."</p>"; echo "<p>Adres wysyłki to ".$adres. "</p>"; $ciagwyjsciowy = $data."\t".$iloscopon." opon \t".$iloscoleju." butelek oleju\t" .$iloscswiec." swiec zapłonowych\t".$wartosc ."PLN\t". $adres."\n"; // otwarcie pliku w celu dopisywania @ $wp = fopen("$DOCUMENT_ROOT/../zamowienia/zamowienia.txt", 'ab'); flock($wp, LOCK_EX); if (!$wp) { echo "<p><strong> Zamówienie Państwa nie może zostać przyjęte w tej chwili. Proszę spróbować później.</strong></p></body></html>"; exit; } fwrite($wp, $ciagwyjsciowy, strlen($ciagwyjsciowy)); flock($wp, LOCK_UN); fclose($wp); echo "<p>Zamówienie zapisane.</p>"; ?> </body> </html> Ten post edytował bigos1995-95 18.05.2012, 16:02:53 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 290 Pomógł: 48 Dołączył: 11.05.2008 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
Skrypt wyświetla jakieś błędy?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 79 Pomógł: 0 Dołączył: 18.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
Warning: flock(): supplied argument is not a valid stream resource in c:\usr\krasnal\www\bigos\projektcd2\przetworzzamowienie.php on line 67
jest jakis blad albo nie wiem z @ $wp = fopen("$DOCUMENT_ROOT/../zamowienia/zamowienia.txt", 'ab'); w ksiazce jest cos napisane ze windows nie odczytuje takich ukosnikow (/) tylko takie (\) ale sprawdzalem to i dalej to samo wiec nie mam pojecia co jest. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 341 Pomógł: 40 Dołączył: 23.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
wyswietl sobie cala sciezke do jakiej probujesz sie odwolac, najprawdopodobniej od razu znajdziesz problem.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 79 Pomógł: 0 Dołączył: 18.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
nie rozumiem gdzie ja mam sobie wyswietlic, moglbys jasniej ?
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 709 Pomógł: 176 Dołączył: 24.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
wywal ten znak @ , błąd jest w tej linii prawie na pewno plik który próbujesz otworzyć nie istnieje. żeby sprawdzić co chcesz otworzyć zrób sobie: to wyświetli Ci ścieżkę i sprawdź czy ten plik istnieje. -------------------- http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 79 Pomógł: 0 Dołączył: 18.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
ten plik istnieje a zreszto funkcja "a" powinna sama sobie zrobić plik jesli go nie bedzie
definicja "a": Otwarcie pliku do dodawania zawartosci, poczawszy od konca istniejacej zawartosci.Jezeli plik nie istnieje, nastapi proba jego utworzenia |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 709 Pomógł: 176 Dołączył: 24.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
Tak masz rację poza jedną rzeczą, jeżeli fopen będzie się odwoływało do nieistniejącej lokalizacji (np ścieżka do folderu który nie istnieje) to plik nie zostanie utworzony. W tym samym manualu który cytujesz masz napisane:
Cytat Returns a file pointer resource on success, or FALSE on error. Więc po prostu usuń tą @ z przed $wp i zobaczysz co pierwsze wypluje błąd. Na logikę skoro flock krzyczy że podany argument nie jest prawidłowym zasobem, a zasób jest tworzony przez fopen to gdzie jest problem ? -------------------- http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 79 Pomógł: 0 Dołączył: 18.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
ja i tak nadal nie wiem co jest , tworze folder(zamowienia) w folderze z cialem stronki i i tak nic sie nie dzieje i fakt jak usunalem @ to wyskoczyl mi blad z fopen ale co z tego jak nie wiem jak to naprawic.
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 709 Pomógł: 176 Dołączył: 24.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
popróbuj z różnymi ścieżkami na przykład:
ciężko tak na ślepo coś poradzić :/ -------------------- http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 341 Pomógł: 40 Dołączył: 23.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
a jaki to blad..? byc moze nam wiecej powie niz tobie.
oczywiscie masz uprawnienia do CRUD'a? j. |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 79 Pomógł: 0 Dołączył: 18.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
d3ut3r, a nie mógłbyś sprawdzić tego po prostu na swoim komputerze i powiedziec mi wtedy w czym jest problem ? Bo ja jestem początkujący z php jestem na 3 rozdziale książki Vademecum wydanie 4 i tutaj często powtarza mi się ta zmienna $DOCUMENT_ROOT a ja nadal nie wiem jak zrobic tak aby bylo dobrze
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 6 378 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Najlepiej wywal tę książkę do kosza i weź coś na czasie. Ukrywanie błędów przez @ to prosta droga do porażki. Po co tam jest przepisywanie POST?
Zainteresuj się czymś takim realpath(dirname(__FILE__)). Takich podstaw możesz się z materiałów w sieci nauczyć 100x lepiej. Książkę od Javy sobie lepiej kup gdzie będą wzorce i dobre praktyki opisane a nie źle wklepany banalny kod. -------------------- |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 79 Pomógł: 0 Dołączył: 18.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
sorry ale nie potrzebuje porad co do książek , taka książkę sobie wybrałem i z takiej będę korzystał i nie mów że jest zła bo wszystko jest bardzo dokładnie opisane poza tym jednym i opinie o tej książce są wszystkie pozytywne. a poza tym po jakiego grzyba piszesz jakieś glupie posty skoro nawet nie umiesz mi pomoc ?
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 6 378 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Sorry mistrzu. Problem w tym że ci pomogłem i napisałem jak możesz spróbować zdobyć ścieżkę. Najwyrażniej to było za trudne. Twoja cudowna książka niestety nie obejmuje jednej prostej funkcji file_put_contents
-------------------- |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 79 Pomógł: 0 Dołączył: 18.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
najwyraźniej tak albo źle mi wytlumaczyles
![]() |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 158 Pomógł: 43 Dołączył: 9.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
Co do wyrzucania książek, to jednak nie popieram, mimo że zgadzam się, że może być nieaktualna, ale może zawiera jakieś ciekawe informacje?
@bigos1995-95 jak już sie pewnie zorientowałeś jest zła ścieżka do pliku 'zamowienia.txt'. Jeśli chcesz wykorzystywać fopen, flock, fwrite i fclose zamiast file_put_contents i zrobić przykłady z książki, to w katalogu gdzie masz pliki 'formularz.htm' i 'przetworzzamowienie.php' załóż folder 'zamowienia' o ile jeszcze nie masz, następnie zamiast: wpisz tak jak chciał @viking albo albo jeśli masz PHP w wersji co najmniej 5.3, to Stałe __DIR__ i __FILE__ są opisane na stronie Magiczne stałe |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 6 378 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Ja też nie mam zamiaru się kłócić tylko nie widzę sensu czytania książki która od samego początku przedstawia złe nawyki, wygląda jak napisana dla PHP 4 (mocno nieaktualna) i pewnie nie wspomina o bezpieczeństwie. Bo więcej dowiesz się z lektury manuala PHP. Dobra książka nie opisuje (i to w dodatku źle) jak krok po kroku coś napisać tylko uczy myślenia. Prawda jest taka że większość książek dla PHP to przedruki dokumentacji które zupełnie nic nie wnoszą. Dlatego poleciłem Ci coś do Javy bo uwierz mi że nauczysz się 100x więcej a mimo wszystko oba języki są dość podobne i płynnie można między nimi przechodzić (czy też płynnie przejść do PHP jeśli poznasz Javę).
Przykładowo. Przepisywanie zmiennych dla samego podstawienia (kilka pierwszych linijek) nie ma zupełnie sensu bo tylko zapychasz pamięć. Gdyby chociaż tam było filtrowanie albo walidacja jeszcze można by zrozumieć. Tworzona jest data bez sprawdzania ustawień strefy czasowej serwera. Co to za dokument bez deklaracji DOCTYPE? Po co: Chyba bo to jest składnia z "" żeby nie łączyć bezsensownie ciągów. A jak już to ''. Co się stanie jak wpiszesz np w inpucie $iloscopon = 'aaa'; Po co $wartosc=0.00;? Rzutowanie typów do poczytania z dokumentacji. Deklaracja stałych w takiej samej ilości jak zmiennych. Tak się nie pisze. A z tego przykładu można wnioskować że to normalka. Ukrywanie błędów - błędów się nie ukrywa tylko poprawia. No i wspomnianych kilka funkcji do zapisu zamiast jednej. Jak widzisz prawie w każdej linii jest błąd dlatego uważam że to jest książka do kosza. Jeśli uczyć to porządnie tym bardziej że świeże umysły się za to zabierają. -------------------- |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 79 Pomógł: 0 Dołączył: 18.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za dokładne opisanie, zaraz to sprawce. A co do książki to może i masz racje, ale też nie mam porównania i jak powiedziałem wczesniej dopiero zaczynam zabawe z tym jezykiem a przed zakupem Vademecum oczywiście przeczytałem troche postow i pisali ze ksiazka jest bardzo dobra wiec ja kupilem za 100 zl to raczej jej nie wyrzuce do kosza bo za przeproszeniem "pieniedzmi nie sram"
Dobra, dzieki BaN wszystko działa a co do tego DOCUMENT_ROOT to jest jakas przestarzała funkcja czy co jest z nia nie tak ze nie dziala ![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 28.06.2025 - 02:36 |