Autor Zpráva
Musilda
Profil
Zdravím

s PHP začínám a proto jsem si koupil knihu, "chytrou" podle které postupuji. Narazil jsem na problém a nejsem sto ho vyřešit.

kód :
<?php
$spojeni = mysql_connect( "localhost","root","owerdrive")
  or die (mysql_error() ) ;
mysql_select_db("moviesite")
  or die (mysql_error() );
$dotaz = "SELECT movie_id,movie_name, movie_director, movie_leadactor FROM movie";
$vysledek = mysql_query ($dotaz,$spojeni)
  or die (mysql_error() );
  
$pocet_filmu = mysql_num_rows($vysledek);
 
$filmy_zahlavi = <<<EOD
<h2><center>Databáze filmových recenzí</center></h2>
<table width="70%" border= "1" cellpading= "2" cellspacing="2" aling="center">
  <tr>
    <th>Název filmu</th>
    <th>Rok uvedení na plátna kin</th>
    <th> Režisér</th>
    <th>V hlavní roli</th>
    <th>Kategorie</th>
   </tr>
EOD;
function zobraz_rezisera() {
  global $reziser_filmu;
  global $reziser;
  
  $dotaz_d = "SELECT people_fullname". 
              "FROM people". 
              "WHERE people_id='$reziser_filmu'";
  $vysledky_d = mysql_query ( $dotaz_d )
    or die ( mysql_error() );
  $radek_d = mysql_fetch_array($vysledky_d );
  extract( $radek_d );
  $reziser = people_fullname;
}
function zobraz_hlavni_roli() {
  global $hlavni_role_ve_filmu;
  global $hlavni_role;
  $dotaz_a = "SELECT people_fullname". 
              "FROM people".
                "WHERE people_id='$hlavni_role_ve_filmu'";
  $vysledky_a = mysql_query ( $dotaz_a )
    or die (mysql_error() );
  $radek_a = mysql_fetch_array($vysledky_a );
  extract($radek_a);
  $hlavni_role = people_fullname;
}
$filmy_podrobnosti ='';
while ($radek= mysql_fetch_array ($vysledek) ) {
  $id_filmu = $radek['movie_id'];
  $nazev_filmu = $radek['movie_name'];
  $reziser = $radek['movie_director'];
  $v_hlavni_roli = $radek['movie_leadactor'];
  
zobraz_rezisera();
zobraz_hlavni_roli();
  $filmy_podrobnosti .=<<<EOD
  <tr>
    <td><a href="podrobnosti_o_filmu.php?id_filmu=$id_filmu" title = "Další informace o filmu '$nazev_filmu'">$nazev_filmu</td>
    <td>$reziser</td>
    <td>$v_hlavni_roli</td>
  </tr>
EOD;  
}
$filmy_podrobnosti .=<<<EOD
  <tr>
    <td>&nbsp</td>
  </tr>
  <tr>
    <td>Celkem filmů:$pocet_filmu</td>
  </tr>
</table>
EOD;
$filmy_pata = "</table>";
$filmy =<<<MOVIE
              $filmy_zahlavi
              $filmy_podrobnosti
              $filmy_pata
MOVIE;
echo "V naší databázi jsou $pocet_filmu filmy";
echo $filmy;
?>


Chybu hlásí na posledním řádku.
Za radu děkuji
BetaCam
Profil
Musilda

Tato chyba je většinou způsobena neuzavřením {} závorek. Což je sice i problém v tvém scriptu, ale né doslova.

Chyba je v tomto cyklu :

while ($radek= mysql_fetch_array ($vysledek) ) {
  $id_filmu = $radek['movie_id'];
  $nazev_filmu = $radek['movie_name'];
  $reziser = $radek['movie_director'];
  $v_hlavni_roli = $radek['movie_leadactor'];
  
zobraz_rezisera();
zobraz_hlavni_roli();
  $filmy_podrobnosti .=<<<EOD
  <tr>
    <td><a href="podrobnosti_o_filmu.php?id_filmu=$id_filmu" title = "Další informace o filmu '$nazev_filmu'">$nazev_filmu</td>
    <td>$reziser</td>
    <td>$v_hlavni_roli</td>
  </tr>
EOD;  
}


A to přesně za EOD;

Za EOD; se nesmí nic vyskytovat. Umaž si tedy ty dvě mezery, které za EOD; máš.
Musilda
Profil
Díky za pomoc.
masterrrrrrrr
Profil *
Mám podobný problém

<?php
// REFERER - odkud prisel navstevnik
$referer = 2; // predpokladame prechod v ramci serveru


if(isset($_GET['referer'])) {

$escape = array ('%u010C', '%u010E', '%u011A', '%u0147', '%u0158', '%u0160', '%u0164', '%u016E', '%u017D', '%u010D', '%u010F', '%u011B', '%u0148', '%u0159', '%u0161', '%u0165', '%u016F', '%u017E', '%u0105', '%u013E');

$unescape = array ('Č', 'Ď', 'Ě', 'Ň', 'Ř', 'Š', 'Ť', 'Ů', 'Ž', 'č', 'ď', 'ě', 'ň', 'ř', 'š', 'ť', 'ů', 'ž', 'š', 'ž');

// rozkoduje URL a prevede na mala pismena
$http_referer = str_replace($escape, $unescape, urldecode(addslashes($_GET['referer'])) );
$http_referer = strtolower( autoczech($http_referer, 'win') );

if ($http_referer == '') { // prime volani
$referer = 1;

} elseif (eregi(no_Referer, $http_referer)) { // prechod v ramci serveru
$referer = 2;
}

// VYHLEDAVACE - jaka fraze byla pouzita pri vyhledavani
$explode = explode('.', $url['host']); // rozdeli adresu serveru na jednotlive casti
$host_domain = $explode[count($explode) - 2] . '.' . $explode[count($explode) - 1]; // domena 2. urovne

// jedna se o vyhledavac?
$query = mysql_query("SELECT * FROM searchengine WHERE server = '$host_domain'");
if($result = mysql_fetch_array($query)) {
// zjistime pouzitou frazi - pres parametr, ktery vyhledavac pouziva
$variables = explode('&', $url['query']);
for($i = 0;$i < count($variables);$i++) {
$explode = explode('=', $variables[$i]);
if($explode[0] == $result['variable']) {
$searchtext = $explode[1]; // fraze pouzita pri vyhledavani
break;}
}



// pokud se podarilo zjistit frazi, zapiseme vse do databaze
if($searchtext != '') {
$server = $result['id'];
// je fraze v databazi ? (pokud ne, pridame ji)
$query = mysql_query("SELECT id FROM searchtext WHERE query = '$searchtext'");
if ($result = mysql_fetch_array($query)) {
$search_id = $result['id'];
} else {
$query = mysql_query("INSERT INTO searchtext VALUES ('', '$searchtext')");
$search_id = mysql_insert_id();
}
$query = mysql_query("INSERT INTO searched VALUES ('', '$date', '$server', '$search_id')");
}
}



// VYHLEDAVACI FRAZE
// celkovy pocet pristupu ze vsech vyhledavacu za dane obdobi
$query = mysql_query("SELECT count(id) FROM searched WHERE $sql_search_date");
$result = mysql_fetch_array($query);
$count_search = $result['count(id)'];

if($count_search != 0) {
echo '<h2>Fráze použité při vyhledávání</h2>';
echo '<table width="680" cellspacing="0">';
echo '<tr><th>Vyhledávač (fráze)</th><th>Počet</th><th class="width1">Podíl</th></tr>';

echo '<tr><td>Celkem</td><td>' . $count_search . '</td><td> </td></tr>';

// vybirame vyhledavace podle jejich zastoupeni
$query = mysql_query("SELECT searchengine.id AS id, searchengine.server AS server, count(searchengine.id) AS count_it FROM searched JOIN searchengine ON (searchengine.id = searched.server) WHERE $sql_search_date GROUP BY searchengine.id ORDER BY count_it DESC");

$max = mysql_result($query, 0, 'count_it'); // pocet pristupu z nejvíce zastoupeneho vyhledavace
$move = mysql_data_seek($query, 0); // presuneme se znovu na zacatek

while($result = mysql_fetch_array($query)) {
$width = round($result['count_it']/$max*380); // sirka obrazku znazornujiciho podil
$rate = sprintf('%.2f', $result['count_it']/($count_search/100)); // podil v procentech

echo '<tr class="tableheader"><td>' . $result['server'] . '</td><td>' . $result['count_it'] . '</td><td><img src="1.gif" width="' . $width . '" height="8" alt="" /> ' . $rate . ' %</td></tr>' . "\n";

// vybirame vyhledavací fraze u daneho vyhledavace (podle poctu)
$id = $result['id']; // id vyhledavace
$query2 = mysql_query("SELECT searchtext.query AS query, count(searchtext.id) AS count_it FROM searched JOIN searchtext ON (searched.query = searchtext.id) WHERE searched.server = '$id' AND $sql_search_date GROUP BY searchtext.id ORDER BY count_it DESC");

while($result = mysql_fetch_array($query2)) {
$rate = sprintf('%.2f', $result['count_it']/($count_search/100)); // podil v procentech
$width = round($result['count_it']/$max*380); // sirka obrazku znazornujiciho podil
echo '<tr><td>' . $result['query'] . '</td><td>' . $result['count_it'] . '</td><td><img src="1.gif" width="' . $width . '" height="8" alt="" /> ' . $rate . ' %</td></tr>' . "\n";
}
}

echo "</table>\n\n";
}





?>


Taky chyba na posledním řádku. Děkuji za rady
I am
Profil *
Je to to trapné, ale prosím co přesně dělá ono pro mě záhadné EOD?
Měsíček
Profil
Říká se tomu syntaxe HEREDOC, ovšem nemusíš tam mít EOD, ale můžeš tam dát klidně IAM.
I am
Profil *
No, ale spíš jak se to liší když to tam je versus není, jaké to má výhody a co to má za úkol :)
Měsíček
Profil
Třeba nemusíš si hrát s uvozovkama a apostrofama (escapovat je).
rihot
Profil
Mám ten samej problém, ale hlásí to na line 34, prosím help
<?php
require "errors.php"; // chybove hlasky a zpravy
// byl odeslan formular ?
if(!IsSet($_POST['sent'])) {      
  $uziv_jmeno = $_POST['uziv_jmeno'];
  $heslo = $_POST['heslo'];
  $heslo_2 = $_POST['heslo_2'];
  $jmeno = $_POST['jmeno'];
  $prijmeni = $_POST['prijmeni'];
  $email = $_POST['email'];
  $adresa = $_POST['adresa'];
  $tel = $_POST['tel'];
 // byly vyplneny vsechny povinne udaje ?
  if($uziv_jmeno=="" || $heslo=="" || $heslo_2=="" || $email=="" || $jmeno=="" || $prijmeni=="" || $adresa=="" || $tel=="" ) {
    $error[] = 6;
  }
  
  // pokud byl zadan email, zkontroluje jeho platnost
  if($email != "" && (!EregI("^[a-z0-9]+[a-z0-9\._-]*@[a-z0-9]+[a-z0-9\._-]*\.[a-z]{2,10}$", $email) || EregI("\.{2,}", $email) || EregI("_{2,}", $email) || EregI("-{2,}", $email))) {
    $error[] = 7;
  }
  // rovnaji se hesla ?
  if($heslo!=$heslo_2) {
    $error[] = 8;
  }
  
  require("/db_connect.php");  // pripoji k databazi
  // existuje zadany login ?
  $query = @MySQL_Query("SELECT uziv_jmeno FROM zakaznici WHERE uziv_jmeno LIKE '$uziv_jmeno'") or Weblog_Error(2);
  if(MySQL_Num_Rows($query) != 0) {
    $error[] = 9;
  } 
  
  if(IsSet($error)) {
    $heslo = MD5($heslo);
    $query = @MySQL_Query("INSERT INTO zakaznici VALUES ('', '$uziv_jmeno', '$heslo', '$jmeno', '$prijmeni', '$email', '$adresa', '$tel')") or Weblog_Error(2);
    
    // prihlaseni pomoci session
    Session_Start();
    $_SESSION['auth'] = Array(
    'id' => $user_id = MySQL_Insert_ID(),
    'uziv_jmeno' => $name,
    'jmeno' => $name,
    'prijmeno' => $prijmeni,
    'email' => $email,
    'time' => Time()+1800
    );
    
    MySQL_Close();
    
    // presmerovani do administracni casti
    $message = 6;
    Header('Location: http://'. $_SERVER['HTTP_HOST'] . '/uziv_rozhrani.php' . $message . '&' . SID);
    exit;
  }
  MySQL_Close();
}

// chybove hlasky
if(IsSet($error)) for($i=0;$i<Count($error);$i++) echo '<p class="error">' . $msg_error[$error[$i]] . '</p>'; 

?>
panther
Profil
rihot:
Mám ten samej problém
Už zde jednou padlo, co je příčinou. Přečti si celou diskusi a budeš vědět.
vahy
Profil
zkouknul byto nekdo nejak nemuzu najit chybu :(

<?php

$link = mysql_connect('127.0.0.1', 'vahy', 'vahy');// spojení s databází
if (!$link) {
die('Not connected : ' . mysql_error());
}

// make foo the current db
$db_selected = mysql_select_db('databaze', $link);//vyber databáze
if (!$db_selected) {
die ('Can\'t use foo : ' . mysql_error());
}



$jmeno= $_GET["odesilatel"]; //jmeno
$email=$_GET["email"]; //email
$pokoj=$_GET["predmet"]; //kolej
$zprava=$_GET["zprava"]; //zavada
if (isset($_GET['odesli_mail'])){
//až jse zmackne tlacitko odeslat tak všecky promene ve formulari jse uloží do databaze
$vysledek = mysql_query(" INSERT INTO vsichni (jmeno, email, pokoj, zavada, kolej) VALUES('$_POST[jmeno]','$_POST[email]','$_POST[pokoj]','$_POST[zprava]','$_POST[sazava]')");

echo mysql_errno($link).":".mysql_error($link)."\n" //odchytavac chyb v mysql

?>
<?link rel="stylesheet" type="text/css" href="styl.css"><?php
$cisla = Array("0" => "nula", "1" => "jedna", "2" => "dvì", "3" => "tøi", "4" => "ètyøi", "5" => "pìt", "6" => "šest", "7" => "sedm", "8" => "osm", "9" => "devìt");
$i = mt_rand(0,9);
$cislo = $cisla[$i];
$sifra = md5($i);

if(isset($_POST["odesli_mail"])) {
$cislo2 = escapeshellcmd($_POST["cislo"]);
if(($_POST["sifra"]) && ($_POST["sifra"] != md5($cislo2))) {
$oznam = " - èíslo bylo špatnì opsáno<br />";
$over = FALSE;
}

if(isset($_POST["odesilatel"])) {
$odesilatel = htmlspecialchars(escapeshellcmd($_POST["odesilatel"]));
$odesilatel = strtr($odesilatel, "AACCDEEEINOORSTUUUYZaaccdeeeinoorstuuuyz", "ÁÄÈÇÏÉÌËÍÒÓÖØŠÚÙÜÝŽáäèçïéìëíòóöøšúùüýž");
if($odesilatel == "") {
$oznam = " - povinné pole <b>Odesílatel</b> nebylo vyplnìno<br />";
$over = FALSE;
}
$odesilatel = substr($odesilatel, 0, 50);
}

if(isset($_POST["predmet"])) {
$predmet = htmlspecialchars(escapeshellcmd($_POST["predmet"]));
$predmet = strtr($predmet, "AACCDEEEINOORSTUUUYZaaccdeeeinoorstuuuyz", "ÁÄÈÇÏÉÌËÍÒÓÖØŠÚÙÜÝŽáäèçïéìëíòóöøšúùüýž");
if($predmet == "") {
$oznam .= " - povinné pole <b>Èíslo pokoje</b> nebylo vyplnìno<br />";
$over = FALSE;
}
$predmet = substr($predmet, 0, 5);
} else {
$predmet = $data[vych_pred];
}

if(isset($_POST["email"])) {
$email = htmlspecialchars(escapeshellcmd($_POST["email"]));
if($email == "") {
$oznam = " - povinné pole <b>Váš email</b> nebylo vyplnìno<br />";
$over = FALSE;
$pokrac = 1;
}


}

if($_POST["zprava"] == "") {
$oznam .= " - povinné pole <b>Zpráva</b> nebylo vyplnìno<br />";
$over = FALSE;
} else {
$zprava = $_POST["zprava"];
$vychozi = Array(";","'","&","<",">");
$nahrad = Array(",","","&","&lt;","&gt;");
$zprava = str_replace($vychozi,$nahrad,$zprava);
$vychozi = Array("","","","","\n");
$nahrad = Array("<b>","</b>","<i>","</i>"," <br /> ");
$zprava = str_replace($vychozi,$nahrad,$zprava);
$slova = explode(" ",$zprava);
$zprava = "";
for($i = 0; $i < sizeof($slova); $i++) {
if(preg_match('~"(http://[^ ]+\.[^ ]+)"~', '~$slova[$i]~')) {
$cast = substr($slova[$i], 0, 30);
if(strlen($slova[$i]) > 30) {
$odkaz = "<a href=\"\\1\">$cast&hellip;</a>";
} else {
$odkaz = "<a href=\"\\1\">$cast</a>";
}
$slova[$i] = ereg_replace("(http://[^ ]+\.[^ ]+)", " $odkaz ", $slova[$i]);
} else {
$slova[$i] = wordwrap($slova[$i], 40, " ", 1);
}
$zprava .= " ".$slova[$i];
}

$pocet = substr_count($zprava, "<b>");
$pocet2 = substr_count($zprava, "</b>");
if($pocet != $pocet2) {
$pridat = $pocet - $pocet2;
for($i = 0; $i < $pridat; $i++) {
$zprava .= "</b>";
}
}

$pocet = substr_count($zprava, "<i>");
$pocet2 = substr_count($zprava, "</i>");
if($pocet != $pocet2) {
$pridat = $pocet - $pocet2;
for($i = 0; $i < $pridat; $i++) {
$zprava .= "</i>";
}
}
}

if(file_exists("$slozka/konfigurace.php")) {
include("$slozka/konfigurace.php");
} else {
$oznam = "Konfiguraèní soubor mailového formuláøe <b>konfigurace.php</b> nebyl nalezen.";
$over = FALSE;
}

$hlavicky = "From: $odesilatel <$email>\n";
$hlavicky = "X-Sender: <$email>\n";
$hlavicky = "Content-Type: text/html; charset=".$kodovani."\n";



if($over) {
mail('vahy.t@seznam.cz',"jmeno","email","pokoj","zavada");
$oznam = "<b>Zpráva byla úspìšnì odeslána.</b>";
}
}
?>
<script type="text/javascript">
<!--
function area(text) {
var txtarea = document.post.zprava;
text = '' + text + '';
if (txtarea.createTextRange && txtarea.caretPos) {
var caretPos = txtarea.caretPos;
caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? caretPos.text + text + ' ' : caretPos.text + text;
txtarea.focus();
} else {
txtarea.value += text;
txtarea.focus();
}
}
// -->
</script>
<div id="mailform">
<form action="" method="post" name="post">
<fieldset>
<legend>&nbsp;Kontaktní formuláø&nbsp;</legend>
<?php
if($data["odesilatel"] == 1) { echo "\t\t\t<label><b>Odesílatel:</b> </label><input type=\"text\" name=\"odesilatel\" />\n"; }
if($data["email_odes"] == 1) { echo "\t\t\t<label><b>Váš email:</b> </label><input type=\"text\" name=\"email\" />\n"; }
if($data["predmet"] == 1) { echo "\t\t\t<label><b>pokoj:</b> </label><input type=\"text\" name=\"predmet\" />\n"; }
if($data["antispam"] == 1) { echo "\t\t\t<label>Opište èíslicí: <b>$cislo</b></label><input type=\"text\" name=\"cislo\" id=\"kod\" /><input type=\"hidden\" name=\"sifra\" value=\"$sifra\" style=\"display: none;\" />\n"; }
?>
<label><b>Závada:</b> </label><textarea name="zprava" cols="20" rows="5"></textarea>
<div id="format"><a href="javascript:area('[b][/b]')">tuèné</a> | <a href="javascript:area('[i][/i]')">kurzíva</a> | <a href="javascript:area(' http://')">odkaz</a></div>;
<input type="submit" name="odesli_mail" value="Odeslat" id="odeslat" />
<?php
if(!$over) {
echo "<br />".$oznam."<br /><b>Zpráva nebyla odeslána!</b>!";
} else {
echo $oznam ;
}
?>
</fieldset>
</form>
<div id="odkaz">made by vahy <a href="./form/admin.php">@</a></div>
</div>
Davex
Profil
vahy:
Najít chybu syntaxe programovacího jazyka jsou naprosté základy programování. Musíš to zvládnout sám.

Pokud ti PHP nehlásí žádnou chybu s číslem řádku, tak si zapni chybové hlášky v administraci hostingu nebo pomocí konfiguračních voleb v souboru .htaccess:
php_flag display_errors 1
php_value error_reporting 6135
MrWarlock
Profil *
taky mám problém a to v tomto scriptu:

<?php
$planet = ($planet);
if ($planet == "Veldin"):
include "Veldin.html";
if ($planet == "Pokitaru"):
include "Pokitaru.html";
endif;
?>

mám to na stránku o jedný hře, tak se nedivte :-)
dík za radu
panther
Profil
MrWarlock:
otevíráš 2 IFy, uzavíráš jeden.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: