Dobrý den, potřeboval poradit co mám dělat když z formuláře odešlu data tak to nahlásí tuto chybu:
Parse error: parse error, expecting `','' or `';'' in /3w/webz.cz/n/np/15-03.php on line 30
Kód stránky:
<head>
<title> Novoměstský pětiboj 2011 - on-line přihláška</title>
</head>
<body bgcolor="#ffebcd">
<?php
$spojeni = mysql_connect("mysql.webzdarma.cz","np","*");
if (!$spojeni)
{
die('Nelze se připojit: ' . mysql_error());
}
mysql_select_db("np", $spojeni);
$sql="INSERT INTO adresar (jmeno, prijmeni, RC, SI, Email)
VALUES
('{$_POST[jmeno]}', '{$_POST[prijmeni]}', '{$_POST[RC]}', '{$_POST[SI]}', '{$_POST[Email]}')";
if (!mysql_query($sql,$spojeni))
{
die('Chyba: ' . mysql_error(). ' | '.$sql);
}
echo <h1> Nový záznam byl úspěšně přidán </h1>
<form ACTION="np_prihlasky.html" METHOD="GET">
<input TYPE=Submit
VALUE="Prohlížení seznamu přihlášených závodníků">
</form>
<form ACTION="15-02.php" METHOD="GET">
<input TYPE=Submit
VALUE="Přidání nového závodníka">
</form>
<form ACTION="np.html" METHOD="GET">
<input TYPE=Submit
VALUE="Zpět na úvodní stranu">
</form>;
mysql_close($spojeni);
?>
Kdyby někdo věděl co s tím tak prosím napište co mám dělat.
Děkuji za odpověďi. Martin Křivda
<HTML><code>echo <h1> Nový záznam byl úspěšně přidán </h1></code>
=>
<code>echo "<h1> Nový záznam byl úspěšně přidán </h1>"<b style="color:red;">;</b></code>
BTW, ohlídej si vstupy, máš tam SQL injection jako prase ;)</HTML>
Děkuji za odpověď snad to už teď bude fungovat. :-)
Teď to hlásí tuto chybu prosím tak ještě poraďte.
Parse error: parse error in /3w/webz.cz/n/np/15-03.php on line 31
Děkuji
<HTML>Příště uveď řádky v okolí chyby, jinak je to hádání z křišťálové koule.
Nemůžeš mít html kód volně vložený do php kódu. Ten FORM musí být buď součástí toho echa, nebo před ním ukonči php a za ním zase začni.</HTML>
HTML a PHP se nesmí mezi sebou míchat. A pokud už mají být mezi sebou, tak se musí také mezi sebou odlišit. Jde totiž o to, že PHP skript se musí nejdříve přeložit a přitom provádí i přísnou kontrolu. Pokud narazí na něco, co se mu nelíbí, tak to ukončí a zahlásí chybu. A zde se mu nelíbí právě to HTML. Jednoduše interpret označí "echo <h1> ...." za chybu, protože nezná <H1> a to další.
V případě interakce mezi PHP a HTML se používají dvě metody.
- Prioritní je HTML. V tomto případě PHP kódy musí být řádně označeny <?php ..... ?>
- Prioritní je PHP. V tomto případě veškeré HTML výstupy musí být ohraničeny do uvozovek jako řetězce echo "jakékoli HTML";
Když vezmu tvůj kód, tak HTML mezi echem se dá klidně zapsat jako HTML. V tom případě je ale potřeba předtím uzavřít PHP a na konci zase obalit PHPčkem mysql_close($spojeni);
Dále, jak už se zmínil Nipal, máš tam vážné bezpečnostní rizika. Není radno do databáze pouštět přímý vstup. Nikdy nevíš co na vstupu zadá uživatel. Je proto lepší předtím ošetřit vstup pomoci mysql_real_escape_string($_POST['']);
<head>
<title> Novoměstský pětiboj 2011 - on-line přihláška</title>
</head>
<body bgcolor="#ffebcd">
<?php
$spojeni = mysql_connect("mysql.webzdarma.cz","np","*");
if (!$spojeni)
{
die('Nelze se připojit: ' . mysql_error());
}
mysql_select_db("np", $spojeni);
$sql="INSERT INTO adresar (jmeno, prijmeni, RC, SI, Email)
VALUES
('{$_POST[jmeno]}', '{$_POST[prijmeni]}', '{$_POST[RC]}', '{$_POST[SI]}', '{$_POST[Email]}')";
if (!mysql_query($sql,$spojeni))
{
die('Chyba: ' . mysql_error(). ' | '.$sql);
}
?>
<h1> Nový záznam byl úspěšně přidán </h1>
<form ACTION="np_prihlasky.html" METHOD="GET">
<input TYPE=Submit
VALUE="Prohlížení seznamu přihlášených závodníků">
</form>
<form ACTION="15-02.php" METHOD="GET">
<input TYPE=Submit
VALUE="Přidání nového závodníka">
</form>
<form ACTION="np.html" METHOD="GET">
<input TYPE=Submit
VALUE="Zpět na úvodní stranu">
</form>
<?php
mysql_close($spojeni);
?>
Moc dík už to funguje.
Teď už jen ty vstupy.