Undefinierte Variable

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Undefinierte Variable

    Hallo Zusammen!

    Habe eine Frage wie kann ich ($id) wo definieren.

    Fehlermeldung
    Code:
    Notice: Undefined variable: id in C:\xampp\htdocs\PHP03\bestellung.php on line 9
    Column count doesn't match value count at row 1
    Die Skripte dazu:
    artikel.php
    PHP-Code:
    <?php
        
    include("dbconnect.php");    
        
    $sql "select
                    id,
                    name,
                    preis
                from
                    artikel
                order by
                    preis DESC;"
    ;            
        
    $result mysql_query($sql) or die (mysql_error());
    ?>
    <html>
    <head><title>Artikelseite</title></head>
    <body>
    <h1>Artikelseite</h1>
    Folgende Artikel können Sie bestellen
    <table cellpadding="4" cellspacing="2" border="0">
    <tr bgcolor="#FFFF00">
    <th>Artikel</th><th>Preis</th><th> </th>
    </tr>
    <?php
        
    while($row mysql_fetch_assoc($result))
        {
            print 
    "<tr bgcolor='#cccccc'>";
            print 
    "<td>".$row['name']."</td>";
            print 
    "<td>".$row['preis']." Euro</td>";
            print 
    "<td><a href='bestellung.php?id=".$row['id']."'>bestellen</a></td>";
            print 
    "</tr>";
        }
    ?>
    </table>
    </body>
    </html>

    bestellung.php
    PHP-Code:
    <?php error_reporting(E_ALL);
        include(
    "dbconnect.php");
        
    //Bestelldaten in die Datenbank schreiben
        //Da das bestellid-Feld auf auto-increment
        //gesetzt wurde, muss es nicht angegeben werden
        
    $sql "insert into bestellungen 
                        (artikelid)
                    values
                        (
    $id)";
        
    mysql_query($sql) or die (mysql_error());
        
    //Jetzt die Artikeldaten zwecks Anzeige selektieren
        
    $sql "select
                    name,
                    preis,
                    bestand
                from 
                    artikel
                where
                    id=
    $id";
        
    $result mysql_query($sql) or die (mysql_error());
        
    $row mysql_fetch_assoc($result);
        
    //Bestanddaten des bestellten Artikels aktualisieren
        
    $sql "UPDATE artikel SET
                    bestand="
    .($row['bestand']-1)
                    .
    " where
                        id=
    $id";
        
    $result mysql_query($sql) or die(mysql_error());
        
    ?>
    <html>
    <head><title>Bestellseite</title></head>
    <body>
    <h1>Vielen Dank für Ihre Bestellung</h1>
    Folgende Artikel haben Sie bestellt
    <table cellpadding="4" cellspacing="2" border="0">
    <tr bgcolor="#FFFF00">
    <th>Artikel</th><th>Preis</th>
    </tr>
    <?php
        
    //Die mysql_fetch_assoc, die hier stand, wird jeetzt schon vorhere aufgerufen 
        //$row = mysql_fetch_assoc($result);
        
        
    print "<tr bgcolor='#cccccc'>";
        print 
    "<td>".$row['name']."</td>";
        print 
    "<td>".$row['preis']." Euro</td>";
        print 
    "</tr>";
    ?>
    </table>
    <a href="artikel.php">Zurück zur Artikelseite</a>
    </body>
    </html>

  • #2
    du musst die datenbank entsprechend einrichten, bevor du dieses skript benutzst.
    wie das geht, verrät die seite, von der du dieses skript hast.

    Kommentar


    • #3
      Gar nicht war, du solltest dieses Script direkt in die Tonne drücken oder überarbeiten lassen.

      Alternativ darfst du dich über register_globals informieren. Aber das müssen wir hier nicht noch mal erklären. Das gehört zu den Grundlagen der PHP-Programmierung (hoffentlich nicht mehr lange).
      EDIT:
      *verschieb*

      Kommentar


      • #4
        $id = $row["id"]; geht wohl nicht jana_777 ?
        selfmade-webdesign
        webdesign leipzig

        Kommentar


        • #5
          Original geschrieben von brauni54
          $id = $row["id"]; geht wohl nicht jana_777 ?

          Kommentar


          • #6
            definiere die id doch nach dem select in artikel.php in der while schleife

            und wenn du die variable aus der letzten seite, welches die artikel.php war, holen willst dann probier $_REQUEST

            ^^war wohl zu schnell
            selfmade-webdesign
            webdesign leipzig

            Kommentar


            • #7
              Original geschrieben von brauni54
              $id = $row["id"]; geht wohl nicht jana_777 ?
              omg

              sie übergibt die id per uri (GET)
              der hinweis von tobiaz war also DER hinweis

              jana wie liest man den werte aus die per uri übergeben wurden?
              Die Milch bleibt ranzig!

              Kommentar


              • #8
                PHP-Code:
                # artikel.php
                print "<td><a href='bestellung.php?id=".$row['id']."'>bestellen</a></td>"
                hier übergibt sie den wert in der url, welches ein teil von uri ist
                also kann sie doch auch folgendes tun
                PHP-Code:
                    while($row mysql_fetch_assoc($result))
                    {
                $id $row["id"];
                ...
                print 
                "<td><a href="bestellung.php?id=$id">bestellen</a></td>";
                        print 
                "</tr>";
                    }
                # und in bestellung.php dann so vor dem insert-befehl
                $id$_GET["id"]; 
                oder verstehe ich euch falsch?
                selfmade-webdesign
                webdesign leipzig

                Kommentar


                • #9
                  PHP-Code:
                  print "<td><a href=\"bestellung.php?id=$id\">bestellen</a></td>"
                  Strings sind schon schwer.
                  Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

                  Kommentar


                  • #10
                    habs vergessen , hätte halt eine parse error gegeben
                    selfmade-webdesign
                    webdesign leipzig

                    Kommentar


                    • #11
                      ...
                      sie arbeitet doch richtig mit $row["id"]
                      du hast das problem nicht verstanden und versuchst nu dich rauszuwinden.
                      warum sollte Sie die id nochmal in eine andere variable speichern wenn Sie schon drauf zugreifen kann?

                      Sie wusste nicht wie Sie in bestellung.php an die id rankommt, was natürlich in diesem Fall per $_GET geschehen muss wie jetzt schon mehrere bemerkt haben...
                      Die Milch bleibt ranzig!

                      Kommentar


                      • #12
                        wieso soll ich es nicht verstanden haben?!
                        schau mal hoch...
                        auch wenn ich mit $_GET['id'] als variable rumgefuchtelt habe, was man ja nicht muss, da sie es auch gleich direkt verwenden kann
                        PHP-Code:
                        # und in bestellung.php dann so vor dem insert-befehl
                        $id$_GET["id"]; 
                        selfmade-webdesign
                        webdesign leipzig

                        Kommentar


                        • #13
                          so was ist Quark:

                          $id= $_GET["id"];

                          wenn register globals = on ist und Du z.B. die Variablen hast: $_SESSION['id'] und $_GET['id'];
                          woher weißt Du dann welche Variable mit $id gemeint ist ?

                          wenn register globals = off ist, dann umgehst Du die register globals - Einstellung mit $id = $_GET['id']

                          Also:
                          solange der Inhalt von POST oder GET-Variablen nicht geprüft ist,
                          schreibt man immer $_POST['id'] und $_GET['id'].

                          Und auch nach der Prüfung sollte man das Ergebnis dann anders benennen als die ursprüngliche POST- oder GET-Variable, z.B.

                          $p_id = mysql_real_escape_string($_POST['id'])
                          oder
                          $p_id = htmlentities($_POST['id'])

                          Das ist einfach übersichtlicher.

                          Kommentar


                          • #14
                            da hast du sicher recht @Koala, auch wenn von sessions keine rede war
                            mir ging es ja nur darum, dass ich sehr wohl verstanden habe um welches problem es ging

                            mysql_real_escape_string zu verwenden ist natürlich sicherer zwecks SQL-Injections
                            selfmade-webdesign
                            webdesign leipzig

                            Kommentar

                            Lädt...
                            X