1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

DB-Zugriff aber Datenanzeige will nich - warum?

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von Kryptaesthesie, 07.04.2005.

  1. Kryptaesthesie

    Kryptaesthesie Thread Starter MacUser Mitglied

    Mitglied seit:
    17.05.2004
    Beiträge:
    575
    Zustimmungen:
    6
    Hallo.
    Die Verbindung zur DB funktioniert, aber das auslesen der Datensätze will nich. Wo liegt der Hase begraben?
    Ich bin Neuling und bin gerade ganz am Anfang und mein Chef will, dass ich mich da reinfuchse... :p

    Code:
    #!/usr/local/bin/php
    <?php
            print "Content-Type: text/html\r\n";
            print "\r\n";
            print "\r\n";
    
            print "<HTML><BODY>";
    
            $db = pg_connect("host=xyz port=5432 dbname=vtune user=xuser password=");
    
            if ($db)
            {
                print "Verbindung hergestellt zu: " . pg_host($db) . "<br/>\n";
                $db_select = @MYSQL_SELECT_DB("vtuneres");
                $result = mysql_query("SELECT * FROM lists");
                $menge  = mysql_num_rows($result);
                echo "<b>$menge Datensätze gefunden<br></b>";
                while($row = mysql_fetch_row($result))
                {
                    echo $row[0] . " - " . $row[1];
                    echo "<br><br>";
                }
            }
            else
            {
                print pg_last_error($db);
                print "</BODY></HTML>";
                exit;
            }
    
            pg_close( $db );
    
            print "</BODY></HTML>";
    
    ?>
    
    Die Daten kommen aus einer Postgre-DB. Wisst ihr wo dort noch ein Fehler sein könnte? Die Tabelle hat 2 Spalten.

    MfG Kryp
     
  2. Kryptaesthesie

    Kryptaesthesie Thread Starter MacUser Mitglied

    Mitglied seit:
    17.05.2004
    Beiträge:
    575
    Zustimmungen:
    6
    ok, Fehler selber gefunden :)
    Überall wo MySQL im Code stand, musst, weil es sich um eine Postgre-DB handelt, pg hin! Das war's schon!! :p


    MfG Kryp
     
  3. wegus

    wegus MacUser Mitglied

    Mitglied seit:
    13.09.2004
    Beiträge:
    15.308
    Zustimmungen:
    1.809
    Na, da hätten wir ja lange suchen können :D

    Kleiner Tipp, es gibt PHP-Tags im Forum:

    (PHP)
    Code
    (/PHP) // nat. in eckigen Klammern. Dann sieht Dein Listing so aus:

    PHP:
    #!/usr/local/bin/php
    <?php
    print "Content-Type: text/html\r\n";
    print 
    "\r\n";
    print 
    "\r\n";
    print 
    "<HTML><BODY>";
    $db pg_connect("host=xyz port=5432 dbname=vtune user=xuser password=");
    if (
    $db)
    {
    print 
    "Verbindung hergestellt zu: " pg_host($db) . "<br/>\n";
    $db_select = @MYSQL_SELECT_DB("vtuneres");
    $result mysql_query("SELECT * FROM lists");
    $menge  mysql_num_rows($result);
    echo 
    "<b>$menge Datensätze gefunden<br></b>";
    while(
    $row mysql_fetch_row($result))
    {
    echo 
    $row[0] . " - " $row[1];
    echo 
    "<br><br>";
    }
    }
    else
    {
    print 
    pg_last_error($db);
    print 
    "</BODY></HTML>";
    exit;
    }
    pg_close$db );
    print 
    "</BODY></HTML>";
    ?>
    und ist schonmal besser lesbar. Rufst Du das Skript als CGI auf oder per Webserver? In letzterem Fall brauchst Du die erste Zeile mit dem PHP-Interpreterpfad nicht!
     
  4. wegus

    wegus MacUser Mitglied

    Mitglied seit:
    13.09.2004
    Beiträge:
    15.308
    Zustimmungen:
    1.809
    Noch ein Tipp:
    Die ganzen Erfolgsvergleiche führen zu elend lang verschachteltem Code:

    PHP:
    if (db_connect)
    {
      if (
    query)
      {
        while (
    result holen)
        {
        }
      }
      else
      {
        
    // keine query
      
    }
    }
    else
    {
      
    // keine DB
    }


    übersichtlicher wird es mit Negativ-Abfragen:
    PHP:
    if (! DB-connect)
    {
      print 
    "Keine DB verfügbar- Abbruch";
      exit;
    }

    if (! 
    $pg_query("SELECT *..."))
    {
     print 
    "Abfrage xyz gescheitert";
     exit;
    }

    while (
    results)
    {

    }

    pg_close();
     
  5. Kryptaesthesie

    Kryptaesthesie Thread Starter MacUser Mitglied

    Mitglied seit:
    17.05.2004
    Beiträge:
    575
    Zustimmungen:
    6
    :) Da sage ich doch schon mal
    PHP:
    $Aussage == "Vielen";
    echo 
    $Aussage "Dank!";

    (War das denn wenigstens so richtig? :p



    MfG der jetzt weiter PHP-lernende Kryp ;)
     
  6. wegus

    wegus MacUser Mitglied

    Mitglied seit:
    13.09.2004
    Beiträge:
    15.308
    Zustimmungen:
    1.809
    <haarspaltermodus>
    Wenn Du am Ende von "Vielen" oder am Anfang von "Dank!" ein Leerzeichen einfügst sieht es besser aus. Um den "." Operator nach Möglichkeit keine leerzeichen
    </haarspaltermodus>

    Viel Spaß beim Lernen ;)
     
  7. Nogger

    Nogger MacUser Mitglied

    Mitglied seit:
    03.08.2004
    Beiträge:
    367
    Zustimmungen:
    0
    Warum? PHP erlaubt beliebigen Whitespace um Operatoren. Es ist sogar sinnvoll, der besseren Lesbarkeit wegen.
     
  8. michanismus

    michanismus MacUser Mitglied

    Mitglied seit:
    23.08.2004
    Beiträge:
    434
    Zustimmungen:
    0
    Dem kann ich mich nur anschliessen. Was wäre wenn ich da überall kein Whitespace hätte. Da würde man ja nicht mehr durchsehen...

    Für mich stellt sich auch die Frage. Warum?
     
  9. wegus

    wegus MacUser Mitglied

    Mitglied seit:
    13.09.2004
    Beiträge:
    15.308
    Zustimmungen:
    1.809
    Gut ich mag da etwas geplagt sein, aber ich habe schon erlebt, daß solche Ausdrücke eben nicht korrekt abgearbeitet wurden beim Punktoperator. Mag sein, daß das seit ettlichen PHP-Versionen wieder funktioniert. Gebranntes Kind ( ab PHP 3.0x) scheut das Feuer ;) Ich mache beim .-Operator nie whitespaces dazwischen, hab es aber auch seit Jahren nicht mehr anders probiert!
     
  10. Nogger

    Nogger MacUser Mitglied

    Mitglied seit:
    03.08.2004
    Beiträge:
    367
    Zustimmungen:
    0
    Nee, dann war der Fehler woanders. Du hast ihn unbemerkt durch etwas anderes korrigiert und es dann dem Löschen der Leerzeichen zugeschrieben.