• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

MYSQL Zelle auslesen

ste3et_C0st

Neues Mitglied
Hallo ich stehe gerade auf den schlauch ich habe für meine internet seite folgende Spieler liste programmiert. So wie hab ich das gemacht. Also ich lass ihn die daten bank immer was eintragen bsp.:

Code:
player     |joins|lastjoin  |playtime|firstjoin |chatchar|chats|placed|broke|
-----------|-----|----------|--------|----------|--------|-----|------|-----|
Ste3et_C0st|383  |1350848797|553958  |1347638451|33617   |2413 |42019 |25540|
jeje_      |452  |1350844792|551111  |1348954120|2587    |24   |4202  |2540 |
...        |...  |...       |...     |...       |...     |...  |...   |...  |

wie kann ich nun mit php von z.b Ste3et_C0st den playtime wert ermitteln. ?????
 
Hey,
die Spielerliste auf der Seite enthält doch schon die berechnete Spielzeit?
Oder meinst du das allgemeine Auslesen eines Wertes aus einer Datenbank? (Okay, grad erst den Titel gelesen)
Also: Was für eine Datenbank hast du denn? MySQL? Auf dem Webserver?
Dann müsstest du mit PHP eine Verbindung zur Datenbank aufbauen und kannst dann einen SELECT playtime FROM table WHERE player = xxx -Befehl schicken und erhälst dann den Wert aus der Zelle.
Näheres u.a. hier: Datenbankverbindung PHP-MySQL Tutorial
 
und welchen mysql_num_ muss ich wählen um das ergibnis ausgeben zu lassen ich hab das jetzt so.

PHP:
        mysql_connect( $dbhost, $dbuser, $dbpass);
        mysql_select_db($dbname);
        $res = mysql_query('SELECT playtime FROM stats WHERE player = Ste3et_C0st');
        $dsatz = mysql_num_rows($res);
        
        function intervall($sek){
            $i = sprintf('%d H%s,'.
            ' %d Min%s %d Sek%s',
            $sek / 3600,
            floor($sek) != 1 ? '':'',
            $sek / 60 % 60,
            floor($sek / 60 % 60) != 1 ? '':'',
            $sek % 60,
            floor($sek % 60) != 1 ? '':''
         );
            return $i;
        }
        
        $playtimte = $dsatz;
        Global $playtimte;
 
Als Tipp nebenbei:
ich würde eine Blätter bzw. Suchfunktion einbauen. So lädt die Seite sehr lang bei langsameren INternetverbindungnen.
Ist der Playtimewert ein Timestamp? Sieh dir dazu einfach folgendes mal an:

PHP: date - Manual
 
und welchen mysql_num_ muss ich wählen um das ergibnis ausgeben zu lassen ich hab das jetzt so.

PHP:
        mysql_connect( $dbhost, $dbuser, $dbpass);
        mysql_select_db($dbname);
        $res = mysql_query('SELECT playtime FROM stats WHERE player = Ste3et_C0st');
        $dsatz = mysql_num_rows($res);
        
        function intervall($sek){
            $i = sprintf('%d H%s,'.
            ' %d Min%s %d Sek%s',
            $sek / 3600,
            floor($sek) != 1 ? '':'',
            $sek / 60 % 60,
            floor($sek / 60 % 60) != 1 ? '':'',
            $sek % 60,
            floor($sek % 60) != 1 ? '':''
         );
            return $i;
        }
        
        $playtimte = $dsatz;
        Global $playtimte;

Ich verstehe dein Problem nicht. Was genau brauchst du? Im Prinzip hast du ja bereits alles gegeben. Du musst nur alle Werte aus der Datenbank auslesen. Das heißt in etwa ca. folgendes:

PHP:
$sql = "SELECT zeit FROM `spieler`";  // Auswählen der Tabelle und Spalte
$ergebnis = mysql_query($sql)OR die(mysql_error());  // Als MySQL Abfrage verpacken und auf Fehler Prüfen
        while($row = mysql_fetch_object($ergebnis)) // Eine Schleife erstellen und in Frage kommende Datensätze suchen
        {
         $zeit = $row->zeit; // $zeit ist jeder Datensatz der Spalte "zeit"

         // Ich gehe davon aus, dass die Zeit in Sekunden gerechnet wird

        $minuten = $zeit/'60'; // Umrechnung der Sekunden in Minuten
        echo $minuten;
        }

Ungetestet. Um für einen einzelnen Spieler die Zeit herauszufinden benötigst du im MySQL Query das WHERE Attribut, wie du es selber benutzt hast und kannst die Whileschleife weglassen. Zur SIcherheit kannst du auch ein LIMIT 1 angeben. Das heißt, es wird nur maximal ein Datensatz herausgesucht.
 
Also ich hab das jetzt so.

Code:
<?php 
        mysql_connect( $dbhost, $dbuser, $dbpass);
        mysql_select_db($dbname);
        $res = mysql_query('SELECT playtime FROM stats WHERE player = Ste3et_C0st');
        $dsatz = mysql_fetch_object($res);
        
        $zeit = $dsatz->zeit;
        
        function intervall($sek){
            $i = sprintf('%d H%s,'.
            ' %d Min%s %d Sek%s',
            $sek / 3600,
            floor($sek) != 1 ? '':'',
            $sek / 60 % 60,
            floor($sek / 60 % 60) != 1 ? '':'',
            $sek % 60,
            floor($sek % 60) != 1 ? '':''
         );
            return $i;
        }
        
        $playtimte = intervall($dsatz);
        Global $playtimte;
        ?>

Also nochmal ich will z.b von spieler xY nur die playtime auslesen dazu muss ich ja den Spieler angeben nur geht das nicht.
 
Doch. Ich sagte, du musst lediglich weitere Attribute in der Datenbankabfrage einbauen und kannst die Schleife entfernen.

PHP:
$sql = "SELECT zeit FROM `spieler` WHERE name='Dieter' LIMIT='1'";  // Auswählen der Tabelle und Spalte
$ergebnis = mysql_query($sql)OR die(mysql_error());  // Als MySQL Abfrage verpacken und auf Fehler Prüfen
$row = mysql_fetch_object($ergebnis); // 
$zeit = $row->zeit; // $zeit ist jeder Datensatz der Spalte "zeit" der zu den o.g. Konditionen passt (also nur einer)

// Ich gehe davon aus, dass die Zeit in Sekunden gerechnet wird

$minuten = $zeit/'60'; // Umrechnung der Sekunden in Minuten
echo $minuten;

SELECT zeit FROM Spieler sollte klar sein.
WHERE name='Dieter' sucht also in der Tabelle Spieler, die Dieter heißen.
LIMIT='1' lässt nur ein Ergebnis zu bzw. lässt nur ein Ergebnis ausgeben, falls mehrere mit Dieter gefunden worden sind. (Z.B kann Dieter1 ebenso benutzt werden)
 
Also ich habs nun wie folgend


PHP:
<?php 
        mysql_connect( $dbhost, $dbuser, $dbpass);
        mysql_select_db($dbname);
        $res = mysql_query("SELECT playertime FROM stats WHERE name='Ste3et_C0st' LIMIT='1'")OR die(mysql_error());
        $dsatz = mysql_fetch_object($res);
        $zeit = $dsatz->playertime;
        
        function intervall($sek){
            $i = sprintf('%d H%s,'.
            ' %d Min%s %d Sek%s',
            $sek / 3600,
            floor($sek) != 1 ? '':'',
            $sek / 60 % 60,
            floor($sek / 60 % 60) != 1 ? '':'',
            $sek % 60,
            floor($sek % 60) != 1 ? '':''
         );
            return $i;
        }
        
        $playtimte = intervall($zeit);
        Global $playtimte;
        ?>

Sekunden ihn Stunden

PHP:
function intervall($sek){
            $i = sprintf('%d H%s,'.
' %d Min%s %d Sek%s',
$sek / 3600,
floor($sek) != 1 ? '':'',
$sek / 60 % 60,
floor($sek / 60 % 60) != 1 ? '':'',
$sek % 60,
floor($sek % 60) != 1 ? '':''
);
            return $i;
        }




Also ich habs nun so

SELECT playertime FROM stats WHERE name='Ste3et_C0st' LIMIT='1'
so stell ich mir das vor.
SELECT [Spalte palyertime] FROM [tabelle stats] WHERE [Zellenname = Ste3et_C0sr] Limit='1'
Lieg ich mit der vermutung richtig.

Wenn ich das nach deinem beispiel mache kommt folgender error.

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 ''=1'' at line 1
 
PHP:
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /var/customers/webs/ni24674_4/test/ste3et.php on line 84

Das ist ohne die ''
 
Zurück
Oben