Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] formular gibt leere seite aus

Einklappen

Neue Werbung 2019

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

  • [Erledigt] formular gibt leere seite aus

    hi leute,

    bin neu hier und meine php kenntnisse sind noch in den kinderschuhen.
    trotzdem hab ich ein kleines problem.

    ich bin gerade dabei nen webshop aufzusetzen und habe auch schon schon das abfrage formular für die datenbank abfrage fertig (mit hilfe von nem kollegen)

    jetzt hab ich das problem das wenn ich die schlüsselnummern ins formular eingebe das mir eine leere seite ausgegeben wird

    hoffe ihr könnt mir helfen danke schon mal im vorraus


    hier das abfrage formular

    PHP-Code:
    </head>
    <
    body>
    Geben Sie einen vollständigen Datensatz ein und senden Sie das
    Formular ab
    :
    <
    form action "kba_neu.php" method "post">
    <
    input name="zu2.1 (alt 2)"zu2.1 (alt 2)<p>
    <
    input name="zu2.2 (alt 3)"zu2.2 (alt 3)<p>
    <
    input type="submit" name="gesendet">
    <
    input type="reset">
    </
    form>
    </
    body>
    </
    html>
    <!-- 
    neueBox_eof //--> 
    und hier die seite welche leer ausgegeben wird

    PHP-Code:
    <?php
    require_once ('dbconnect.php');

    // Nutzen von Datenbank - Name ist hinterlegt in
    // Konstante MYSQL_DATENBANK
    $db_sel mysql_select_dbDB1000427 )
       or die(
    "Auswahl der Datenbank fehlgeschlagen");

    $sql =  "SELECT * FROM 'KBA' WHERE zu21='.$_POST[zu2.1input].' AND zu22='.$_POST[zu2.2input].';
           
    $db_erg = mysql_query( $sql );
    if ( ! 
    $db_erg )
    {
      die('Ungültige Abfrage: ' . mysql_error());
    }

    echo '<table border="
    1">';
    while (
    $zeile = mysql_fetch_object(mysql_query("SELECT from 'KBA' where `zu21``zu22")
    {
      echo "<tr>";
      echo "<td>". 
    $zeile['HERSTELLER'] . "</td>";
      echo "<td>". 
    $zeile['MODELL'] . "</td>";
      echo "<td>". 
    $zeile['TYP'] . "</td>";
      echo "<td>". 
    $zeile['CBJVON'] . "</td>";
      echo "<td>". 
    $zeile['CBJBIS'] . "</td>";
      echo "<td>". 
    $zeile['KW'] . "</td>";
      echo "<td>". 
    $zeile['PS'] . "</td>";
      echo "<td>". 
    $zeile['CCM'] . "</td>";
      echo "<td>". 
    $zeile['ZYL'] . "</td>";
      echo "<td>". 
    $zeile['MCODELIST'] . "</td>";
      echo "<td>". 
    $zeile['KBANR'] . "</td>";
      echo "</tr>";
    }
    echo "</table>";

    mysql_free_result( 
    $db_erg );


    ?>


  • #2
    Hallo,

    an den Anfang deiner Scripte:
    PHP-Code:
    ini_set('display_errors'1);
    error_reporting(-1); 
    Damit lässt du dir alle Fehler anzeigen.



    Die mysql_* Erweiterung ist veraltet und wird in der nächsten PHP-Version entfernt. Zudem ist deine Query anfällig für SQL-Injections (aktuell nicht, aber falls du Variablen in dein Insert nimmst).
    Durch einen Wechsel auf mysqli_* oder PDO greifst du aufdie modernere API zu und hast die Möglichkeiten Prepared Statements zu benutzen die gegen Injections wirken.
    Ich persönlich bevorzuge PDO, schönes Tutorial: http://www.peterkropff.de/site/php/pdo.htm Die Seite bietet meiner Meinung nach den besten Einstieg für frische Anfänger, es deckt viele Themen ab und reicht bei PHP bis in die Grundlagen des Umgangs mit Klassen und Objekten.


    PHP-Code:
    while ($zeile mysql_fetch_object(mysql_query("SELECT * from 'KBA' where `zu21``zu22"
    Ich würde den Fehler irgendwo hier suchen.


    PHP-Code:
    $zeile mysql_fetch_object //...
    echo "<td>"$zeile['HERSTELLER'] . "</td>"
    Das wird auch nicht ganz funktionieren.
    Relax, you're doing fine.
    RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

    Kommentar


    • #3
      Hi,

      mehrere Dinge:

      PHP-Code:
      <input name="zu2.1 (alt 2)"zu2.1 (alt 2)<p
      ungünstige/schlechte Namenswahl imho!

      PHP-Code:
      $db_sel mysql_select_dbDB1000427 
      mysql_* ist veraltet. PDO oder mysqli nutzen.

      PHP-Code:
      $sql =  "SELECT * FROM 'KBA' WHERE zu21='.$_POST[zu2.1input].' AND zu22='.$_POST[zu2.2input].'; 
      Formatierung falsch. Müsste eher so z.B. aussehen:

      PHP-Code:
      $sql =  "SELECT * FROM KBA WHERE zu21='".$_POST["namedeserstenTextfeldes"]."' AND zu22='".$_POST["namedeszweitenTextfeldes"]."'"
      + SELECT * FROM sollte man vermeiden, wenn man nicht alle Spalten benötigt.

      PHP-Code:
      while ($zeile mysql_fetch_object(mysql_query("SELECT * from 'KBA' where `zu21``zu22"
      Syntax falsch. Eher so:

      PHP-Code:
      // ...
      While ($row mysql_fetch_array($sql)) {
       
      // usw.

      mfg wolf29
      while (!asleep()) sheep++;

      Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

      Kommentar


      • #4
        allein das syntaxhighlighting sollte dir zu denken geben...
        Und wieso fangen alle im direkt mit webshops an. sowas ist kein projekt für einen anfänger...

        Und ich hoffe du planst damit keinen Produktiveinsatz...

        PHP-Code:
        $sql =  "SELECT * FROM 'KBA' WHERE zu21='.$_POST[zu2.1input].' AND zu22='.$_POST[zu2.2input].'; 
        Hier steckt ein Wurm. wenn du mit " deinen string beginnst, muss er auch damit abgeschlossen werden.
        Current Projects: http://www.welten-buch.de, http://neu.zooadoo.de

        Kommentar


        • #5
          PHP-Code:
          $sql =  "SELECT * FROM 'KBA' WHERE zu21='.$_POST[zu2.1input].' AND zu22='.$_POST[zu2.2input].';
                 
          $db_erg = mysql_query( $sql ); 
          + deine Query ist unsicher! Werte von aussen ungeprüft reinnehmen ist fahrlässig. Nutze bei den o.a. Varianten mysqli oder PDO gleich Prepared Statements, dann ist das damit auch erledigt.

          http://php-de.github.io/jumpto/sql-injection/

          LG
          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
          PHP.de Wissenssammlung | Kein Support per PN

          Kommentar


          • #6
            ok erst eimal danke für die schnellen antworten

            @VPh, Wolf29 und hausl

            habe gerade geschaut ob mein server mysqli unterstützt das tut er werde also mit mysqli arbeiten und schau mir gleich noch mal das script an

            @Geromel

            produktiveinsatz ist geplant aber das steht noch in weiter ferne
            webshop könnte ich auch einen fertigen nehmen aber dafür reicht leider das kapital nicht
            weswegen ich auch den bigwareshop nutze ( learning by doing ^^)
            hatte den shop schonmal soweit das er mir ne tabelle mit kfz daten ausgegeben hat nur ist das bei nem plattencrash leider verloren gegangen und es ist leider schon ein paar tage her das ich mich mehr an das script erinnern kann

            grüße

            Kommentar


            • #7
              dann würde ich dir allerdings raten, dich intensiv mit php zu beschäftigen. OOP ist natürlich Pflicht.
              Und ganz ehrlich, eine richtige Webshopsoftware kostet nicht umsonst ihren Preis... dahinter steckt viel Arbeit, meist von einem Entwicklerteam, die jahrelange Erfahrung in ihrem beruf haben.
              Current Projects: http://www.welten-buch.de, http://neu.zooadoo.de

              Kommentar


              • #8
                Zitat von Bigbossmen Beitrag anzeigen
                werde also mit mysqli arbeiten und schau mir gleich noch mal das script an
                Das könnte dir eine Hilfe sein: http://www.peterkropff.de/site/php/mysqli.htm
                insbesondere auch: http://www.peterkropff.de/site/php/m...hoden_stmt.htm
                Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                PHP.de Wissenssammlung | Kein Support per PN

                Kommentar


                • #9
                  hi leute

                  also hab es nicht zum laufen bekommen weder mit mysql bzw mysqli
                  um gewisse dinge besser zu verstehen hab ich zu testzwecken sogar ein script aus meinen schlauen php buch versucht selbst da bekomme ich ne leere seite angezeigt

                  bin ich zu blöd ?

                  grüße

                  Kommentar


                  • #10
                    PHP-Code:
                    <?php

                      
                    // Verbindungsvariable samt zugangsdaten festlegen
                    @$db mysqli_connect('localhost','test','');

                    // verbindung Überprüfen
                    if (mysqli_connect_errno()) {
                        
                    printf("verbindung fehlgeschlagen: %s\n"mysqli_connect_error());
                        exit();
                    }

                    echo
                    "verbindung erfolgreich: " mysqli_get_host_info($db) . "\n</br>";
                    echo 
                    "server: " mysqli_get_server_info($db);

                    //verbindung zum datenbankserver beenden
                    mysqli_close($db);

                    ?>

                    Kommentar


                    • #11
                      Niemals ein "@" vor Funktionen setzen, das unterdrückt Fehlermeldungen.
                      Glaub beim myslqi_connect musst du noch den Datenbanknamen als Parameter übergeben.

                      Zitat von VPh Beitrag anzeigen
                      Hallo,

                      an den Anfang deiner Scripte:
                      PHP-Code:
                      ini_set('display_errors'1);
                      error_reporting(-1); 
                      Damit lässt du dir alle Fehler anzeigen.
                      Relax, you're doing fine.
                      RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

                      Kommentar


                      • #12
                        Zitat von Bigbossmen Beitrag anzeigen
                        PHP-Code:
                        @$db mysqli_connect('localhost','test',''); 
                        Schau was ich verlinkt habe, der macht es richtig, alle 4 Parameter und kein @: Initialisierung: http://www.peterkropff.de/site/php/m...alisierung.htm

                        Und mach auch mal das error reporting gem. vorigen Beitrag rein.

                        LG
                        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                        PHP.de Wissenssammlung | Kein Support per PN

                        Kommentar


                        • #13
                          das @ stand so im buch hab den code von dir noch reingenommen und jetzt gings komisch

                          hab jetzt mit ner db abfrage weiter gemacht da bekomm ich nur zugriff fehlgeschlagen ausgegeben
                          PHP-Code:

                          <?php

                          ini_set
                          ('display_errors'1);
                          error_reporting(-1);  
                            
                          // Verbindungsvariable samt zugangsdaten festlegen
                          $db mysqli_connect('localhost','root','','test');

                          // verbindung Überprüfen
                          if (mysqli_connect_errno()) {
                              
                          printf("verbindung fehlgeschlagen: %s\n"mysqli_connect_error());
                              exit();
                          }

                          //Datensatz-ausgabe festlegen
                          $sql_befehl "SELECT * FROM 'kba2.2'";

                          if (
                          $resultat $db->query($sql_befehl)) {

                          $datensatz $resultat->fetch_array();



                          echo 
                          $zeile['HERSTELLER'];
                          echo 
                          $zeile['KBANR'];
                          echo 
                          $zeile['MODELL'];


                          } else {

                          echo 
                          "zugriff fehlgeschlagen!";
                          }

                          mysqli_close($db);

                          Kommentar


                          • #14
                            PHP-Code:
                            $db mysqli_connect('localhost','root','','test'); 
                            ...
                            if (
                            $resultat $db->query($sql_befehl)) { 
                            Kann auch nicht gehen, woher soll das Objekt $db bei $db-query denn kommen? Siehe oben den verlinken Beitrag oder die Doku. Entweder Prozedual oder OOP, nicht mischen.

                            Wenn du OOP machst, dann musst du mit $db = new mysqli.... dein Objekt erstellen.

                            EDIT:
                            Ganz praktisch ist auch immer, wenn man das hier mit rein nimmt und sich dir Fehler direkt anzeigen lässt, das kann ungemein helfen: http://php.net/manual/de/mysqli.error.php

                            LG
                            Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                            PHP.de Wissenssammlung | Kein Support per PN

                            Kommentar


                            • #15
                              ups sry falsches editor fenster das ist der code den ich meinte
                              PHP-Code:
                              <?php

                              ini_set
                              ('display_errors'1);
                              error_reporting(-1);  
                                
                              // Verbindungsvariable samt zugangsdaten festlegen
                              $db = new mysqli('localhost','root','','test');

                              // verbindung Überprüfen
                              if (mysqli_connect_errno()) {
                                  
                              printf("verbindung fehlgeschlagen: %s\n"mysqli_connect_error());
                                  exit();
                              }




                              //Datensatz-ausgabe festlegen
                              $sql_befehl "SELECT * FROM 'kba2.2'";

                              if (
                              $resultat $db->query($sql_befehl)) {

                              $datensatz $resultat->fetch_array();



                              echo 
                              $zeile['HERSTELLER'];
                              echo 
                              $zeile['KBANR'];
                              echo 
                              $zeile['MODELL'];


                              } else {

                              echo 
                              "zugriff fehlgeschlagen!";
                              }

                              mysqli_close($db);

                              ?>
                              habe das buch php5 mysql5 von matthias kannengiesser um es besser zu verstehen arbeite ich mich gerade durch seine beispiele durch daher habe ich auch das @ vorm $db

                              grüße

                              Kommentar

                              Lädt...
                              X