Ich hab ein problem mit dem verknüpfen von zeichenketten. Und zwar sollen in einer foreach-schleife alle produkt-ids als zeichenkette ausgegeben werden (HTML-liste). Diese werden in ein html template geschrieben, dies geschieht mittels str_replace().
auszug aus shop.php
auszug aus template produkte.html
<div id="warenkorb">Ihr Warenkorb:<br>
[inhalt]
</div>
Das problem ist, wenn sich z.b. die produkt-id "1" im array befindet , erscheint im html-template auch die 1 als listeneintrag
Wird das php skript wieder aufgerufen, weil eine neue produkt-id "2" dem array hinzugefügt wurde, erscheint dann anstelle der 1 die 2 in der liste. Ich möchte aber das dort die 1 stehen bleibt, dann die 2 folgt, also erweitert wird.
Das funktioniert nicht obwohl die listeneinträge ja immer erweitert / verknüpft werden mit dem .= operator.
Die variable $message hat nicht den gwünschten inhalt "<u1><li> 1 <li> 2 </u1> sondern nur "<u1><li> 1 </u1>"
Wo liegt der fehler?
mfg
roh101
auszug aus shop.php
PHP-Code:
<?php
...
if( $_GET["produkt_id"] )
{ ### Produkt-ID's im Session-Array speichern ###
$_SESSION["ausgewaehlte_produkte"][] = $_GET["produkt_id"];
}
###html-template einlesen
$template = file_get_contents('produkte.html');
....
### Vorhandene Produkt-ID'S aus dem Session-Array lesen, falls welche existieren ###
if(array_key_exists( "ausgewaehlte_produkte", $_SESSION ) && count( $_SESSION["ausgewaehlte_produkte"]) > 0)
{
$message.= "<ul>\n";
foreach( $_SESSION["ausgewaehlte_produkte"] as $ids )
$message.= "<li>$ids\n";
$message.= "</ul>\n";
}
### Die zeichenkette [inhalt] wird durch die variable $message ersetzt
$template2 = str_replace("[inhalt]", $message, $template);
echo $template2; ## template mit den id's ausgeben
session_destroy();
break;
}
?>
<div id="warenkorb">Ihr Warenkorb:<br>
[inhalt]
</div>
Das problem ist, wenn sich z.b. die produkt-id "1" im array befindet , erscheint im html-template auch die 1 als listeneintrag
Wird das php skript wieder aufgerufen, weil eine neue produkt-id "2" dem array hinzugefügt wurde, erscheint dann anstelle der 1 die 2 in der liste. Ich möchte aber das dort die 1 stehen bleibt, dann die 2 folgt, also erweitert wird.
Das funktioniert nicht obwohl die listeneinträge ja immer erweitert / verknüpft werden mit dem .= operator.
Die variable $message hat nicht den gwünschten inhalt "<u1><li> 1 <li> 2 </u1> sondern nur "<u1><li> 1 </u1>"
Wo liegt der fehler?
mfg
roh101
Kommentar