kostenloser Webspace werbefrei: lima-city


MySQL Profile

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Solltest du deine Datenbank bei Lima-City haben, stimmt das hier nicht:

    mysql_select_db("db2045115-main", $dbserver)

    Deine Datenbank kann nicht so heißen (ggf. hier kontrollieren, wie die Datenbank wirklich heißt)

    Dann gehts weiter:

    Heißt die Tabelle in deiner Datenbank wirklich "Name"? Oder möchtest du die Spalte "Name" anhand der Spalte "ID" anzeigen lassen?

    Grundsätzlich lautet die Syntax:

    SELECT spalte1, spalte2, etc...
    FROM tabelle
    WHERE spalte = ...


    Also:

    <?php
    $handle = mysql_connect('DATENBANK-HOST', 'DATENBANK-BENUTZNAME', 'DATENBANK-PASSWORT')) or die ('Fehler - Keine Verbindung möglich');
    $db = mysql_select_db('DATENBANK-NAME', $handle) or die ('Fehler - Kann Datenbank nicht auswählen');
    
    $id = mysql_real_escape_string($_GET['id']);
    
    $result = mysql_query("SELECT * FROM `TABELLE` WHERE `ID` = '".$id."'");
    while ($row = mysql_fetch_object($result)) {
        echo $row->SPALTE1;
        echo $row->SPALTE2;
    	// usw...
    }


    Ich empfehle übrigens, Tabellen, Spalten und co. stets klein zu schreiben. Zudem gilt prinzipiell:

    In einer DATENBANK werden TABELLEN gespeichert. Diese Tabellen enthalten SPALTEN, mit deren Hilfe die ZEILEN gebildet werden. Das solltest du nicht vergessen :)

    ---- Datenbank
    -------Tabelle
    ---------Spalte1, Spalte2, ...
    -----------------------------------
    Zeile


    Ist wie bei Excel:

    Der Datenbankname ist der Dateiname der Excel-Datei. Die Tabelle ist das Blatt. Dieses Blatt enthält Überschriften, die wir als Spalten bezeichnen. Alles, was sich unterhalb dieser Spalten befindet, bildet die Zeile, auch Datensatz genannt.

    Beitrag zuletzt geändert: 28.4.2012 0:49:18 von fabo
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Autor dieses Themas

    rate

    rate hat kostenlosen Webspace.

    snvr1, danke, aber so gibts wieder nur den : aus :/ Aber keinen Error.

    fabio, ich habe meine Datenbank auch nicht bei Lima-City, die ist bei mir viel zu langsam, meine Datenbank heisst "db2045115-main", die Tabelle "Name" und darin sind 3 Spalten, "ID", "Vorname" und "Nachname".


    Bzw danke chatter, hab den Code einfach von der ersten Seite kopiert. Das erklärt mal, warum wir nen Error hatten. :D Aber es wird trotzdem noch nichts ausgegeben. :/

    Beitrag zuletzt geändert: 28.4.2012 12:49:53 von rate
  4. Dann hätten wir das geklärt :D

    <?php
    $handle = mysql_connect('DATENBANK-HOST', 'DATENBANK-BENUTZNAME', 'DATENBANK-PASSWORT')) or die ('Fehler - Keine Verbindung möglich');
    $db = mysql_select_db('db2045115-main', $handle) or die ('Fehler - Kann Datenbank nicht auswählen');
    
    $id = mysql_real_escape_string($_GET['id']);
    
    $result = mysql_query("SELECT * FROM `Name` WHERE `ID` = '".$id."'");
    while ($row = mysql_fetch_object($result)) {
        echo $row->Vorname.' '.$row->Nachname;
    }


    Beitrag zuletzt geändert: 28.4.2012 14:10:42 von fabo
  5. Autor dieses Themas

    rate

    rate hat kostenlosen Webspace.

    Jetzt keine Errors, aber keine Ausgabe.
  6. <?php
    $handle = mysql_connect('DATENBANK-HOST', 'DATENBANK-BENUTZNAME', 'DATENBANK-PASSWORT')) or die ('Fehler - Keine Verbindung möglich');
    $db = mysql_select_db('db2045115-main', $handle) or die ('Fehler - Kann Datenbank nicht auswählen');
    
    $id = mysql_real_escape_string($_GET['id']);
    
    $result = mysql_query("SELECT * FROM `Name` WHERE `ID` = '".$id."'");
    while ($row = mysql_fetch_object($result)) {
        die(var_dump($row));
    }
  7. Autor dieses Themas

    rate

    rate hat kostenlosen Webspace.

    fabo schrieb:
    <?php
    $handle = mysql_connect('DATENBANK-HOST', 'DATENBANK-BENUTZNAME', 'DATENBANK-PASSWORT')) or die ('Fehler - Keine Verbindung möglich');
    $db = mysql_select_db('db2045115-main', $handle) or die ('Fehler - Kann Datenbank nicht auswählen');
    
    $id = mysql_real_escape_string($_GET['id']);
    
    $result = mysql_query("SELECT * FROM `Name` WHERE `ID` = '".$id."'");
    while ($row = mysql_fetch_object($result)) {
        die(var_dump($row));
    }


    Error in Zeile 28:
    while ($row = mysql_fetch_object($result))
  8. Was für einen Fehler?
  9. $result = mysql_query("SELECT * FROM `Name` WHERE `ID` = '".$id."'");

    heisst die Tabelle wirklich Name? und du kannst die verkettung weglassen. Also statt
    '".$id."'"
    nur noch
    '$id'"

    Gruss snvr1


    Beitrag zuletzt geändert: 28.4.2012 21:58:33 von snvr1
  10. Autor dieses Themas

    rate

    rate hat kostenlosen Webspace.

    snvr1 schrieb:
    $result = mysql_query("SELECT * FROM `Name` WHERE `ID` = '".$id."'");

    heisst die Tabelle wirklich Name? und du kannst die verkettung weglassen. Also statt
    '".$id."'"
    nur noch
    '$id'"

    Gruss snvr1


    Ja sie heisst Name.
  11. Mal was anderes... Hast du phpMyAdmin-Zugriff? Falls ja, führe die Abfrage mal manuell aus:

    SELECT * FROM `Name` WHERE `ID` = 1


    Was passiert dann? Mal davon abgesehen - Handelt es sich bei dem Feld "ID" um ein Integer-Feld?
  12. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELCT * FROM `Name` WHERE `ID` = ''' at line 1


    Der Fehler mit "SELCT" hat sich ja bereits erledigt aber außerdem lässt sich hieraus noch entnehmen, dass für $id nur ein leerer String eingesetzt wird. Dies deutet darauf hin, dass der Fehler genau dort zu suchen ist. Vermutlich liefert die Anfrage einfach 0 Ergebnisse, da ja kein Datensatz existiert, bei dem die ID = "" ist. Daher würde ich davon ausgehen, dass die URL ohne den richtigen Get-Parameter aufgerufen wurde, kann das sein? :)
    Die korrekte Variante wurde von snvr bereits gepostet: abc.com/profil.php?id=1
    Falls dies nicht der Fall sein sollte, empfehle ich dir die folgende Vorgehensweise:
    Lass dir mal nach jeder Anweisung die geänderten Variablen ausgeben und prüfe, ob alle genau so sind, wie erwartet.
  13. Autor dieses Themas

    rate

    rate hat kostenlosen Webspace.

    vexi schrieb:
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELCT * FROM `Name` WHERE `ID` = ''' at line 1


    Der Fehler mit "SELCT" hat sich ja bereits erledigt aber außerdem lässt sich hieraus noch entnehmen, dass für $id nur ein leerer String eingesetzt wird. Dies deutet darauf hin, dass der Fehler genau dort zu suchen ist. Vermutlich liefert die Anfrage einfach 0 Ergebnisse, da ja kein Datensatz existiert, bei dem die ID = "" ist. Daher würde ich davon ausgehen, dass die URL ohne den richtigen Get-Parameter aufgerufen wurde, kann das sein? :)
    Die korrekte Variante wurde von snvr bereits gepostet: abc.com/profil.php?id=1
    Falls dies nicht der Fall sein sollte, empfehle ich dir die folgende Vorgehensweise:
    Lass dir mal nach jeder Anweisung die geänderten Variablen ausgeben und prüfe, ob alle genau so sind, wie erwartet.


    Danke, aber ich habs schon mit dem richtigen Link gemacht, ich konnt mich beim erstellen nur nicht mehr erinnern wies dann aussieht, und hab einfach ein Beispiel gemacht.


    Wenn ich einfach 1 als ID eintrage, gibt es wieder hier einen Error:
    while ($row = mysql_fetch_object($result))


    Beitrag zuletzt geändert: 29.4.2012 19:14:50 von rate
  14. while ($row = mysql_fetch_object($result))


    Was für ein Fehler kommt dort ist es ein Mysql oder PHP fehler, und poste mal die Fehlermeldung.
  15. Hast du den Query mal manuell via phpMyAdmin ausgeführt?
  16. vexi schrieb:
    ... dass für $id nur ein leerer String eingesetzt wird. .


    ich denke auch, das der GET-Wert nicht (richtig) übergeben wurde, die Variable $id scheint leer zu sein

    versuch mal im Test-Script die Liste aller User auszugeben, mit Link zum klicken

    ich empfehle mysql_fetch_assoc anstatt mysql_fetch_row,
    dann ist das Array (in 2ter Ebene) mit Key-Namen, nicht Key-Zahlen
    ... alternativ geht auch mysql_fetch_object()
    dann hast Du halt die 2te Ebene als Objekte anstatt als Array

    test.php
    <?php
    // ------------------------------------------------------ 
    // --------------- config -------------------- 
    
    $db_host = 'mysql.lima-city.de';   // ---- MySQL Server/Host
    $db_user = 'USERxxxxxx';           // ---- MySQL Username
    $db_pass = 'YyYyYyYy';             // ---- MySQL User Passwort
    $db_name = 'db_xxxxxx_1';          // ---- MySQL Datenbank Name
    
    $db_table = 'my_user';             // ---- MySQL Tabelle
    
    
    // ------------------------------------------------------ 
    // --------------- connect ------------------- 
    
    $con = mysql_connect($db_host, $db_user, $db_pass)); 
    if (!$con) { die ('Fehler ... MySQL Verbindung <br />' . mysql_error()); exit; }
    
    $sel = mysql_select_db($db_name, $con);  
    if (!$sel) { die ('Fehler ... Datenbank Auswahl <br />' . mysql_error()); exit; }
    
    
    // ------------------------------------------------------ 
    // --------------- User Details -------------- 
    
    if (!empty($_GET['id'])) { 
    
    $run_id = trim(chop($_GET['id']));  
    
    // --- Optional --- 
    ## $run_id = preg_replace('/[^0-9]/','',$run_id);  // ---- Nur Zahlen (Zeichen 0 bis 9) zulassen
    
    $run_id = mysql_real_escape_string($run_id);      // ---- string fuer mysql escapen 
    
    // -------------------------- 
    
    $sql_user = "SELECT * FROM ".$db_table." WHERE ID = '".$run_id."'"); 
    $res_user = mysql_query($sql_user);
    if (!$res_user) { die ('Fehler ... res_user <br />' . mysql_error()); exit; }
    
    $user_data = array(); 
    
    while ($row_user = mysql_fetch_assoc($res_user)) {
    $user_data[] = $row_user; 
    }
    
    
    // -------------------------- 
    
    echo "<h2>User Details</h2>\n"; 
    
    
    if (!empty($user_data)) { 
    
    // -------- Hier werden Alle Spalten der Tabelle zum User ausgegeben ------- 
    // -------- um damit zu arbeiten anstatt print_r als foreach-Schleife ------- 
    
    print "<pre>\n"; 
    print_r($user_data); 
    print "</pre>\n"; 
    
    }
    else { 
    echo "<br /> ... Keine Daten zur ID ".$run_id." gefunden. \n";
    } 
    
    
    // ------------------------------------------- 
    // ------------------------------------------- 
    
    }
    else { 
    
    // ------------------------------------------------------ 
    // --------------- User Auswahl -------------- 
    
    echo "<br />\n";
    echo "<br />Bitte einen User aus der Liste ausw&auml;hlen.\n";
    echo "<br />\n";
    
    $sql_liste = "SELECT * FROM ".$db_table.""); 
    
    $res_liste = mysql_query($sql_liste);
    if (!$res_liste) { die ('Fehler ... res_liste <br />' . mysql_error()); exit; }
    
    $liste_data = array(); 
    
    while ($row_liste = mysql_fetch_assoc($res_liste)) {
    $liste_data[] = $row_liste; 
    }
    
    // -------------------------- 
    
    echo "<h2>User Auswahl</h2>\n"; 
    
    if (!empty($liste_data)) { 
    
    echo "<ul>\n"; 
    
    $n=1; 
    foreach($liste_data as $item) { 
      echo "<li> Nr: ".$n." <a href=\"test.php?id=".$row_liste['ID']."\">".$row_liste['Vorname']." ".$row_liste['Nachname']."</a> (User-ID: ".$row_liste['ID'].") </li>\n"; 
      $n++; 
    }
    
    echo "</ul>\n"; 
    
    }
    else { 
    echo "<br />... Keine User-Daten gefunden. \n";
    } 
    
    echo "<br />\n"; 
    echo "<br />\n"; 
    
    
    // ------------------------------------------- 
    // ------------------------------------------- 
    
    } 
    
    
    echo "<br />\n"; 
    echo "<br /> <a href=\"test.php\">TEST HOME</a>  \n"; 
    echo "<br />\n"; 
    
    
    // ------------------------------------------------------ 
    ?>


    Du musst halt Dattenbank-Zugangsdaten und Tabellen-Name anpasen

    und wenn Du diesen Code in andere Datei ausser "test.php" ausführen willst,
    dann musst Du die Links anpassen (überall wo test.php steht) ... logisch :)

    und wie schon gesagt wurde, bei Spalten-Namen auch auf groß-/klein- Schreibung achten



    Beitrag zuletzt geändert: 30.4.2012 9:29:10 von oindex
  17. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!