Nur 5 Einträge aus DB auslesen

fixxxxxi

Erfahrenes Mitglied
Hallo,

ich habe eine Datenbank, in welcher Spielergebnisse usw eingetragen sind. Diese Datenbank lese ich aus, und bekomme auch die entsprechenden Inhalte angezeigt. Mein Problem ist, das ich es einfach nicht hinbekomme, das nur 5 Halloffame - Einträge angezeigt werden.

Ich habe bereits versucht ein LIMIT zu setzen mit zb.: ASC/DESC LIMIT 0, 5; aber das sortiert er mir irgendwie wild durcheinander. Wenn ich zb. DESC LIMIT 0, 20; eintrag, zeigt er mir nur eins anstatt alle 20 an. Ich weiß nicht mehr weiter! Wie kann ich das machen?

Das ist der Quelltext:

PHP:
<?php

echo '<table width="100%" cellspacing="0" cellpadding="0">';
/* Cup SQL-Querys */
safe_query("UPDATE ".PREFIX."cups SET status='2' WHERE start<='".time()."'");
safe_query("UPDATE ".PREFIX."cups SET status='3' WHERE ende<='".time()."'");
/**************/

$one = ($_GET['type']=="one" ? 1 : 0);

$headtitle = (!$one ? "Teamname" : "Spielername");


$bg1=BG_1;
$bg2=BG_2;
$all_teams=array();
$used_teams=array();
$n=1;
$ergebnis = safe_query("SELECT * FROM ".PREFIX."cup_clans WHERE 1on1='$one' ORDER BY clanID ASC");		
while($db=mysql_fetch_array($ergebnis)) {
	if(in_array($db[clanID], $used_teams, true)) continue;
	
	if(!$one){
		$ergebnis2 = safe_query("SELECT * FROM ".PREFIX."cup_all_clans WHERE ID = '".$db[clanID]."' ORDER BY name ASC");		
		$ds=mysql_fetch_array($ergebnis2);
	}
	$awards_sql=safe_query("SELECT * FROM ".PREFIX."cup_clans WHERE clanID = '".$db[clanID]."' &&  1on1='$one'");
	
	$joincups=mysql_num_rows($awards_sql);
	$joincups=($joincups==1 ? $joincups.' Cup' : $joincups.' Cups');
	
	$teamname=($one ? getnickname($db[clanID]) : $ds[name]);
	
	getclanawards($db[clanID]);
	$sortpoint=($ar_awards[1]*3)+($ar_awards[2]*2)+($ar_awards[3]*1);
	
	$all_teams[$sortpoint][$n]['teamID']=$db[clanID];
	$all_teams[$sortpoint][$n]['teamname']=$teamname;
	$all_teams[$sortpoint][$n]['joincups']=$joincups;
	$all_teams[$sortpoint][$n]['awards1']=$ar_awards[1];
	$all_teams[$sortpoint][$n]['awards2']=$ar_awards[2];
	$all_teams[$sortpoint][$n]['awards3']=$ar_awards[3];
	
	
	if(isset($ar1_name)){
		$a=1;
		foreach($ar1_name as $cup_names){
			$all_teams[$sortpoint][$n]['a1_cupname'][$a]=$cup_names;
			$a++;
		}
	}
	unset($ar1_name);
	if(isset($ar2_name)){
		$a=1;
		foreach($ar2_name as $cup_names){
			$all_teams[$sortpoint][$n]['a2_cupname'][$a]=$cup_names;
			$a++;
		}
	}
	unset($ar2_name);
	if(isset($ar3_name)){
		$a=1;
		foreach($ar3_name as $cup_names){
			$all_teams[$sortpoint][$n]['a3_cupname'][$a]=$cup_names;
			$a++;
		}
	}
	unset($ar3_name);
	
	$used_teams[]=$db[clanID];
	$n++;
}
krsort($all_teams);

$n=1;
foreach($all_teams as $all_teams_for){
	foreach($all_teams_for as $clan){
		$teamID=$clan['teamID'];
		$teamname='<a href="'.(!$one ? 'index.php?site=clans&action=show&clanID='.$teamID.'"><b><font color="#39669e">'.$clan['teamname'] : 'index.php?site=profile&id='.$teamID.'">'.$clan['teamname']).'</font></b></a>';
		
		$joincups='<font color="#808080">'.$clan['joincups'].'</font>';
	
  
  		
		if($clan['awards1']){
			for($i=1; $i<=$clan['awards1']; $i++)
				$award1.='<a href="index.php?site=cups&action=tree&cupID='.$clan['a1_cupname'][$i].'"><img src="images/icons/award_gold.png" border="0" alt="Gold" title="'.getcupname($clan['a1_cupname'][$i]).'" /></a>'; 
		}
		if($clan['awards2']){
			for($i=1; $i<=$clan['awards2']; $i++)
				$award2.='<a href="index.php?site=cups&action=tree&cupID='.$clan['a2_cupname'][$i].'"><img src="images/icons/award_silver.png" border="0" alt="Silber" title="'.getcupname($clan['a2_cupname'][$i]).'" /></a>'; 
		}
		if($clan['awards3']){
			for($i=1; $i<=$clan['awards3']; $i++)
				$award3.='<a href="index.php?site=cups&action=tree&cupID='.$clan['a3_cupname'][$i].'"><img src="images/icons/award_bronze.png" border="0" alt="Bronze" title="'.getcupname($clan['a3_cupname'][$i]).'" /></a>';
		}
		
		$awards=$award1.$award2.$award3;
		if(empty($awards))
			continue;
				
  echo '<tr>
<td width="32">&nbsp;</td>
<td valign="middle" height="32">'.$teamname.'<br><a>'.$joincups.'</a></td>
<td valign="middle" align="right">'.$awards.'</td>    
</tr><tr>';
		
		unset($award1,$award2,$award3,$awards);
		$n++;
	}	
}

echo'</table>';

?>
 
Du hast im ganzen Code kein Limit gesetzt. Wo du jetzt genau die Anzahl begrenzen willst (bei welcher Abfrage, aus welcher tabelle) sehen wir (ich zumindest) daher nicht.
 
PHP:
$ergebnis = safe_query("SELECT * FROM ".PREFIX."cup_clans WHERE 1on1='$one' ORDER BY clanID ASC");

Um diesen Code geht es... da hatte ich mehrere Sachen versucht zb.:

PHP:
$ergebnis = safe_query("SELECT * FROM ".PREFIX."cup_clans WHERE 1on1='$one' ORDER BY clanID ASC LIMIT 0, 5");
 
da magst du recht haben^^ nur ich weiß nicht, an welcher stelle der php, ich ein limit setzen soll. die php included ja keine andere php, sondern liest lediglich die datenbank aus. mit anderen worten muss ich die begrenzung ja irgendwo innerhalb der php setzen - aber wo

so schaut das ganze ohne begrenzung aus: http://to-nacht.de/index.php?site=sc_halloffame

sortiert wird das ganze ja hier:

getclanawards($db[clanID]);
$sortpoint=($ar_awards[1]*3)+($ar_awards[2]*2)+($ar_awards[3]*1);

aber wie ich nun das sortieren bzw das anzeigen begrenzen kann ist ja die frage!
 
Zuletzt bearbeitet:
So wie es ausschaut im ersten Query das du sendest, aber ich verstehe dein Script nicht. Wieso fürhst du den Query zweimal fast in identischer Form aus. Nach dem Auslesen liest du die Clans nochmal aus, nur nochmal einzeln durch beschränkung auf eine ID. Das ist doch schwachsinn :D
 
weil bei einem 1on1 turnier andere daten verwendet werden als bei einem teamturnier.

also beim ersten query... sprich in diesem :

$ergebnis = safe_query("SELECT * FROM ".PREFIX."cup_clans WHERE 1on1='$one' ORDER BY clanID ASC");

aber wie kann ich da sortieren
 
Zuletzt bearbeitet:
Hallo,

nun ist es eine ganze Weile her, und ich habe mich vorrübergehend um andere Sachen gekümmert als diese Hall of Fame. Nichts desto trotz, muss es ja irgendeine Lösung zum Problem geben.

Hier nocheinmal meine derzeitige PHP:

PHP:
<?php

echo '<table width="100%" cellspacing="0" cellpadding="0">';
/* Cup SQL-Querys */
safe_query("UPDATE ".PREFIX."cups SET status='2' WHERE start<='".time()."'");
safe_query("UPDATE ".PREFIX."cups SET status='3' WHERE ende<='".time()."'");
/**************/

$one = ($_GET['type']=="one" ? 1 : 0);

$headtitle = (!$one ? "Teamname" : "Spielername");

$bg1=BG_1;
$bg2=BG_2;
$all_teams=array();
$used_teams=array();
$n=1;
$ergebnis = safe_query("SELECT * FROM ".PREFIX."cup_clans WHERE 1on1='$one' ORDER BY clanID DESC");
while($db=mysql_fetch_array($ergebnis)) {
	if(in_array($db[clanID], $used_teams, true)) continue;
	
	if(!$one){
		$ergebnis2 = safe_query("SELECT * FROM ".PREFIX."cup_all_clans WHERE ID = '".$db[clanID]."' ORDER BY name ASC");		
		$ds=mysql_fetch_array($ergebnis2);
	}
	$awards_sql=safe_query("SELECT * FROM ".PREFIX."cup_clans WHERE clanID = '".$db[clanID]."' &&  1on1='$one'");
	
	$joincups=mysql_num_rows($awards_sql);
	$joincups=($joincups==1 ? $joincups.' Cup' : $joincups.' Cups');
	
	$teamname=($one ? getnickname($db[clanID]) : $ds[name]);
	
	getclanawards($db[clanID]);
	$sortpoint=($ar_awards[1]*3)+($ar_awards[2]*2)+($ar_awards[3]*1);
	
	$all_teams[$sortpoint][$n]['teamID']=$db[clanID];
	$all_teams[$sortpoint][$n]['teamname']=$teamname;
	$all_teams[$sortpoint][$n]['joincups']=$joincups;
	$all_teams[$sortpoint][$n]['awards1']=$ar_awards[1];
	$all_teams[$sortpoint][$n]['awards2']=$ar_awards[2];
	$all_teams[$sortpoint][$n]['awards3']=$ar_awards[3];
	
	
	if(isset($ar1_name)){
		$a=1;
		foreach($ar1_name as $cup_names){
			$all_teams[$sortpoint][$n]['a1_cupname'][$a]=$cup_names;
			$a++;
		}
	}
	unset($ar1_name);
	if(isset($ar2_name)){
		$a=1;
		foreach($ar2_name as $cup_names){
			$all_teams[$sortpoint][$n]['a2_cupname'][$a]=$cup_names;
			$a++;
		}
	}
	unset($ar2_name);
	if(isset($ar3_name)){
		$a=1;
		foreach($ar3_name as $cup_names){
			$all_teams[$sortpoint][$n]['a3_cupname'][$a]=$cup_names;
			$a++;
		}
	}
	unset($ar3_name);
	
	$used_teams[]=$db[clanID];
	$n++;
}
krsort($all_teams);

$n=1;

foreach($all_teams as $all_teams_for){
	foreach($all_teams_for as $clan){
		$teamID=$clan['teamID'];
		$teamname='<a href="'.(!$one ? 'index.php?site=clans&action=show&clanID='.$teamID.'"><b><font color="#39669e">'.$clan['teamname'] : 'index.php?site=profile&id='.$teamID.'">'.$clan['teamname']).'</font></b></a>';
		
		$joincups='<font color="#808080">'.$clan['joincups'].'</font>';
	
		if($clan['awards1']){
			for($i=1; $i<=$clan['awards1']; $i++)
				$award1.='<a href="index.php?site=cups&action=tree&cupID='.$clan['a1_cupname'][$i].'"><img src="images/icons/award_gold.png" border="0" alt="Gold" title="'.getcupname($clan['a1_cupname'][$i]).'" /></a>'; 
		}
		if($clan['awards2']){
			for($i=1; $i<=$clan['awards2']; $i++)
				$award2.='<a href="index.php?site=cups&action=tree&cupID='.$clan['a2_cupname'][$i].'"><img src="images/icons/award_silver.png" border="0" alt="Silber" title="'.getcupname($clan['a2_cupname'][$i]).'" /></a>'; 
		}
		if($clan['awards3']){
			for($i=1; $i<=$clan['awards3']; $i++)
				$award3.='<a href="index.php?site=cups&action=tree&cupID='.$clan['a3_cupname'][$i].'"><img src="images/icons/award_bronze.png" border="0" alt="Bronze" title="'.getcupname($clan['a3_cupname'][$i]).'" /></a>';
		}

		$awards=$award1.$award2.$award3;

		if(empty($awards))
			continue;

  echo '<tr>
<td width="32">&nbsp;</td>
<td valign="middle" height="32">'.$teamname.'<br><a>'.$joincups.'</a></td>
<td valign="middle" align="right">'.$awards.'</td>    
</tr><tr>';
						
		unset($award1,$award2,$award3,$awards);
		$n++;
	}	
}

echo'</table>';

?>

Ich habe diverse Dinge ausprobiert. Jedoch erscheint es eigentlich logisch, das ich nicht wie damals angenommen in den oberen Querys die Anzahl begrenze, denn da werden ja letztendlich alle Datenbanksätze benötigt um ein korrektes Anzeigen der Teams, welche die meisten Siege haben benötigt.

Also muss die Begrenzung irgendwo unten bei

PHP:
		$awards=$award1.$award2.$award3;

		if(empty($awards))
			continue;

  echo '<tr>
<td width="32">&nbsp;</td>
<td valign="middle" height="32">'.$teamname.'<br><a>'.$joincups.'</a></td>
<td valign="middle" align="right">'.$awards.'</td>    
</tr><tr>';
						
		unset($award1,$award2,$award3,$awards);
		$n++;

gesetzt werden. Probiert hab ich so einiges wie etwa sowas: if(!($i%4)). Gebracht hat bisher alles nichts und ich versuche vergebens diese Scriptausgabe auf eine bestimmte Länge zu begrenzen.

LG Chris
 
Ja, siehts du, aber nur weil ich so lang rumgefummelt hab und bei limit den wert 0,50 eingegeben habe. wenn ich bei limit 0,5 schreibe seh ich nur einen.
 
Zurück