Avatar billede stefmeister Nybegynder
18. december 2004 - 20:32 Der er 14 kommentarer og
1 løsning

Fatal error: (firkanter) operator

Hej

Jeg har lavet en indkøbskurv, som virker helt fint på min egen server, og gør præcis som den skal, men hvis jeg loade den op på min server, så får jeg følgene fejl:

Fatal error: [] operator not supported for strings in /web/www/frac/users/steffilm/ny/kurv.php on line 65

Det er rigtig irriterende. Hvis jeg trykker på vis kurv, så kan den godt finde ud af at tingene er blevet lagt i kurven, men alligevel skriver den fejlen, selvom den gør som den skal.
Nogen der ved hvad man kan gøre anderledes?


min kode:

<?

$vare = $_GET['vare'];
$pris = $_GET['pris'];

if($_GET['vare'] && $_GET['pris']) {
if(!isset($_SESSION['kurv'])) {
    $_SESSION['kurv'] = array();
    $_SESSION['pris'] = array();
    $_SESSION['kurv'][] = $vare;
    $_SESSION['pris'][] = $pris;
} else {
    $_SESSION['kurv'][] = $vare;
    $_SESSION['pris'][] = $pris;
}
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//DA"
"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Kurv</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>


<body>
<div class="kurvphp">
<font class="kurvphpbruger">Viser kurven for&nbsp;<? echo $_SESSION['user']; ?>:</font>
<p>

<?

$tal = 0;
$total = 0;

if($_SESSION['kurv'] && $_SESSION['pris']) {
foreach($_SESSION['kurv'] as $item) {

$tal = $tal+1;

}
foreach($_SESSION['pris'] as  $pris) {

$total = $total+$pris;

}
}

echo '<font class="kurvphptekst"><b>Du har&nbsp;'.$tal.'&nbsp;varer i kurven</b></font><p>';
echo '<font class="kurvphptekst"><b>Ialt:&nbsp;&nbsp;&nbsp;&nbsp;kr.&nbsp;'.$total.',-</b></font><p>';
echo '
<table bordercolor="#111111" width="100%" id="AutoNumber1">
  <tr>
    <td width="50%"><a target="_top" href="index.php?vis=kurv">Vis Kurv</a></td>
    <td width="50%"><a href="kurv.php?empty=true"><p align="right" style="margin-right:4px;">Tøm Kurv</a></td>
  </tr>
</table>
';

}
?>
</div>
</body>
</html>
Avatar billede jakoba Nybegynder
18. december 2004 - 20:50 #1
din fejlmeddelelse siger  linie 65 i kurv.php    og hvis den fil du viser os virkelig er  kurv.php  skulle der stå [] et sted i:
---------------------
echo '
<table bordercolor="#111111" width="100%" id="AutoNumber1">
  <tr>
    <td width="50%"><a target="_top" href="index.php?vis=kurv">Vis Kurv</a></td>
    <td width="50%"><a href="kurv.php?empty=true"><p align="right" style="margin-right:4px;">Tøm Kurv</a></td>
  </tr>
</table>
';

}
?>
</div>
------------------------------------------

men der står ikke [] nogetsted i det område. (ps det er ikke en firkant, men 2 klammer [ og ].)

mvh JakobA
Avatar billede stefmeister Nybegynder
18. december 2004 - 21:00 #2
ved godt at det ikke er en firkant, men man måtte ikke skrive [] i overskriften :D

det er her den brokker sig.

} else {
    $_SESSION['kurv'][] = $vare;  //linie 64
    $_SESSION['pris'][] = $pris;  //linie 65
}
}


Men det mærkelige er jo at den brokker sig, men alligevel gør den det den skal.
Avatar billede jakoba Nybegynder
18. december 2004 - 21:12 #3
Så må der næsten være et andet sted i din kode du opretter en sessssionvariabel
  $_SESSION['kurv']
eller
  $_SESSION['pris']
og kommer en streng i den istedetfor et array.

prøv at indsætte et par debuglinier for at finde ud af lidt mere om hvad der foregår:

} else {
    var_dump( $_SESSION['kurv'] );  //DEBUG LINIE, fjernes når det duer
    $_SESSION['kurv'][] = $vare;  //linie 64
    var_dump( $_SESSION['pris'] );  //DEBUG LINIE, fjernes når det duer
    $_SESSION['pris'][] = $pris;  //linie 65
}

så får du at vide præcis hvad de to indeholder på det tidspunkt hvor fejlen sker. Det gør det nemmere at hitte ud af hvad der går galt.

mvh JakobA
Avatar billede stefmeister Nybegynder
18. december 2004 - 21:22 #4
Når jeg tilføjer den første vare til min kurv, så virker det fint.

når jeg har tilføjet første vare:

Viser kurven for admin:
Du har 1 varer i kurven

Ialt:    kr. 20,-

Vis Kurv Tøm Kurv



når jeg tilføjer andet vare:

array(1) { [0]=> string(1) "3" } string(2) "20"
Fatal error: [] operator not supported for strings in /web/www/frac/users/steffilm/ny/kurv.php on line 67

ret irriterende.
Avatar billede jakoba Nybegynder
18. december 2004 - 21:30 #5
det er så $_SESSION['pris'] der har fået en forkert værdi. det burde give:

array(1) { [0]=> string(1) "3" } array(1) { [0]=> string(2) "20" }

altså BÅDE $_SESSION['vare'] og $_SESSION['pris'] skal være arrays

søg i din kode efter et andet sted hvor $_SESSION['pris'] får en værdi. Der må være et for den indeholder noget andet end den får i den kode vi ser her.
Avatar billede stefmeister Nybegynder
18. december 2004 - 21:40 #6
jeg har søgt i koden... det eneste sted der bliver tildelt en værdi er på de der linier omkring 65.


Hvis det hjælper noget, så er her hele kurv.php (index.php bliver $_SESSION['pris'] og $_SESSION['vare'] slet ikke brugt):

<?
session_start();
include("db.php");

if($_GET['bestil'] == "true") {
$to = "MINEMAIL@domain.dk";

$message = "Bestilling fra ".$_SESSION['user']."\n";

foreach($_SESSION['kurv'] as $item) {

$sql = "SELECT FILMID, FILMNAVN, PRIS FROM FILMTABEL WHERE FILMID = '".$item."'";
$qh = mysql_query( $sql );
while ( $row = mysql_fetch_assoc( $qh ) ) {

$cost = $cost+$row[PRIS];
$message1 = $message1."\n".$row[FILMNAVN];
$message = $message."\n".$row[FILMNAVN];

}

}

$message1 = $message1."\n\nDet bliver ialt:    ".$cost.",-";
$message = $message."\n\nDet bliver ialt:    ".$cost.",-";

if(mail($to, "Bestilling fra ".$_SESSION['user'].":", $message, "From:".$_SESSION['email']."")) {
mail($_SESSION['email'], "Tak for din bestilling", "Tak for din bestilling af:\n".$message1."\n\nOrdren er nu blevet modtaget\n\n", "From: ".$to."");
unset($_SESSION['kurv']);
unset($_SESSION['pris']);
}
echo "<META HTTP-EQUIV='Refresh' CONTENT='0;URL=index.php'>";


} else {

if($_GET['sletid']) {
$key = array_search($_GET['sletid'], $_SESSION['kurv']);
unset($_SESSION['kurv'][$key]);
header("location: index.php?vis=kurv");
}

if($_GET['empty'] == "true") {
unset($_SESSION['kurv']);
unset($_SESSION['pris']);
}

if($_GET['emptyagain'] == "true") {
unset($_SESSION['kurv']);
unset($_SESSION['pris']);
header("location: index.php?vis=kurv");
}

$vare = $_GET['vare'];
$pris = $_GET['pris'];

if($_GET['vare'] && $_GET['pris']) {
if(!isset($_SESSION['kurv'])) {
    $_SESSION['kurv'] = array();
    $_SESSION['pris'] = array();
    $_SESSION['kurv'][] = $vare;
    $_SESSION['pris'][] = $pris;
} else {
    $_SESSION['kurv'][] = $vare;
    $_SESSION['pris'][] = $pris;
}
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//DA"
"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Kurv</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>


<body>
<div class="kurvphp">
<font class="kurvphpbruger">Viser kurven for&nbsp;<? echo $_SESSION['user']; ?>:</font>
<p>

<?

$tal = 0;
$total = 0;

if($_SESSION['kurv'] && $_SESSION['pris']) {
foreach($_SESSION['kurv'] as $item) {

$tal = $tal+1;

}
foreach($_SESSION['pris'] as  $pris) {

$total = $total+$pris;

}
}

echo '<font class="kurvphptekst"><b>Du har&nbsp;'.$tal.'&nbsp;varer i kurven</b></font><p>';
echo '<font class="kurvphptekst"><b>Ialt:&nbsp;&nbsp;&nbsp;&nbsp;kr.&nbsp;'.$total.',-</b></font><p>';
echo '
<table bordercolor="#111111" width="100%" id="AutoNumber1">
  <tr>
    <td width="50%"><a target="_top" href="index.php?vis=kurv">Vis Kurv</a></td>
    <td width="50%"><a href="kurv.php?empty=true"><p align="right" style="margin-right:4px;">Tøm Kurv</a></td>
  </tr>
</table>
';

}
?>
</div>
</body>
</html>
Avatar billede jakoba Nybegynder
18. december 2004 - 21:57 #7
det var meget underligt.
Avatar billede stefmeister Nybegynder
18. december 2004 - 22:14 #8
Ja... det er som at den ikke kan finde ud af at $_SESSION['pris'] er et array.
Og også pga. at det virker på min egen lokale server.
Avatar billede stefmeister Nybegynder
18. december 2004 - 22:37 #9
meget mystisk.

Nu omdøbte jeg $_SESSION['pris'] til $_SESSION['prisen'] i alle dokumenter, hvor den var. Og nu virker det helt perfekt.
Avatar billede jakoba Nybegynder
18. december 2004 - 22:47 #10
?  :-))
Avatar billede stefmeister Nybegynder
18. december 2004 - 22:48 #11
ingen anelse om hvad der var galt. men det virker nu.
Avatar billede olebole Juniormester
19. december 2004 - 19:47 #12
<ole>

100 mod 1 på, at du alligevel - et eller andet sted - sætter $_SESSION["pris"] til en streng, uden at være opmærksom på det. Med mindre, du har en helt personlig PHP-version, er det den eneste måde, den fejl kan opstå  ;o)

/mvh
</bole>
Avatar billede stefmeister Nybegynder
20. december 2004 - 13:26 #13
Ja men det mærkelige er at jeg sagde find&replace og trykkede på replace all. Og nu virker det.
Avatar billede jakoba Nybegynder
21. december 2004 - 13:10 #14
Det kan være i enhver af dine .php sider der benytter den session
Avatar billede stefmeister Nybegynder
23. december 2004 - 16:12 #15
det ved jeg det ikke er... for jeg har kun 2 sider :D Men xxxx være med det, det virker nu.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester