Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Baza danych DOCUMENT_ROOT problem, Baza danych DOCUMENT_ROOT problem
bigos1995-95
post 18.05.2012, 15:57:55
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 questionmark.gif

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
Go to the top of the page
+Quote Post
Tajgeer
post 18.05.2012, 20:08:32
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?
Go to the top of the page
+Quote Post
bigos1995-95
post 18.05.2012, 21:14:51
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.
Go to the top of the page
+Quote Post
alegorn
post 19.05.2012, 07:56:17
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.
Go to the top of the page
+Quote Post
bigos1995-95
post 19.05.2012, 10:07:22
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 ?
Go to the top of the page
+Quote Post
d3ut3r
post 19.05.2012, 10:13:49
Post #6





Grupa: Zarejestrowani
Postów: 709
Pomógł: 176
Dołączył: 24.10.2010

Ostrzeżenie: (0%)
-----


  1. @ $wp = fopen("$DOCUMENT_ROOT/../zamowienia/zamowienia.txt", 'ab');


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:

  1.  
  2. echo "$DOCUMENT_ROOT/../zamowienia/zamowienia.txt";
  3.  


to wyświetli Ci ścieżkę i sprawdź czy ten plik istnieje.


--------------------
http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
Go to the top of the page
+Quote Post
bigos1995-95
post 19.05.2012, 21:15:58
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
Go to the top of the page
+Quote Post
d3ut3r
post 20.05.2012, 10:00:25
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!
Go to the top of the page
+Quote Post
bigos1995-95
post 22.05.2012, 22:32:32
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.
Go to the top of the page
+Quote Post
d3ut3r
post 22.05.2012, 23:40:29
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:

  1. $wp = fopen("zamowienia/zamowienia.txt", 'ab');
  2.  
  3. //lub
  4.  
  5. $wp = fopen("/zamowienia/zamowienia.txt", 'ab');
  6.  
  7. //...


ciężko tak na ślepo coś poradzić :/


--------------------
http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
Go to the top of the page
+Quote Post
alegorn
post 23.05.2012, 12:54:29
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.
Go to the top of the page
+Quote Post
bigos1995-95
post 23.05.2012, 17:25:53
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
Go to the top of the page
+Quote Post
viking
post 23.05.2012, 18:58:51
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.


--------------------
Go to the top of the page
+Quote Post
bigos1995-95
post 23.05.2012, 19:04:27
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 ?
Go to the top of the page
+Quote Post
viking
post 23.05.2012, 20:26:37
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


--------------------
Go to the top of the page
+Quote Post
bigos1995-95
post 23.05.2012, 22:44:16
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 smile.gif a co do ksiazki moze funckja file_put_contents jest w dalszej czesci ksiazki nie wiem jestem poczatkujacy w php. I tak miedzy nami, napisalem na tym forum zeby sie czegos dowiedziec a nie kłocic sie z użytkownikami wiec dalsze sprzeczanie sie nie ma sensu
Go to the top of the page
+Quote Post
BaN
post 24.05.2012, 00:08:22
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:
  1. $wp = fopen("$DOCUMENT_ROOT/../zamowienia/zamowienia.txt", 'ab');

wpisz tak jak chciał @viking
  1. $wp = fopen(realpath(__FILE__) . "/zamowienia/zamowienia.txt", 'ab');

albo
  1. $wp = fopen(dirname(__FILE__) . "/zamowienia/zamowienia.txt", 'ab');

albo jeśli masz PHP w wersji co najmniej 5.3, to
  1. $wp = fopen(__DIR__ . "/zamowienia/zamowienia.txt", 'ab');


Stałe __DIR__ i __FILE__ są opisane na stronie Magiczne stałe
Go to the top of the page
+Quote Post
viking
post 24.05.2012, 05:52:55
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:
  1. echo "<p>Zamówienie przyjęte o ".$data."</p>"

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ą.


--------------------
Go to the top of the page
+Quote Post
bigos1995-95
post 24.05.2012, 13:45:01
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 questionmark.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.06.2025 - 02:36