DB-Zugriff aber Datenanzeige will nich - warum?

  1. Kryptaesthesie

    Kryptaesthesie Thread StarterMacUser 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
     
    Kryptaesthesie, 07.04.2005
  2. Kryptaesthesie

    Kryptaesthesie Thread StarterMacUser 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
     
    Kryptaesthesie, 07.04.2005
  3. wegus

    wegusMacUser Mitglied

    Mitglied seit:
    13.09.2004
    Beiträge:
    14.982
    Zustimmungen:
    1.545
    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!
     
    wegus, 07.04.2005
  4. wegus

    wegusMacUser Mitglied

    Mitglied seit:
    13.09.2004
    Beiträge:
    14.982
    Zustimmungen:
    1.545
    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();
     
    wegus, 07.04.2005
  5. Kryptaesthesie

    Kryptaesthesie Thread StarterMacUser 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 ;)
     
    Kryptaesthesie, 07.04.2005
  6. wegus

    wegusMacUser Mitglied

    Mitglied seit:
    13.09.2004
    Beiträge:
    14.982
    Zustimmungen:
    1.545
    <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 ;)
     
    wegus, 07.04.2005
  7. Nogger

    NoggerMacUser 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.
     
    Nogger, 07.04.2005
  8. michanismus

    michanismusMacUser 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?
     
    michanismus, 07.04.2005
  9. wegus

    wegusMacUser Mitglied

    Mitglied seit:
    13.09.2004
    Beiträge:
    14.982
    Zustimmungen:
    1.545
    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!
     
    wegus, 08.04.2005
  10. Nogger

    NoggerMacUser 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.
     
    Nogger, 08.04.2005
Die Seite wird geladen...