Benedikt: Fehlermeldung beim auslesen von datenbank

Hallo zusammen,

ich habe ein kleines Problem bei dem ihr mir hoffentlich weiterhelfen könnt. Meine Suche bei Google war bisher leider noch nicht von Erfolg gekrönt.

Ich habe nachfolgenden Quellcode für eine Auswertung eines Fragebogens. Dabei sollen die Werte der Checkboxen, die im Fragebogen angeklickt wurden, aus der Datenbank geholt und weiterverarbeitet werden. Problem ist nur, dass ich die Daten nicht mehr in meine Variable schreiben kann, so dass ich diese nutzen kann. Als Fehler kommt immer:

Warning: unserialize() expects parameter 1 to be string, array given in /users/benedikt86/www/imke/fragebogen/auswertung.php on line 30

Warning: array_push() expects parameter 1 to be array, boolean given in /users/benedikt86/www/imke/fragebogen/auswertung.php on line 29

Das Problem hängt sicherlich mit dem unserialize zusammen aber ich komme leider nicht weiter. Ich hoffe ihr könnt mir hier weiterhelfen.

Hier noch mein Quellcode:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Auswertung</title>
</head>

<body>

<?php

include ("../eintrag.php");
include ("../db.php");

$antwort = array();
$f1=0;

$sql = "SELECT antwort FROM fragebogen WHERE iid = '$id'";
$sql2 = "SELECT wert FROM antwort WHERE aid='$antwort'";

$ergebnis = mysql_query($sql) or die(mysql_error());

while ($row = mysql_fetch_object($ergebnis))
{
array_push($antwort,$row->antwort);
$antwort = unserialize($antwort);

	$wert = mysql\_query($sql2) or die(mysql\_error());  
	  
	$f1=$f1+$wert;  

}

?>

</body>
</html>

  1. Tach!

    Problem ist nur, dass ich die Daten nicht mehr in meine Variable schreiben kann, so dass ich diese nutzen kann. Als Fehler kommt immer:
    Warning: unserialize() expects parameter 1 to be string, array given in /users/benedikt86/www/imke/fragebogen/auswertung.php on line 30
    Warning: array_push() expects parameter 1 to be array, boolean given in /users/benedikt86/www/imke/fragebogen/auswertung.php on line 29
    Das Problem hängt sicherlich mit dem unserialize zusammen aber ich komme leider nicht weiter.

    Untersuche die Inhalte der beteiligten Variablen mit Hilfe von Kontrollausgabe (var_dump()). Verfolge gegebenenfalls rückwärts ihre Entstehungsgeschichte. Die Fehlermeldungen sagen lediglich aus, dass unerwartete Werte übergeben wurden. Warum das passiert, muss mit den erwähnten Nachforschungen untersucht werden.

    dedlfix.

  2. Hallo,

    Warning: unserialize() expects parameter 1 to be string, array given in /users/benedikt86/www/imke/fragebogen/auswertung.php on line 30
    Warning: array_push() expects parameter 1 to be array, boolean given in /users/benedikt86/www/imke/fragebogen/auswertung.php on line 29

    dann sollte man sich anschauen, was in Zeile 29 und 30 steht.

    Das Problem hängt sicherlich mit dem unserialize zusammen

    <quote author="Loriot">Ach. Ach was.</quote>

    $antwort = array();

    $f1=0;
    $sql = "SELECT antwort FROM fragebogen WHERE iid = '$id'";
    $sql2 = "SELECT wert FROM antwort WHERE aid='$antwort'";

    $ergebnis = mysql_query($sql) or die(mysql_error());

    while ($row = mysql_fetch_object($ergebnis))
    {
    array_push($antwort,$row->antwort);
    $antwort = unserialize($antwort);

      $wert = mysql_query($sql2) or die(mysql_error());  
        
      $f1=$f1+$wert;  
    

    }

    ?>

      
    Gehen wir logisch vor. Die erste Meldung betrifft das unserialize() in Zeile 30. PHP beschwert sich, dass [unserialize()](http://de1.php.net/manual/en/function.unserialize.php) einen String als Parameter sehen will, $antwort hast du aber als leeres Array definiert und ihm eine Zeile vorher gerade den ersten Arrayeintrag spendiert. Als Folge gibt unserialize() FALSE zurück, das gesamte Array $antwort wird also mit einem schlichten FALSE überschrieben.  
    Logisch, dass sich im nächsten Schleifendurchlauf [array_push()](http://de1.php.net/manual/en/function.array-push.php) beklagt, weil es als ersten Parameter ein Array erwartet, aber ein boolsches FALSE bekommt.  
      
    Ich verstehe nicht, was der gezeigte Codeausschnitt tun \*soll\*, aber anscheinend steckt ein gravierender Denkfehler dahinter.  
      
    So long,  
     Martin  
    
    -- 
    Wenn man sieht, was der liebe Gott auf der Erde so alles zulässt, hat man das Gefühl, er experimentiert immer noch.  
      (Sir Peter Ustinov, Charakterdarsteller, †2004)  
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    
    1. Das Ziel des Codes ist, dass er mir die Werte der angeklickten Checkboxen und Radio-Buttions in meinem Fragebogen liefert. Zuvor habe ich diese Werte für jede Gruppe mit serialize() in meine Datenbank gespeichert. Jetzt möchte ich einfach diese Werte wieder zurückwandeln.