Antworten auf deine Fragen:
Neues Thema erstellen

Antworten zum Thema „Meist eingetragener Datensatz aus der Datenbank auslesen“

rey

Der Frager ;)

hi,
ich habe eine tabelle wo user angezeigt werden wenn man auf den user klickt werden details zu dem user ausgegeben

ich habe bis jetzt folgende ausgaben geshcaft
Nickname.
Siege.
Niederlagen.

Jetzt möchte ich die Map auslesen die der Spieler am meisten Gespielt hat

mein script schaut so aus
PHP:
<table width="100%" border="1">
<?php 
include("admin/mysql.inc.php");
?>
<?php 
$id = $_GET["id"];

$sql = mysql_query("SELECT nick FROM $ligascript WHERE id = $id GROUP BY nick ");
 while ($ds = mysql_fetch_object($sql)) 
{
  $nick = $ds ->nick;

    echo"<tr>
    <td>Nickname:</td>
    <td>&nbsp;</td>
    <td>$nick</td>
  </tr>";
}
?>
<?php 
$sql2 = mysql_query("SELECT * FROM $ligascript WHERE id = $id");
while ($ds = mysql_fetch_object($sql2)) 
{
 $wins = $ds->s;
 $loses = $ds->n;
 $gesamt = $wins + $loses;
 
  echo"<tr>
    <td>wins:</td>
    <td>&nbsp;</td>
    <td>$wins</td>
  </tr>
  <tr>
    <td>loses:</td>
    <td>&nbsp;</td>
    <td>$loses</td>
  </tr><tr>
    <td>Spiele Gesamt:</td>
    <td>&nbsp;</td>
    <td>$gesamt</td>
  </tr>";
    
}
?>
<?php
$sql3 = mysql_query("SELECT map_name,COUNT(map_name) FROM $liga_stat WHERE id = $id GROUP BY map_name");
while ($ds = mysql_fetch_object($sql3)) 
{
 $map = $ds->map_name;

echo"<tr>
    <td>Meist gespielte Map:</td>
    <td>&nbsp;</td>
    <td>$map</td>";


}
?>

<?php
echo '<pre>';
print_r($_SESSION);
print_r($_POST);
print_r($_GET);
echo '</pre>';
?>
er zeigt mir aber gar nix in dem feld an.
ich hoffe ihr wisst was ich mein.
In die Spalte map_name wurden nameneingetragen udn der wo am meisten in der spalte vorkommt wo der user auch drinen ist soll angezeigt werden.
ich zeig eich mal wie eine zeile ausschaut.

id | spieler1 | spieler2 | torep1 | torep2 | report | datum | uhrzeit | winners_race
loser_race | map_name

1 | test | test2 | 1 | 0 | bla | bla | bla | p | t | LT

2 | test | test3 | 1 | 0 | blaa | blaa | | blaa | p | z | Gaia

3 | test2 | test | 1 | 0 | bla2 | bla2 | bla2 | p | p | LT

Ind er Spieler Tabelle werde die Spieeler aufgelistet klcke ich nun auf den namen test
werden dei daten ausgegeben
und es soll eben auch der map name ausgegeben werden von der amp die er am meisten gespielt hat in diesem fall wäre es LT da der Spieler lt zweimal gespielt hat udn gaia nur einmal ich hoffe ich habe es verständlich gemacht.

desweitern möchte ich die Siege auf jeder einzelnen map in % ausrechnen.
sagen wir mal es gibt die maps test1 test2 und test3
der Spieler gewint auf test1 jedes zweite Spiel auf der map test2 jedes Spiel udn auf der map test3 keins.
udn das eben in Prozent das würde dann z.B. so ausshen.
Winratio on this maps:
test1 = 50%
test2 = 100%
test3 = 0%
 
K

kyle66

Guest

AW: Meist eingetragener Datensatz aus der Datenbank auslesen

Hi,

was soll denn das "WHERE id = $id"? dann hast du doch bloß einen Datensatz, da bringt ein GROUP BY wenig, oder versteh ichd as falsch?

Die Siege der einzelnen Maps kannst du ganz normal mittels "WHERE map_name = 'LT'" rauskriegen

Grüße
kyle
 
K

kyle66

Guest

AW: Meist eingetragener Datensatz aus der Datenbank auslesen

Das mit den Prozenten könntest du über einen 2.Subselect machen (ein Join ist aber sicher eleganter)

select map, count(siege), 100/(select count(*) FROM tabellenname) *count(siege)
FROM tabellenname
group by map
HAVING sieg=1

da ich deine genaue Tabellenstruktur nicht kenne, kann ich leider nicht mehr dazu sagen. Evt. ist das ganze aber auch viel einfacher, wenn du dir eine funktion schreibst, welche du in deinem Select aufrufst.

Auf was für einer Datenbank läuft das ganze eigentlich?
 
Zuletzt bearbeitet von einem Moderator:

rey

Der Frager ;)

AW: Meist eingetragener Datensatz aus der Datenbank auslesen

ich habe eine tabelle wo Spieler aufgelistet sidn anch punkten
wenn ich auf einen Spieler Klicke öffnet sich das Playerdetals Dokuemnt und gibt die daten aus die ich haben möchte das alles ha auch bei Nickname , wins,loses und gesamt Spiele geklappt.
jetzt möchte ich noch ermitteln welche map der Spieler ma meisten gespielt hat.
in meine beispiel wäre das LT weil Sie zwei mal vorkommt und gaia nur einmal vorkommt.


die tabellen Struktur ist diese


$liga_stat

ID ; Spieler1.Spieler2;torep1;torep2;report(im report wird der Replaypfad gespeichert);Datum;Uhrzeit,winners_race_loser_race; map_name

dann gibt es noch die tabelle $ligascript
diese besteht aus

Id; Punkte ; Niederlagen; Siege ; gegentore; Tore,Nick
 
Zuletzt bearbeitet:

michas

Nicht mehr ganz neu hier

AW: Meist eingetragener Datensatz aus der Datenbank auslesen

select map, count(siege), 100/(select count(*) FROM tabellenname) *count(siege)
FROM tabellenname
group by map
HAVING sieg=1
Was ist denn das für eine interessante SQL-Anweisung...;)

Gruß
 

rey

Der Frager ;)

AW: Meist eingetragener Datensatz aus der Datenbank auslesen

dieses wurde mir vorgeschlagen zu machen aber
aber er gibt immer 1 aus und nicht den namen
PHP:
<?php
$played = array();
$sql3 = mysql_query("SELECT map_name FROM $liga_stat WHERE id = $id");
while ($ds = mysql_fetch_object($sql3)) {
    if(isset($played[$ds->map_name])){
        $played[$ds->map_name]++;
		echo"$played";
    }
    else{
        $played[$ds->map_name] = 1;
		echo"$played";
    } 
}

print_r($played);
exit;  ?>
 
K

kart6

Guest

AW: Meist eingetragener Datensatz aus der Datenbank auslesen

vllt. legst du einfach noch eine tabelle an...
also

|name|LT|Gaia|Map_3|Map_4|
|test1|2|1|0|0|

und updatest die dann immer mit...

und les dir mal Artikel über Mysql-injections durch...
 

rey

Der Frager ;)

AW: Meist eingetragener Datensatz aus der Datenbank auslesen

also ne tabelle mit allen 50 maps ? :/ das isnd dann 52 spalten :/
id name map....
 
K

kart6

Guest

AW: Meist eingetragener Datensatz aus der Datenbank auslesen

Naja...dann machs halt so:

PHP:
	$query = "SELECT `map_name` FROM $ligascript WHERE id='".mysql_real_escape_string($id)."'";
	while($fetch = mysql_fetch_array($query)) {
		if(isset($maps[$fetch['map_name']])) {
			$maps[$fetch['map_name']]++;
		}
		else {
			$maps[$fetch['map_name']] = 1;
		}
	}
	$most = 0;
	foreach($maps as $name => $viewed) {
		if($most <= $viewed) {
			$most = $viewed;
			$best_map = $name;
		}
	}
	echo $best_map.' mit '.$most;

habe es nicht getestet...aber müsste eigentlich gehn...
 

rey

Der Frager ;)

AW: Meist eingetragener Datensatz aus der Datenbank auslesen

nö geht net er meint die fetch anweisung sei falsch

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\ll\playerdetails.php on line 62

Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\ll\playerdetails.php on line 71
 
K

kart6

Guest

AW: Meist eingetragener Datensatz aus der Datenbank auslesen

aso lol mach ums query noch ein mysql_query() xD total vergessen
 

rey

Der Frager ;)

AW: Meist eingetragener Datensatz aus der Datenbank auslesen

ich nehme an du meinst es so

$query = "SELECT `map_name` FROM $liga_stat WHERE id='".mysql_real_escape_string($id)."'";
while($fetch = mysql_fetch_array (mysql_query($query))) {

aber das forech ist anscheind immernoch wrong ;)
 
K

kart6

Guest

AW: Meist eingetragener Datensatz aus der Datenbank auslesen

ne bitte schon im query also $query=mysql_query(...) ansonsten ist das ungültig...kA wieso :p
 

rey

Der Frager ;)

AW: Meist eingetragener Datensatz aus der Datenbank auslesen

PHP:
<?php
$query=mysql_query("SELECT `map_name` FROM $liga_stat WHERE id='".mysql_real_escape_string($id)."'");
    while($fetch = mysql_fetch_array($query)) {
        if(isset($maps[$fetch['map_name']])) {
            $maps[$fetch['map_name']]++;
        }
        else {
            $maps[$fetch['map_name']] = 1;
        }
    }
    $most = 0;
    foreach($maps as $name => $viewed) {
        if($most <= $viewed) {
            $most = $viewed;
            $best_map = $name;
        }
    }
    echo $best_map.' mit '.$most;  
?>
selbe Meldung das foreach falsch sei :/ ich persönlich sieh da kein fehler :)
liegt vielleicht daran das ich mit net auskenne :/
es gehen doch beide if anweisungen zu ich versteh den fehler net :/
"Warning: Invalid argument supplied for foreach() "

ich glaub ich mach es so wie du gesgat hast mit den spalten für jeden mapnamen.
und versuchs vielleicht klappt das dann besser weil er sol ja gucken welche map der benutzer x am meisten gespielt hat und nicht welche map überhaupt am meisten gespielt wurde.
 
Zuletzt bearbeitet:
K

kart6

Guest

AW: Meist eingetragener Datensatz aus der Datenbank auslesen

hmm...seltsam...
sicher, dass auch datensätze existieren? und, dass keine der variablen die ich benutzt habe schonmal gesetzt wurde?

Ansonsten probier mal:
PHP:
<?php
	
	$query = mysql_query("SELECT `map_name` FROM $ligascript WHERE id='".mysql_real_escape_string($id)."'");
	$i = 0;
	while($fetch = mysql_fetch_array($query)) {
		$played[$i] = $fetch['map_name'];
		$i++;
	}
	foreach($played as $map) {
		if(isset($maps[$map])) {
			$maps[$map]++;
		}
		else {
			$maps[$map] = 1;
		}
	}
	$most = 0;
	foreach($maps as $name => $viewed) {
		if($most <= $viewed) {
			$most = $viewed;
			$best_map = $name;
		}
	}
	echo $best_map.' mit '.$most;

ist eigentlich das gleiche nur nochmal geteilt...

edit: ist die id nicht die user-id? o_O dann ist das query ja falsch...
 

rey

Der Frager ;)

AW: Meist eingetragener Datensatz aus der Datenbank auslesen

genau die id hat nicht mit der user id gemeinsam

die tabelle liest dei daten aus der Tabelle liga script
wenn ich auf einen username klicke nimmt er die ID des users
und liest mir die daten von der Tabelle ligscript aus also loses wins nickname.
nun möchte ich ja auch noch andere Statistiken mit einbauen z.B. mit welcher rasse wie oft gewonne hat udn eben welche map der spieler am meisten gespielt hat.
die daten sind isn liga stat.
in liag stat wird nichts upgedatet sondern immer wiede rhinzugefügt und jeder datensatz der neu hinzugefgt wird bekomtm türlich ne id.
also müsste man es dann so verbindne das er nach dem usernamen des spieler
als er soll gucken welche map der spieler am meisten gespielt hat
in der tabelle liga_stat kann es sein das der username (nick) in der splate spieler1 oder spieler2 vorkommt
spieler1 erden die gewinner eingetragen udn spieler2 die verlierer.

hier ein post beispiel

Spieler1 heisst bsp.kart6 (gewinner) spieler2 heisst rey(verlierer)
map wurde gespielt (luna) torespieler1=1 tore spieler2= 0
so würde die zeile dann aussheen
ID|Spieler1|spieler2|toresp1|toresp2|datum|uhrzeit|winrace|loserace|map_name
1 | kart6 | rey|1 |0 | 2007-09-26 |09:17:44| t|p| Luna
2 | rey| kart6|1 |0 | 2007-09-26 |09:18:44| z|t| Luna
3 | kart6| rey|1 |0 | 2007-09-26 |09:19:44| z|t| LT
so die map mit dem namen wurde zweimal von spieler kart6 gespielt
er kommt zweimal in der spalte speiler1 vor und 1mal in der splate spieler2
wen ich nun die statistiken von Spieler kart6 haben möchte
nick
lose
win
winratio
this Player played this map at most:
winratio with the race Protoss(p):
winratio with the race terran(t):
winratio with the race Zerg(z):

Repalys of this Player:
so sieht das detail dokument aus wenn das mit der map endlich klappt hab i noch das mti winratio prtoss terran zerg vor mir :)

also wie du siehst anhand der id geht es leider nicht :/

ah ja die foreach will er wieder net annehmen
 
K

kart6

Guest

AW: Meist eingetragener Datensatz aus der Datenbank auslesen

Dann ganz einfach die get-variable "spieler" setzen:
PHP:
<?php
$spieler = $_GET['spieler'];
$query = mysql_query("SELECT `map_name` FROM $liga_stat WHERE spieler1 = '".mysql_real_escape_string($spieler)."' OR spieler2 ='".mysql_real_escape_string($spieler)."'");
    while($fetch = mysql_fetch_array($query)) {
        if(isset($maps[$fetch['map_name']])) {
            $maps[$fetch['map_name']]++;
        }
        else {
            $maps[$fetch['map_name']] = 1;
        }
    }
    $most = 0;
    foreach($maps as $name => $viewed) {
        if($most <= $viewed) {
            $most = $viewed;
            $best_map = $name;
        }
    }
    echo $best_map.' mit '.$most;  
?>

*hoff, dass es jetzt klappt* xD
 

rey

Der Frager ;)

AW: Meist eingetragener Datensatz aus der Datenbank auslesen

1.) wieder foreach is falsch ;)
2.) mus es net $spieler= $_get[nick] heißen?
 
K

kart6

Guest

AW: Meist eingetragener Datensatz aus der Datenbank auslesen

ja...hatte nicht bemerkt, dass du die schon gesetzt hast...schon damit probiert?
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Statistik des Forums

Themen
175.158
Beiträge
2.581.870
Mitglieder
67.224
Neuestes Mitglied
Aliyah79
Oben