MySQL-Fehlermeldungen machen Layout kaputt

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

  • MySQL-Fehlermeldungen machen Layout kaputt

    Hallo, ich habe mir grad ein Spitzenlayout in HTML entwickelt. Nun möchte ich ein kleines Skript mit Datenbankabfrage integrieren.

    Wenn ich ins php eine normale echo-Ausgabe bringe, wird die im Layout sauber ausgegeben, aber die Fehlermeldungen verschieben total mein Layout.

    Der Einbau des PHP ind HTML müsste eigentlich richtig sein...

    <html>
    <head>
    </head>
    <body>

    <table style="width:100%;"><tr><td align="center">

    <table cellspacing="0px" cellpadding="0px" style="width:1015px;">

    <tr><td colspan="2" style="background-image:url(images/background/banner.jpg); width:818px; height:123px;"></td>
    <td rowspan="4" style="background-image:url(images/background/seite-rechts.jpg); width:197px; height:743px;"></td></tr>
    <tr><td style="background-image:url(images/background/reg1.jpg); vertical-align:top; width:180px; height:229px;">
    <ul style="list-style-type:square; padding-top:7px; line-height:2.5em; list-style-position:inside">
    <li><a href="ausschreibungindex.php">Home</a></li><li><a href="ausschreibung1.php">erstellen</a></li><li>ansehen</li><li>bearbeiten</li><li>drucken</li>
    </ul>
    </td>
    <td rowspan="2" style="background-image:url(images/background/mitte1.jpg); vertical-align:top; background-repeat:no-repeat; width:639px; height:577px;">

    PHP-Code:
    include 'variablen.php';

    $link = @mysql_connect ($host,$user,$passwd) or die ("<p style=padding-top:25px; style=padding-left:30px;>
    Es ist keine Verbindung zum Datenbankserver möglich.<br><br>MySQL-Fehler: "
    .mysql_error()."</p>");
    //@mysql_connect liefert eine kürzere Fehlermeldung als mysql_connect 
    //wenn keine Verbindung zum DB-Server hergestellt werden kann

    $sql 'select * from ausschreibung'
    //Erzeugung einer Prüfabfrage beliebiger Daten aus der DB, um 
    //festzustellen ob die DB existiert

    $result mysql_db_query (ausschreibung$sql); 
    //Abfragen der Werte der Prüfabfrage in der DB, 
    //um festzustellen ob die DB existiert

    //Wenn das Ergebnis der Prüfabfrage leer ist, wird eine DB 'ausschreibung' 
    //mit einer Tabelle 'ausschreibung' angelegt

    if (empty ($result))    {mysql_query ("create database ".ausschreibung."");
        
    mysql_select_db (ausschreibung) or die ("<p style=padding-top:25px; padding-left:21px;>
    Die Auswahl der Datenbank ist fehlgeschlagen.<br><br>MySQL-Fehler: "
    .mysql_error()."</p>");
        
    mysql_query ("create table ausschreibung (id int(4), nummer int(3), 
    jahr int(2), art varchar(3), material int(8), personal int(4), 
    maschine1 int(2), maschine2 int(2), maschine3 int(2), maschine4 int(2), 
    kapitalbedarf int(3), auftragsort int(2), angebotskosten int(6), 
    stundensatz int(3), transportkosten int(5), 
    baustellengemein int(2), primary key (id))"
    );}

    else {
    mysql_select_db(ausschreibung) or die ("<p style=padding-top:25px; padding-left:21px;>
    Die Auswahl der Datenbank ist fehlgeschlagen.<br><br>MySQL-Fehler: "
    .mysql_error()."</p>");};
    //Wenn das Ergebnis der Prüfabfrage nicht leer ist, wird die $
    //DB 'ausschreibung' zur weiteren Verwendung ausgewählt

    mysql_close($link); 
    </td></tr>
    <tr><td style="background-image:url(images/background/untermenuelang.jpg); height:348px;"></td></tr>
    <tr><td style="background-image:url(images/background/eckelinksmitte.jpg); height:44px;"></td>
    <td style="background-image:url(images/background/kantemitteunten.jpg);"></td></tr>

    </table>

    </td></tr></table>

    </body>

    </html>

    MfG Simauki
    Zuletzt geändert von jahlives; 10.06.2008, 18:41.

  • #2
    Also erstmal den Code umbrechen! Zeig mal einen Teil des HTML Quellcodes wie er beim Client ankommt
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Wieso zeigst du dem User deine DB-Fehlermeldungen? Das macht man nicht, die sind nur für dich zum Debuggen und da ist es egal, ob das Layout zerschießt.

      Kommentar


      • #4
        Re: MySQL-Fehlermeldungen machen Layout kaputt

        Original geschrieben von simauki
        HHallo, ich habe mir grad ein Spitzenlayout in HTML entwickelt...
        wo? ich würde mir dein Layout gerne mal anschauen?

        zum Problem:
        Versuch es mal mit einem @ vor der query

        Kommentar


        • #5
          Hallo, die Fehlermeldungen müssen mit ausgegeben werden, weil das eine Webaplliaktion wird, die auch lokal bei Fremden zu laufen gebracht werden soll. Ist eine Software für den Bildungssektor.

          Im Browser kommt der Quelltext nur bis zum abschließenden php-Tag. Der weiterführende HTML-Code unter dem eingefügten php wird nicht mit ausgegeben. Ich dachte immer man kann so wie ich es gemacht habe php in HTML so ausweisen???

          MfG Simauki

          Kommentar


          • #6
            Versuch es mal mit einem @ vor der query
            Und was soll das bringen? Der TS gibt die Fehlermeldungen ja explizit aus, da hilft auch kein @
            EDIT:

            @TS
            Habe dir noch ein paar Zeilenumrüche spendiert

            Zuletzt geändert von jahlives; 10.06.2008, 18:42.
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              Das kommt beim Browser an.

              <html>

              <head>

              <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> <!--Datei verwendet Europäische Buchstaben, Umlaute als Umschrift!!!-->
              <meta http-equiv="expires" content="0"> <!--Datei wird vom Originalserver verwendet, also nicht aus dem Proxy...-->
              <meta name="keywords" content="Baumogul, Planspiel, HTWK, Leipzig, Stephan Riedrich, Unternehmenssimulation"> <!--Stichwörter für Suchmaschinen-->
              <meta name="author" content="Stephan Riedrich">
              <meta name="description" content="Baumogul - das Unternehmensplanspiel für Interaktives Lernen">
              <meta http-equiv="Content-Style-Type" content="text/css">

              <title>Baumogul - Modul 1: Ausschreibung</title>

              <link rel=shortcut icon href=favicon.ico>
              <link rel=stylesheet type=text/css href=schrift.css>

              </head>

              <body>

              <table style="width:100%;"><tr><td align="center">

              <table cellspacing="0px" cellpadding="0px" style="width:1015px;">

              <tr><td colspan="2" style="background-image:url(images/background/banner.jpg); width:818px; height:123px;"></td>
              <td rowspan="4" style="background-image:url(images/background/seite-rechts.jpg); width:197px; height:743px;"></td></tr>
              <tr><td style="background-image:url(images/background/reg1.jpg); vertical-align:top; width:180px; height:229px;">
              <ul style="list-style-type:square; padding-top:7px; line-height:2.5em; list-style-position:inside">
              <li><a href="ausschreibungindex.php">Home</a></li><li><a href="ausschreibung1.php">erstellen</a></li><li>ansehen</li><li>bearbeiten</li><li>drucken</li>
              </ul>
              </td>
              <td rowspan="2" style="background-image:url(images/background/mitte1.jpg); vertical-align:top; background-repeat:no-repeat; width:639px; height:577px;">

              <p style=padding-top:25px; style=padding-left:30px;>Es ist keine Verbindung zum Datenbankserver möglich.<br><br>MySQL-Fehler: Access denied for user 'eroot'@'localhost' (using password: YES)</p>

              Kommentar


              • #8
                Wie wär's mit echo anstelle von die()?
                Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                Kommentar


                • #9
                  Hallo, gib mal bitte ein Bsp. für den Quellcode mit echo an. Ich habe die Fehlermeldungen bis jetzt immer mit or die generiert.

                  MfG Simauki

                  Kommentar


                  • #10
                    Hallo, gib mal bitte ein Bsp. für den Quellcode mit echo an.
                    Nicht dein Ernst, oder?
                    PHP-Code:
                    echo 'Hallo Welt'
                    Ich habe die Fehlermeldungen bis jetzt immer mit or die generiert.
                    Das ist auch gut so, wenn du danach keine Ausgabe mehr willst.
                    Siehst du denn wirklich nicht was hier fehlt?

                    <td rowspan="2" style="background-image:url(images/background/mitte1.jpg); vertical-align:top; background-repeat:no-repeat; width:639px; height:577px;">

                    <p style=padding-top:25px; style=padding-left:30px;>Es ist keine Verbindung zum Datenbankserver möglich.<br><br>MySQL-Fehler: Access denied for user 'eroot'@'localhost' (using password: YES)</p>

                    Tipp: Alles was nach dem die() kommt!
                    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                    Kommentar


                    • #11
                      Hallo, das ist mein Ernst. Wie echo geht, weiß ich. Ich weiß jetzt nur nicht was Du mit echo anstelle die() meinst. Das habe ich so noch nicht gesehen und kann mir das jetzt nicht vorstellen.

                      Was fehlt, das weiß ich jetzt auch. Der Tip mit dem Quelltext war OK, da bin ich nicht selbst draufgekommen. Nur weiß ich nicht wie man das wieder einrenken kann.

                      MfG Simauki

                      Kommentar


                      • #12
                        Hallo, OK Problem gelöst. Habe alle or dies und die mysql_errors gelöscht. Die Mysql-Fehler werden ja trotzdem ausgegeben. Kann man die auch irgendwie formatieren?

                        MfG Simauki

                        Kommentar


                        • #13
                          mach einfach anstatt
                          PHP-Code:
                          else {mysql_select_db(ausschreibung) or die ("<p style=paddin... 
                          das draus:
                          PHP-Code:
                          else {mysql_select_db(ausschreibung) or echo "<p style=paddin... 
                          it's not a bug,
                          it's a feature!

                          Kommentar


                          • #14
                            Genau genommen bringt das nichts, einfach alle die() durch echo zu ersetzen. Man stelle sich mal vor es gibt einen Fehler bei mysql_connect(). Der Fehler wird brav mit echo ausgegeben. Danach folgen weitere mysql_*() Aufrufe, die allesamt scheitern müssen, da gar keine DB-Verbindung besteht.

                            Der TO sollte seinen Code so umbauen, dass er DB-Fehler nicht nur hübsch ausgibt sondern auch darauf reagiert. Die einfachste Variante wäre
                            PHP-Code:
                            if (mysql_connect(...)) {
                                if (
                            $res mysql_query(...)) {
                                    while (
                            $row mysql_fetch_array($res)) {
                                        
                            // ...
                                    
                            }
                                } else echo 
                            mysql_error();
                            } else echo 
                            mysql_error(); 
                            Nochwas: Dreh mal bitte dein error_reporting() auf! Dann fliegt dir auschreibung um die Ohren, es heißt nämlich entweder $ausschreibung oder "ausschreibung".
                            Zuletzt geändert von onemorenerd; 11.06.2008, 03:57.

                            Kommentar

                            Lädt...
                            X