Chyba v knize ?

Dobrý den, podle knížky jsem napsal kód:


<head>
<title>Bob's auto parts</title>
</head>
<body>
<h1>Bob's auto parts</h1>
<h2>Order result</h2>
<?php
echo "<p>Order processed at ";
echo date("H:i, jS F");
echo "<br />";
echo "<p>Your order is as follows";
echo "<br />";
echo "$tireqty tires<br />";
echo "$oilqty bottles of oil<br />";
echo "$sparkqty spark plugs<br />";
define("TIREPRICE", 100);
define("OILPRICE", 100);
define("SPARKPRICE", 4);
$totalqty = $tireqty + $oilqty + $sparkqty;
$totalamount = $tireqty * TIREPRICE
+ $oilqty * OILPRICE
+ $sparkqty * SPARKPRICE;
$totalamount = number_format($totalamount, 2);
echo "<br />\n";
echo "Items ordered: ".$totalqty."<br />\n";
echo "Subtotal: $".$totalamount."<br />\n";
$taxrate = 0.10; //Místní daň z prodeje je 10%
$totalamount = $totalamount * (1 + $taxrate);
$totalamount = number_format($totalamount, 2)
echo "Total including tax: $".$totalamount."<br>\n";
?>
</body>


A server mi vyhodí chybu

Parse error: syntax error, unexpected T_ECHO in /7p/wz.cz/g/grelek/processorder.php on line 31


Prosím, pokud víte kde je chyba, odpovězte :-) děkuji
$totalamount = number_format($totalamount, 2)
<HTML>$totalamount = number_format($totalamount, 2)
na konci chybí středník.

Příště vyznač řádek, kterého se chyba týká.</HTML>
Děkuji a ano, pro příště to udělám :-)

<head>
<title>Bob's auto parts</title>
</head>
<body>
<h1>Bob's auto parts</h1>
<h2>Order result</h2>
<?php
echo "<p>Order processed at ";
echo date("H:i, jS F");
echo "<br />";
echo "<p>Your order is as follows";
echo "<br />";
if( $totalqty == 0)
{
echo "You did not order anything on the previous page!";
}
else
{
if( $tireqty>0 )
echo "$tireqty tires<br />";
if( $oilqty>0 )
echo "$oilqty bottles of oil<br />";
if( $sparkqty>0 )
echo "$sparkqty spark plugs<br />";
}
define("TIREPRICE", 100);
define("OILPRICE", 100);
define("SPARKPRICE", 4);
$totalqty = $tireqty + $oilqty + $sparkqty;
$totalamount = $tireqty * TIREPRICE
+ $oilqty * OILPRICE
+ $sparkqty * SPARKPRICE;
$totalamount = number_format($totalamount, 2);
echo "<br />\n";
echo "Items ordered: ".$totalqty."<br />\n";
echo "Subtotal: $".$totalamount."<br />\n";
$taxrate = 0.10; //Místní daň z prodeje je 10%
$totalamount = $totalamount * (1 + $taxrate);
$totalamount = number_format($totalamount, 2);
echo "Total including tax: $".$totalamount."<br>\n";
?>
</body>


Nechápu kde je problém v

if( $totalqty == 0)
{
echo "You did not order anything on the previous page!";
}
else
{
if( $tireqty>0 )
echo "$tireqty tires<br />";
if( $oilqty>0 )
echo "$oilqty bottles of oil<br />";
if( $sparkqty>0 )
echo "$sparkqty spark plugs<br />";
}


před tím, i když byl formulář vyplněný, to hlásilo chybu kterou jsem si napsal, ale teď i když není nic vyplněného to zase chybovou hlášku ignoruje. Už jsem z toho na prášky, prosím poraďte.
To skutečně chceš, abychom pročítali ten skript řádek po řádku a hledali chybu? Aspoň napiš nějakou chybovou hlášku, kterou to píše.

V tuto chvíli vidím použití nedefinovaných proměnných $totalqty, $tireqty, $oilqty, $sparkqty.
Kite, zřejmě jsem to napsal blbě, ok beru ;)

Chybovou hlášku to nehlásí, problém je v tom že ať si s tím lámu hlavu jak chci, tak to buď napíše: You did not order anything on the previous page! ; což má napsat pokud jsi v formláři nic nevyplnil. Nebo i když je formulář prázdný tak to zase vypíše:

0 tires
0 bottles of oil
0 spark plugs

a toto by zase měl vypsat na chybovou hlášku stručně a znovu:

Když má vypsat MNOU VYTVOŘENOU chybovou hlášku, vypisuje nákup který obsahu 0 ode všeho. A když má VYPSAT NÁKUP tak zase nějak napíše chybovou hlášku.

Jinak se omlouvám ale takhle na fórech jsem zhruba 2 měsíce protože je mi teprve 13 a zajímám se o HTML apod. asi od dubna ;)
Dobrá, zkusíme to trochu jinak.

Proměnnou $tireqty nemáš nijak naplněnu. Zřejmě očekáváš, že se ti tam dostane hodnota ze vstupního formuláře z položky se jménem "tireqty". Ve skutečnosti se ta hodnota nachází v proměnné $_GET['tireqty'] nebo $_POST['tireqty']. Záleží na tom, kterou metodu jsi použil ve formuláři.

Pokud jsi použil metodu GET (default), tak zkus ještě před prvním použitím proměnné $tireqty udělat toto přiřazení:

$tireqty=$_GET['tireqty'];

Nevím, jakou máš knížku, ale asi je od nějakého amerického autora. Zkus tuhle:

http://www.kosek.cz/php/php-tvorba-interaktivnich-internetovych-aplikaci.pdf

Je tam podobný příklad a je udělaný správně. I když ... já to dělám trochu jinak a myslím si, že lépe. Ovšem to je věc názoru.
Kniha je PHP a MySQL z roku 2002. Taky čtu Linuxsoft

Díky moc a na odkaz se podívám ;-)
Parse error: syntax error, unexpected T_STRING in /7p/wz.cz/g/grelek/processorder.php on line 80

řádky které se PHP nelíbí:

$date = date("H:i, jS F");

$outputstring = $date ,TIRES $tireqty ,OIL $oilqty ,SPARK PLUGS $sparkqty ,$ $totalamount , $address , $find;

$fp = fopen(orders.txt, "a");
fwrite($fp, $outputstring);
fclose($fp);
$outputstring = $date .",TIRES". $tireqty .",OIL". $oilqty .",SPARK PLUGS". $sparkqty .",". $totalamount . "," . $address. "," .$find;
Chybička :)

do orders.txt [http://grelek.wz.cz/orders.txt/] se mi zapisuje při každé objednávce $outputsting místo jeho obsahu
Možná proto, že $outputstring máš v apostrofech.
Teď koukám, že tohle asi nebude fungovat:
$fp = fopen(orders.txt, "a");
Zkus takto:
$fp = fopen("orders.txt", "a");

Správná volba uvozovek/apostrofů je někdy dost důležitá.
Kite, mohl by jsi mi to prosím vysvětlit ? Myslím kdy se píší uvozovky a kdy apostrofy, to je mi zatím na PHP největší záhadou protože jsem to prostě nepochopil.
Ježiš já jsem roura, "" je méně důležité než ' ' že ano ?
Zkus si to na příkladu:

$string="text";
echo "text1: $string\n";
echo 'text2: $string\n';

Pokud máš řetězec v uvozovkách, tak se zpracuje $string i \n, ale v apostrofech se to vypíše jen jako text.
Roura je velmi užitečný unixový operátor. Není to v důležitosti, ale ve způsobu zpracování vnitřku řetězce.
áha :-) díky ;-) už to funguje :)))
Koukám že si pleteš pojmy hack a cheat. Hackování je často užitečná činnost, cheatování nikoli.
No táák :-D vždyť to předělam na něco jinýho ;-) na tydle účely máme ve skupině profíka :) http://bonfires.ic.cz/ - toť jeho dílo ;)
A poslední pruďas, pak si jdu hrát :P...

Jak mám udělat aby se mi v textovém dokumentu orders.txt, zobrazovala každá nová objednávka na nový řádek ?

zde kód:

$date = date("H:i, jS F");

$outputstring = $date .",TIRES ". $tireqty .",OIL ". $oilqty .",SPARK PLUGS ". $sparkqty .", $". $totalamount . "," . $address.

"NEXT CUSTOMER";

$fp = fopen("orders.txt", "a");
fwrite($fp, $outputstring);
fclose($fp);
Už jsem to naznačil:

$outputstring = $date .",TIRES ". $tireqty .",OIL ". $oilqty .",SPARK PLUGS ". $sparkqty .", $". $totalamount . "," . $address."NEXT CUSTOMER\n";

Je to ta drobnost "\n" na konci. Bohužel tady se projevuje nejednotnost formátů souborů u různých OS, pro Windows je vhodnější "\r\n". Vyzkoušej obojí.

Často se to definuje pomocí
define('NL',"\n"); // NL jako New Line

a pak se to používá takto:
$outputstring = $date .",TIRES ". $tireqty .",OIL ". $oilqty .",SPARK PLUGS ". $sparkqty .", $". $totalamount . "," . $address."NEXT CUSTOMER".NL;
Mnohokráté díky ... :)
<?php
$jmeno = $_POST["jmeno"];
$zprava = $_POST["zprava"];

$odeslat = $jmeno ."-". $zprava."\n";

$fp = fopen(odeslane.txt, a);
fwrite($fp, $odeslat);
fclose($fp);

readfile(odeslane.txt, r);
?>

Jak mám udělat aby se: $odeslat = $jmeno ."-".$zprava."\n";
dalo pokaždé na nový řádek ? Děkuji