ERLEDIGT
NEIN
NEIN
ANTWORTEN
10
10
ZUGRIFFE
665
665
EMPFEHLEN
-
Ja, ich glaube, diese Frage wird schon öfter gekommen sein, aber in der Suche hab ich jetzt nichts gefunden,w as mir wietergeholfen hätte.
Folgender Code macht Ärger:
Ein- und Austragen des Angebotes in das SESSION-Array:
Anzeigen der Array-Daten der SESSION:PHP-Code:if(!isset($_SESSION["marker"]) OR !is_array($_SESSION["marker"]))
{
$_SESSION['marker'] = array();
}
if($_GET["marker"]== "1" AND !in_array( $inserat_nr, $_SESSION["marker"]))
{
array_push($_SESSION["marker"], $inserat_nr);
}
if($_GET["marker"]== "2" AND in_array( $inserat_nr, $_SESSION["marker"]))
{
$key = array_search($inserat_nr, $_SESSION["marker"]);
unset($_SESSION["marker"][$key]);
}
echo ' <div class="sendform">
<div class="sendform_header">Zu Markern hinzufügen/entfernen</div>';
if( in_array( $inserat_nr, $_SESSION["marker"]))
{
echo '<form action="index.php?kategorie=4&inseratnr='.$inserat_nr.'&profile_site='.$profile_site.'&marker=2" method="POST" target="">
<p><input type="Submit" name="" value="Marker entfernen" id="login_buttons2"></p>
</form>';
}
else
{
echo '<form action="index.php?kategorie=4&inseratnr='.$inserat_nr.'&profile_site='.$profile_site.'&marker=1" method="POST" target="">
<p><input type="Submit" name="" value="Marker setzen" id="login_buttons2"></p>
</form>';
}
echo '</div>';
PHP-Code:if(!empty($_SESSION["marker"]) AND is_array($_SESSION["marker"]))
{
$select = 'SELECT A.*, B.Bezeichnung, D.main_bild FROM inserat AS A LEFT JOIN rassen AS B ON A.Rasse = B.Nummer LEFT JOIN inserateignung AS C ON A.Inseratnr= C.Inseratnr LEFT JOIN medbilder AS D ON A.Inseratnr = D.inseratnr WHERE ';
$i= '0';
foreach ($_SESSION["marker"] as $marker) {
if ($i>'0')
{
$select.= 'OR ';
}
$select.= 'A.Inseratnr="'.$marker.'" ';
$i++;
}
$select .= 'AND A.sichtbar = 1 AND A.Enddatum>="'.$actuell_day.'" GROUP BY A.Inseratnr ORDER BY A.Top DESC, A.Startdatum ASC';
echo '<div id="treffer_header">Ihre Marker:</div>';
$siudb->sqlcommand($select);
while($data = $siudb->sql_data())
{
$angebot_nr = $data["Inseratnr"];
$angebot_titel = $data["Titel"];
$angebot_preiskat = $data["Preiskat"];
$angebot_preis = $data["Preis"];
$angebot_rasse = $data["Bezeichnung"];
$angebot_rasseid = $data["Rasse"];
$angebot_ort = $data["PLZStandort"].' '.$data["Standort"];
$angebot_bundesland = $data["Bundesland"];
$angebot_top = $data["Top"];
$angebot_main_bild = $data["main_bild"];
$angebot_highlight = $data["Highlight"];
echo '<div ';
if($angebot_highlight == 1) { echo 'class="search_results_1_highlight" ';} else { echo 'class="search_results_1" ';}
if ($angebot_top== 1) { echo 'id="top'; if ($angebot_highlight== 1) {echo '_highlight';} echo '"'; }
echo '">';
echo '<table><tr><td valign="top">'; if (!empty($angebot_main_bild)) { echo '<img src="./media/main_pictures/MAIN'.$angebot_main_bild.'" width="120" height="90" border="0" alt="">'; } echo '</td><td valign="top">';
echo '<h1><a href="index.php?kategorie=4&inseratnr='.$angebot_nr.'">'.$angebot_titel.'</a></h1><p>';
echo '<b>Preis: € '.$angebot_preis.' '.$angebot_preiskat.'</b><br><br>';
echo '<b>Rasse:</b> '.$angebot_rasse;
echo ' - <b>Standort:</b> '.$angebot_ort.' / '.$angebot_bundesland;
echo '</p></td></tr></table>';
echo '</div>';
}
}
So, und nun wird es lustig. Mein Server liest die Daten normal aus dem Array in der SESSION, schreibt sie in der vorgegebenen Struktur aus und zeigt sie an. Der Server, auf dem Das Script laufen soll gibt folgenden Fehler aus:
Warning: Invalid argument supplied for foreach() in /srv/www/xxx/marker.php on line 21
Das Array $_SESSION["marker"] ist also letztlich kein Array mehr. Daher funktioniert die WHILE-Schleife nicht mehr. Also, nun meine Frage: Was muss ich am Code, was am Server ändern, damit es funktioniert.
Leider ist es auch keine Alternative, das Ganze in einer Datenbank zu speichern, nur, um der Frage vorzubeugen.
Danke und LG,
ThomasGeändert von boykottke (18.03.08 um 00:01 Uhr)
Warning! Keyboard not found, please press F1.
-
session_register speichert keinen Arrays soweit ich weiß sondern legt für jedes Argument des Array eine eigen Variable an.
lass dir mit print_r($_SESSION) deine Session anzeigen das weißt du was du iterieren musst
gruß
kato
-
18.03.08 01:19 #3
- Registriert seit
- Dec 2007
- Ort
- Bremen
- Beiträge
- 3.418
Hi,
wo verwendet er denn session_register? Finde ich nicht...
@boykottke:
Bist Du sicher, dass Du den richtigen Code-Ausschnitt zeigst? Die einzige foreach-Schleife, die ich sehe, befindet sich innerhalb der Bedingung
Wenn $_SESSION["marker"] kein Array ist, wird der Zweig mit der Schleife also gar nicht ausgeführt.PHP-Code:if(!empty($_SESSION["marker"]) AND is_array($_SESSION["marker"]))
LG
PS.: Es wäre vielleicht hilfreich, wenn Du den Code einrückst, das Klammern zählen ist ziemlich anstrengend...
-
Array ( [marker] => Array ( [0] => 137 ) )
Warning: Invalid argument supplied for foreach() in
Das ist die Originalausgabe... es sieht so aus, als sei marker ein Array.
Scheint ebenso, dass er das array nach
verliert, da es ja dort noch erfolgreich als Array geprüft wird...PHP-Code:if(!empty($_SESSION["marker"]) AND is_array($_SESSION["marker"]))
Warning! Keyboard not found, please press F1.
-
18.03.08 01:48 #5
- Registriert seit
- Dec 2007
- Ort
- Bremen
- Beiträge
- 3.418
Hi,
PHP "verliert" nicht von alleine von einer Zeile zur nächsten ein Array. So, wie der Code da steht, kann der Fehler nicht durch diese foreach-Schleife ausgelöst werden. Prüf' noch mal, ob das auch wirklich Zeile 21 der Datei marker.php ist.Scheint ebenso, dass er das array nach
PHP-Code:
if(!empty($_SESSION["marker"]) AND is_array($_SESSION["marker"]))
verliert, da es ja dort noch erfolgreich als Array geprüft wird...
Wo genau hattest Du das print_r($_SESSION) überhaupt eingebaut?
LG
-
Ja, ich dachte bisher auch immer, dass er ein ARRAY nicht einfach so verlieren kann. Der richtige Codeausschnitt ist es. session_start steht in der übergeordneten index.php, eine session_register gibt es nicht, da die Variable $_SESSION["marker"] durch direkte Registrierung unter diesem Namen gespeichert wird, was laut PHP-Manual ab Version 4.1 auch ohne weiteres möglich ist. Gleichzeitig sind auf dem Server die register_globals deaktiviert. Dementsprechend würde der Code mit session_register nicht funktionieren.
Ansonsten: Das ist tatsächlich die einzige for-Schleife im Code. Wie gesagt, erst überprüft er, ob es das ARRAY auch wirklich gibt, dann soll er das ARRAY auslesen und da kommt dann die Fehlermeldung.
print_r($_SESSION) habe ich direkt über der IF-Bedingung ausgeben lassen. Deshalb meine Verwunderung.
Ach so,d er Code war formatiert, als ich ihn eingegeben habe. Nach der Bearbeitung allerdings ist die Formatierung verloren gegangen, keine Ahnung Warum. Sorry...Geändert von boykottke (18.03.08 um 15:11 Uhr)
Warning! Keyboard not found, please press F1.
-
18.03.08 18:43 #7
- Registriert seit
- Dec 2007
- Ort
- Bremen
- Beiträge
- 3.418
Hi,
irgendetwas musst Du übersehen. Kannst Du mal das ganze Script posten oder als Zip hochladen, wenn's zu groß ist?
LG
-
Ich werde nachher mal die essentiellen Dateien hochladen... Hab sie allerdings nicht hier vor Ort, da ich grad auf Arbeit bin.
Die Frage, die ich mir haltd erzeit stelle, ist die, warum das auf meinem Server geht, auf dem Kundenserver jedoch nicht...Warning! Keyboard not found, please press F1.
-
Okay, die entscheidenden Dateien sind schon oben... eingebunden werden sie durch die Index, die folgendermaßen aussieht:
PS: Scheinbar übergibt Eclipse keine Formatierung. Sorry.PHP-Code:<?php
[LEFT]include('./conf/conf_source.php');
include('./func/func.db.php');
session_start ();
$kategorie = $_GET["kategorie"];
if (!isset($_GET["kategorie"]))
{
$kategorie = 3;
}
$post_index = $_GET["post_index"];
if (!isset($_GET["post_index"]) OR $_GET["post_index"]<0)
{
$post_index = 0;
}
$datum = getdate();
$timestamp_global = time();
$actuell_day = date("Y-m-d", $timestamp_global);
// skin wird eingefügt
include('./skin/pferdekauf_header.php');
include('./skin/pferdekauf_menu.php');
// an dieser stelle wird der hauptteil gestartet
echo ' ';
//kategorien werden geladen
switch ($kategorie) {
case 3:
include('./vars/home.php');
break;
case 4:
include('./vars/buy_horse.php');
break;
case 5:
include('./vars/sell_horse.php');
break;
case 6:
include('./vars/marker.php');
break;
case 7:
include('./vars/faq.php');
break;
case 8:
include('./vars/search.php');
break;
default:
echo 'Keine Kategorie geladen';
break;
}
// askin footer wird eingefügt[/LEFT]
include('./skin/pferdekauf_footer.php');
?>Warning! Keyboard not found, please press F1.
-
20.03.08 19:27 #10
- Registriert seit
- Dec 2007
- Ort
- Bremen
- Beiträge
- 3.418
Hi,
Okay, die entscheidenden Dateien sind schon oben...
Meinst Du damit die Ausschnitte, die Du oben gepostet hast? Wie sieht die (komplette) marker.php aus?
LG
-
Das ist die komplette marker.php...
Warning! Keyboard not found, please press F1.
Ähnliche Themen
-
Stateful-Bean verliert seine Werte warum?
Von ceene im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 13Letzter Beitrag: 10.08.10, 12:56 -
Array verliert Elemente
Von DiDiJo im Forum PHPAntworten: 4Letzter Beitrag: 01.10.08, 17:17 -
Session verliert Variablen oder ich habs Prinzip nicht verstanden *lächel*
Von BitMan im Forum PHPAntworten: 10Letzter Beitrag: 23.10.07, 15:41 -
Objekt verliert Werte
Von ZeroEnna im Forum Javascript & AjaxAntworten: 9Letzter Beitrag: 27.06.06, 09:08 -
SESSION verliert variablen auf übernächster seite
Von forsakingmax im Forum PHPAntworten: 12Letzter Beitrag: 11.05.05, 21:05





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren