ERLEDIGT
JA
JA
ANTWORTEN
9
9
ZUGRIFFE
272
272
EMPFEHLEN
-
Hallo Leute,
Ich will zwei Arrays abfragen, die aber von einander abhängen. In einem Array steht an einer Stelle der Name für etwas und in dem anderen Array an der selben Stelle ein Wert zu dem Namen. Jetzt möchte ich die beiden Arrays in der selben Reihenfolge abfragen, da ich den Namen nur anzeigen lassen will, wenn ein entsprechender Wert dazu vorliegt. Ich kenne die Anzahl der Werte in den Arrays durch eine MYSQL Abfrage. Es sieht momentan so aus:
Leider kommt der folgende FehlerPHP-Code:<?php
include "../scripts/mysql.php";
$sql = "SELECT * FROM blumen";
$query = mysql_query($sql);
$anzahl = mysql_num_rows($query);
$z = 0;
$array_name = $_POST["name"];
$array_menge = $_POST["anzahl"];
for($i = 0; $i <= $anzahl; $i++){
if($array_menge[$i] != 0){
echo "".$array_name[$i]."<br>";
echo "".$array_menge[$i]."<br>";
}
}
?>
Was kann ich tun?Notice: Undefined offset: 1 in C:\xampp\htdocs\shopsys\order\schritt3.php on line 24
Danke schonmal im Vorraus
MFG
NIklas
-
Hi
welche Zeile ist 24?Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
Hi NIklas,
wie es scheint, ist dein PHP-Code nicht komplett? Deine gepostetes Script hat keine 24 Zeilen. Ich gehe aber davon aus, dass
die 24. Zeile ist.Code :1
if($array_menge[$i] != 0){
Dein "Fehler" ist in Wirklichkeit keiner. Es ist lediglich eine (in dem Fall unwichtige) Information, die PHP generiert, wenn es auf zu Sensible eingestellt ist
Du kannst diese Informationen (Die keine Fehler sind) einfach mit folgendem ausblenden :
Code :1
@ini_set('error_reporting', E_ALL & ~E_NOTICE);Kryn.cms - einfach anders.
"When you're talking about webserver, as it is, with no rules, well then, baby you'd better block every tiny hole of your server!" - MArc (inspired by Bruce L.)
-
Du hast Recht es ist diese Zeile
Aber wieso wird mir das angezeigt?if($array_menge[$i] != 0){
-
Nun, wie sieht denn der Inhalt von "$_POST["anzahl"];" und "$_POST["name"];" aus ?
Du greifst ja auf `$array_menge[$i]` zu, das Du davor mit `$array_menge = $_POST["anzahl"];` zugewiesen hast. Wie es also scheint, ist `$_POST["anzahl"]` kein Array.Kryn.cms - einfach anders.
"When you're talking about webserver, as it is, with no rules, well then, baby you'd better block every tiny hole of your server!" - MArc (inspired by Bruce L.)
-
Aber das Post Anzahl ergibt sich aus:
<input type='hidden' name='name[]' value='".$blumen_array['name']."'></input>
<input type='hidden' name='anzahl[]' id='".$blumen_array['id']."' value=''></input>
-
Also eigentlich ist das eher ein PHP-Problem.
Man müsste mal das Script sehen mit dem Formular zu deinen Hidden-Fields und wie sie befüllt werden.
Irgendwie glaube ich das $_POST["name"] und $_POST["anzahl"] Arrays beinhaltet sonst würde deine Schleife nicht wirklich Sinn machen. Überhaupt ist mir nicht wirklich klar was du machen willst.PHP-Code:$array_name = $_POST["name"];
$array_menge = $_POST["anzahl"];
Geändert von Joe (09.11.11 um 23:24 Uhr)
-
Okay dann hier mal die vollständigen Skripte. Erst die erste Seite, auf der die Input Felder sind:
Für value habe ich nur zum testen mal 4 eingesetzt, weil der javascript teil noch nicht ganz funktioniert.PHP-Code:<html>
<head>
<title> Blumen - Shop </title>
<link rel="stylesheet" type="text/css" href="../style/main.css">
<script type="text/javascript">
<?php
$kastenname = $_POST['kastenname'];
$kastengroeße = $_POST['kastengroeße'];
echo "
var check = ".$kastengroeße.";
";
?>
var k = 0;
function minus(id, size, postid){
var anzahlDiv = document.getElementById(id);
var anzahl =parseInt(anzahlDiv.innerHTML);
anzahl -= 1;
if(anzahl <= 0){
anzahl = 0;
k = 0;
} else{
k -= size;
}
anzahlDiv.innerHTML = anzahl;
document.getElementById("fortschritt").style.width = k;
var postidnowunparsed = document.getElementById(postid);
var postidnow =parseInt(postidnowunparsed.innerHTML);
var postidthen = postidnow - 1;
document.getElementById(postid).value = postidthen;
}
function plus(id, size, postid){
var anzahlDiv = document.getElementById(id);
var anzahl = parseInt(anzahlDiv.innerHTML);
anzahl += 1;
anzahlDiv.innerHTML = anzahl;
k += size;
document.getElementById("fortschritt").style.width = k;
if(k == check){
alert("Der Kasten ist voll");
} else if(k > check){
alert("Der Kasten ist zu voll");
}
var postidnowunparsed = document.getElementById(postid);
var postidnow =parseInt(postidnowunparsed.innerHTML);
var postidthen = postidnow + 1;
document.getElementById(postid).value = postidthen;
}
</script>
</head>
<body>
<div id="content">
<h2> Schritt 2: Die Blumen </h2>
<p> Hier können sie sich die ganzen im Shop vorhandenen Blumen ansehen und auswählen, um sie in ihren zuvor gewählten Blumenkasten
pflanzen zu lassen. Beachte sie, dass die Pflanzen eine eingerechnete Größe haben und in den Kasten passen müssen. Die Anzeige hier
drunter, zeigt ihnen an, wie viel schon belegt ist und wird rot, wenn der Kasten zu voll wird.
</p>
<p> Sie haben folgenden Kasten ausgewählt:</p>
<?php echo "Name:".$kastenname."<br>Größe:".$kastengroeße." cm"; ?>
<div id="fortschrittrahmen" style="width:<?php echo $kastengroeße;?>px">
<div id="fortschritt" style="width:0px">
</div>
</div>
<form action='schritt3.php' method='post'>
<?php
include "../scripts/mysql.php";
$sql = "SELECT * FROM blumen";
$query = mysql_query($sql) or die (mysql_error());
while($blumen_array = mysql_fetch_assoc($query)){
echo "
<div id='maincontent'>
<div id='maincontenthead'>
<h3> ".$blumen_array['name']." </h3>
</div>
<table>
<tr>
<td>
<img src='".$blumen_array['img']."'>
</td>
<td valign='top'>
<p> Größe: ".$blumen_array['groeße']." cm<br>
Farbe: ".$blumen_array['farbe']." <br>
Pflegehinweise: ".$blumen_array['pflegehinweise']." <br>
Wetterbedingungen: ".$blumen_array['wetterinfos']." <br><br>
Beschreibung: <br> ".$blumen_array['beschreibung']."
</p>
</td>
</tr>
</table>
<p> Preis: ".$blumen_array['preis']." EUR</p>
<input type='hidden' name='name[]' value='".$blumen_array['name']."'></input>
<input type='hidden' name='anzahl[]' id='".$blumen_array['id']."' value='4'></input>
<div onclick='minus(\"".$blumen_array['name']."\", ".$blumen_array['groeße'].", \"".$blumen_array['id']."\");'>-</div>
<div id=\"".$blumen_array['name']."\">0</div>
<div onclick='plus(\"".$blumen_array['name']."\", ".$blumen_array['groeße'].", \"".$blumen_array['id']."\");'>+</div><br>
</div>
";
}
?>
<input type="submit" value="Diese Pflanzen verwenden"></input>
</form>
</div>
</body>
</html>
Und nun die zweite Seite.
PHP-Code:<html>
<head>
<title> Blumen - Shop </title>
<link rel="stylesheet" type="text/css" href="../style/main.css">
<?php
include "../scripts/mysql.php";
$sql = "SELECT * FROM blumen";
$query = mysql_query($sql);
$anzahl = mysql_num_rows($query);
$z = 0;
$array_name = $_POST["name"];
$array_menge = $_POST["anzahl"];
?>
</head>
<body>
<div id="content">
<h2> Schritt 3: Die Bestellinformationen </h2>
<p> Hier müssen sie ihre persönlichen Daten abgeben, an die ihr Blumenkasten geschickt wird, sobald er fertig ist. Sie bekommen eine Bestell
bestätigung per EMail und können auswählen ob sie eine Benachrichtigung per Mail oder Telefon erhalten wollen, wenn ihr Blumenkasten
fertig zusammengestellt ist.
</p>
<?php
for($i = 0; $i <= $anzahl; $i++){
if($array_menge[$i] != 0){
echo "".$array_name[$i]."<br>";
echo "".$array_menge[$i]."<br>";
}
}
?>
<form action="schritt4.php" method="post">
<table>
<tr>
<td>
<p>
Name:
</p>
</td>
<td>
<input name="name" type="text" size="30"></input>
</td>
</tr>
<tr>
<td>
<p>
Straße:
</p>
</td>
<td>
<input name="strasse" type="text" size="30"></input>
</td>
</tr>
<tr>
<td>
<p>
Hausnummer:
</p>
</td>
<td>
<input name="hausnummer" type="text" size="30"></input>
</td>
</tr>
<tr>
<td>
<p>
Posleitzahl:
</p>
</td>
<td>
<input type="text" name="plz" size="30"></input>
</td>
</tr>
<tr>
<td>
<p>
Ort:
</p>
</td>
<td>
<input type="text" name="ort" size="30"></input>
</td>
</tr>
<tr>
<td>
<p>
Telefon:
</p>
</td>
<td>
<input type="text" name="telefon" size="30"></input>
</td>
</tr>
<tr>
<td>
<p>
E-mailadresse:
</p>
</td>
<td>
<input type="text" name="mail" size="30"></input>
</td>
</tr>
</table>
<br><br>
<input type="hidden" name="id" value="<?php echo $anzahl + 1;?>"></input>
<input type="hidden" name="menge" value="<?php echo $menge;?>"></input>
<input type="hidden" name="array" value="<?php echo $array;?>"></input>
<input type="submit" value=" Weiter mit diesen Daten ">
</form>
</div>
</body>
</html>
-
Hmm mit dem Arrays übergeben ist anscheinend so ein Sache wenn ich mich nicht irre müsstest du die Arrays zur Übergabe serialisieren und dann wieder deserialisieren.
PHP-Code:<?
$array = array ("a", "b", "c";)
$data = serialize ($array);
?>
<form method="post" action="script.php">
<input type="hidden" name="data" value="<? echo $data; ?>">
<input type="submit" name="submit" value="Los geht's">
</form>
// -----------------------------------------------------------
//
// script.php
//
<?
$array = unserialze ($_POST["data"]);
foreach ($array as $value)
echo "$value<br>";
?>
-
Es geht jetzt habe bei dem Input mit der Anzahl einfach die ID rausgekillt.
Ähnliche Themen
-
Mehrere Arrays in einer foreach()- Schleife auslesen
Von Manuel im Forum PHPAntworten: 3Letzter Beitrag: 30.10.11, 00:29 -
foreach, arrays
Von Sebbo90 im Forum PHPAntworten: 4Letzter Beitrag: 27.11.10, 15:12 -
Mehrere arrays in foreach
Von louS im Forum PHPAntworten: 25Letzter Beitrag: 06.11.09, 14:26 -
Frage zu Arrays und foreach
Von Katzehuhn im Forum PHPAntworten: 0Letzter Beitrag: 25.07.06, 20:01 -
"foreach" schleife für mehrere Arrays!?
Von Grunge im Forum PHPAntworten: 5Letzter Beitrag: 07.09.05, 05:02





Zitieren

Login





