Hallo Undefined,
ich gebe zu im Brustton der Überzeugung behauptet zu haben, der Rest sei kein Problem mehr für. Aber das ziehe nach Recherchen in den Manuals und eigenem Ausprobieren zurück.
Also der erste Part, dass nur das im Auswertungsteil angezeigt wird, was auch definitiv ausgewählt wurde, das klappt ja prima. Nur will ich als kostenbewußter Kunde von Giften und Neurotika auch wissen, was mich mein Hobby kostet.
Ergo probiere ich folgendes aus, um ein zweidimensionales Array zu verstehen:
PHP-Code:
<head>
<title>test</title>
<meta name="GENERATOR" content="Quanta Plus">
<link rel="stylesheet" type="text/css" href="css/stylesheet.css">
</head>
<body>
<?php
$daten = array(
1 => array("Aspirin","125,56"),
2 => array("Neurotin","25,59"),
3 => array("Tegretal","15,89"),
4 => array("Zentropil","55,45"),
5 => array("Arsen","45,77")
);
echo "<div style=\"width: 250px; text-align: right;\">
<form action=\"" . $_SERVER['PHP_SELF'] . "\" method=\"post\">";
echo "<p>";
foreach ($daten AS $m){
echo $daten[$m][0] . " zu ". $daten[$m][1] . " €<br>";
}
echo "</p>";
echo "<input type=\"submit\" name=\"Bestellungen\" value=\"Submit\"/>
<form>
</div>";
?>
</body>
</html>
Hier bekomme ich die Ausgabe:
Warning: Illegal offset type in /srv/www/hofapotheke/bestellung2.php on line 20
Was ich als PHP-Novize absolut nicht kapiere. Was meinen die da mit illegalen Offset-Typen?
Dagegen scheine ich das Grundprinzip des Arrays kapiert zu haben. Denn wenn ich folgendes mache:
PHP-Code:
<head>
<title>test</title>
<meta name="GENERATOR" content="Quanta Plus">
<link rel="stylesheet" type="text/css" href="css/stylesheet.css">
</head>
<body>
<?php
$daten = array(
1 => array("Aspirin","125,56"),
2 => array("Neurotin","25,59"),
3 => array("Tegretal","15,89"),
4 => array("Zentropil","55,45"),
5 => array("Arsen","45,77")
);
echo "<div style=\"width: 250px; text-align: right;\">
<form action=\"" . $_SERVER['PHP_SELF'] . "\" method=\"post\">";
echo "<p>";
$i = 1;
foreach ($daten AS $m){
echo $daten[$i][0] . " zu ". $daten[$i][1] . " €<br>";
$i++;
}
echo "</p>";
echo "<input type=\"submit\" name=\"Bestellungen\" value=\"Submit\"/>
<form>
</div>";
?>
</body>
</html>
habe ich zumindest mal eine Ausgabe wie:
Aspirin zu 125,56 €
Neurotin zu 25,59 €
Tegretal zu 15,89 €
Zentropil zu 55,45 €
Arsen zu 45,77 €
Wie baue ich das aber in Dein Script ein, so daß zusätzlich noch der Preis individuell zum Produkt erscheint? Ich denke, das mit dem Berechnen des Gesamtpreises kriege ich wirklich noch hin, nur beim Grundprizip komme ich partout nicht voran.
Vor allem, was bedeutet das " $k => $medicine" foreach ($daten AS $k => $medicine ). Warum muß ich da einem Wert einen Schlüssel zu weisen?
Hier ist noch einmal Dein Script, leicht abgewandelt, damit es für mich lesbarer wird:
PHP-Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>test</title>
<meta name="GENERATOR" content="Quanta Plus">
<link rel="stylesheet" type="text/css" href="css/stylesheet.css">
</head>
<body>
<?php
// Ertselle ein Array mit den Daten
$daten = array("Aspirin", "Neurotin", "Tegretal", "Zentropil", "Arsen");
//$daten = array(
// 1 => array("Aspirin","125,56"),
// 2 => array("Neurotin","25,59"),
// 3 => array("Tegretal","15,89"),
// 4 => array("Zentropil","55,45"),
// 5 => array("Arsen","45,77")
//);
echo "<div style=\"width: 250px; text-align: right;\">
<form action=\"" . $_SERVER['PHP_SELF'] . "\" method=\"post\">";
// Alle Daten aus Array $daten Generieren
$m = 0;
foreach ($daten AS $k => $medicine )
{
echo "<label>" . $medicine . " ";
echo "zu " . $price . " € " . "
<SELECT name=\"" . $medicine . "\">";
// Durchlaufe immer 9 Werte
foreach (range(0,10) AS $amount ) {
$select = ( $amount === 0 ) ? " selected" : "";
echo "<option value=\"" . $amount . "\" $select>" . $amount . "</option>\n";
}
echo "</select>
</label>
<br/>";
}
echo "<input type=\"submit\" name=\"Bestellungen\" value=\"Submit\"/>
<form>
</div>";
// Nehme Post variablen und sehe nach was vorhanden ist
// In dem ich sie mit den Arraydaten vergleiche ;)
if ( isset($_POST['Bestellungen']) )
{
foreach ( $_POST AS $k => $wert )
{
if ( in_array($k, $daten) && $wert != "0" )
echo "Bestellt: " . $k . " Anzahl: " . $wert . "<br/>";
}
}
?>
</body>
</html>
Also es wäre super, ich bekäme trotz Brustton der Überzeugung noch einmal einen so brauchbaren Fingerzeig.
Vielen dank
Archilles
Lesezeichen