tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
9
ZUGRIFFE
272
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Nikke123 Nikke123 ist offline Mitglied Bronze
    Registriert seit
    Sep 2011
    Beiträge
    41
    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:
    PHP-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>";
                }
            }
            
    ?>
    Leider kommt der folgende Fehler
    Notice: Undefined offset: 1 in C:\xampp\htdocs\shopsys\order\schritt3.php on line 24
    Was kann ich tun?
    Danke schonmal im Vorraus
    MFG
    NIklas
     

  2. #2
    Avatar von sheel
    sheel sheel ist gerade online Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.504
    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, ...?

  3. #3
    Registriert seit
    Apr 2006
    Ort
    Freiburg
    Beiträge
    290
    Blog-Einträge
    2
    Hi NIklas,

    wie es scheint, ist dein PHP-Code nicht komplett? Deine gepostetes Script hat keine 24 Zeilen. Ich gehe aber davon aus, dass
    Code :
    1
    
    if($array_menge[$i] != 0){
    die 24. Zeile ist.
    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.)

  4. #4
    Nikke123 Nikke123 ist offline Mitglied Bronze
    Registriert seit
    Sep 2011
    Beiträge
    41
    Du hast Recht es ist diese Zeile
    if($array_menge[$i] != 0){
    Aber wieso wird mir das angezeigt?
     

  5. #5
    Registriert seit
    Apr 2006
    Ort
    Freiburg
    Beiträge
    290
    Blog-Einträge
    2
    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.)

  6. #6
    Nikke123 Nikke123 ist offline Mitglied Bronze
    Registriert seit
    Sep 2011
    Beiträge
    41
    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>
     

  7. #7
    Joe Joe ist offline Mitglied Brokat
    Registriert seit
    Aug 2009
    Ort
    Thüringen
    Beiträge
    339
    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.

    PHP-Code:
            $array_name $_POST["name"];
            
    $array_menge $_POST["anzahl"]; 
    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.
    Geändert von Joe (09.11.11 um 23:24 Uhr)
     

  8. #8
    Nikke123 Nikke123 ist offline Mitglied Bronze
    Registriert seit
    Sep 2011
    Beiträge
    41
    Okay dann hier mal die vollständigen Skripte. Erst die erste Seite, auf der die Input Felder sind:
    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>
    Für value habe ich nur zum testen mal 4 eingesetzt, weil der javascript teil noch nicht ganz funktioniert.
    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>
     

  9. #9
    Joe Joe ist offline Mitglied Brokat
    Registriert seit
    Aug 2009
    Ort
    Thüringen
    Beiträge
    339
    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>";
    ?>
     

  10. #10
    Nikke123 Nikke123 ist offline Mitglied Bronze
    Registriert seit
    Sep 2011
    Beiträge
    41
    Es geht jetzt habe bei dem Input mit der Anzahl einfach die ID rausgekillt.
     

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 30.10.11, 00:29
  2. foreach, arrays
    Von Sebbo90 im Forum PHP
    Antworten: 4
    Letzter Beitrag: 27.11.10, 15:12
  3. Mehrere arrays in foreach
    Von louS im Forum PHP
    Antworten: 25
    Letzter Beitrag: 06.11.09, 14:26
  4. Frage zu Arrays und foreach
    Von Katzehuhn im Forum PHP
    Antworten: 0
    Letzter Beitrag: 25.07.06, 20:01
  5. Antworten: 5
    Letzter Beitrag: 07.09.05, 05:02