Får detta felmess:
Fatal error: Call to undefined function: () in /cust/ec/ec/httpd.www/articles_php/index.php on line 31
Jag har en funktion i dbconnection.php som jag sen inkluderar på en sida. Funktionen:
function swe_lng($str)
{
$str=str_replace( 'å', 'å', $str);
$str=str_replace( 'ä', 'ä', $str);
$str=str_replace( 'ö', 'ö', $str);
$str=str_replace( 'Å', 'Å', $str);
$str=str_replace( 'Ä', 'Ä', $str);
$str=str_replace( 'Ö', 'Ö', $str);
$str=str_replace( chr(13), '<br />', $str);
$str = addslashes($str);
return $str;
}
Så här ser koden ut där jag tänker implementera funktionen:
echo('<p>'.swe_lng($data["artTxt"]).'</p>')
Jag får alltså bara error. Vad är felet? tpf!
Vilken rad är 31? Har du ett ; sist på echo-raden?
sl0kMedlem sedan maj 2005562 inlägg Om du läser dokumentationen ser du att det inte är tillåtet med variabelfunktioner i echo m.fl
dvs korrekt syntax
echo '<p>'.swe_lng($data["artTxt"]).'</p>';
http://se.php.net/echo
http://se.php.net/manual/sv/functions.variable-functions.php
TroxyMedlem sedan mars 20041 505 inlägg Får se nu, enda skilladen är paranteserna? Vad gör det för skillnad egentligen, har alltid undrat.
I övrigt så undrar jag om det är nödvändigt att ersätta åäö med en egen funktion. Det finns väl redan htmlentities() ?
sl0kMedlem sedan maj 2005562 inlägg Ja enda skillnaden är parenteserna.. om du läser sidorna jag hänvisade till så står det där.
echo, print mfl är inte riktiga funktioner utan språkkonstruktorer.
tydalMedlem sedan juni 20034 013 inlägg
sl0k skrev:
Om du läser dokumentationen ser du att det inte är tillåtet med variabelfunktioner i echo m.fl
Nu har det nog blivit lite missförstånd här...
"Variabelfunktion" är funktionsanrop med funktionsnamnet i en variabel:
<?php
function testfunktion()
{
}
$var = "testfunktion";
$var(); // Detta kör funktionen testfunktion().
?>
Men eftersom echo mycket riktigt inte är någon funktion så funkar det inte att anropa den på det sättet:
<?
$var = "echo";
$var(); // Detta funkar inte, eftersom echo inte är en funktion.
?>
tydalMedlem sedan juni 20034 013 inlägg
sl0k skrev:
Ja enda skillnaden är parenteserna..
Parenteserna gör ingen skillnad i det här fallet. Koden är korrekt såväl med som utan (förutsatt att det saknade semikolonet sätts dit).
Om man hade skickat flera "parametrar" till echo hade man däremot varit tvungen att skippa parenteserna, men i det aktuella exemplet är det ju bara en parameter som skickas, nämligen en sträng, vilket är det normala.
sl0kMedlem sedan maj 2005562 inlägg oj.. jo missade nog lite där.. var lite stressad
Aldrig använt mig av echo ( ) själv .. läste lite snabbt på php.net o drog tydligen fel slutsatser..
sry..
Jag får fortfarande samma felmeddelande. Någon som kan hjälpa? Tack.
PeeerMedlem sedan mars 20025 907 inlägg
m_soderlund skrev:
Jag får fortfarande samma felmeddelande. Någon som kan hjälpa? Tack.
Vilken är rad 31 i index.php och varför ska du ersätta å med å osv?
MeleaMedlem sedan juli 20033 147 inlägg Vad vill du åstakomma med följande?
$str=str_replace( 'chr(13)','<br />', $str);
Jag ersätter åäö osv till å osv för att göra det lättare för sökmotorer.
Så här ser sidan ut:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Artiklar</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<?php
require("dbconnection.php");
$dbcon=new session($seshid);
if (empty($_GET["id"])) {
$query='SELECT id,header,dt FROM tbl_articles ORDER BY id DESC';
[red][b]$resultat=$dbcon->query($query);[/b][/red]
$i=0;
while ($data = $dbcon->get_array($resultat))
{
$i++;
echo ('<a href="index.php?id='.$data["id"].'">'.sweLng($data["header"]).'</a> ('.$data["dt"].')<br />');
}
}
if ($_GET["id"]) {
$query='SELECT id,header,artTxt,dt FROM tbl_articles WHERE id='.$_GET['id'];
$resultat=$dbcon->query($query);
[red][b]$i=0;[/b][/red]
while ($data = $dbcon->get_array($resultat))
{
$i++;
echo('<h2>'.$data["header"].'</h2><p>'.sweLng($data["artTxt"]).'</p><p>('.$data["dt"].')</p>');
}
}
?>
</body>
</html>
Raderna det blir fel på, rad 20 resp. 32 (tidigare rad 31, det är jag som varit inne och ändrat lite i html-koden) är röd och fetmarkerade. De fungerar utmärkt om jag inte använder funktionen sweLng på något av fälten jag skriver ut från databasen.
Vad jag vill göra med sista replace-raden är att ersätta nya rader med <br />.
MatteMedlem sedan aug. 20002 975 inlägg Och hur kommer funktionen sweLng() in i skriptet?
Du har inte definierat den i skriptet du visar, och den enda fil du inkluderar är dbconnection.php. Ligger funktionen i dbconnection.php?
Ja, funktionen ligger i dbconnection.php!
Är alltså swe_lng och sweLng två olika funktioner? Kolla en gång till så att funktionen har samma namn på alla ställen.
Finns verkligen metoden query i klassen session?
PeeerMedlem sedan mars 20025 907 inlägg $dbcon=new session($seshid);
Tycker jag ser konstigt ut. Heter databasklassen session?
Nej, swe_lng och sweLng är exakt samma funktion. Förlåt för förvirringen! FUnktionen har samma namn på alla ställen.
MatteMedlem sedan aug. 20002 975 inlägg Det kanske är lika bra du visar innehållet i dbconnection.php.
Peeer skrev:
$dbcon=new session($seshid);
Tycker jag ser konstigt ut. Heter databasklassen session?
Japp. Det är ett script jag har fått från ett it-företag och modifierat och jag har inte bytt ut klassnamn och sånt.