Variablennamen hochzählen?

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Benutzeravatar
Dungeonwatcher
Mitglied
Beiträge: 635
Registriert: 11.07.2004 10:04
Wohnort: Berlin

Variablennamen hochzählen?

Beitrag von Dungeonwatcher »

Moin! 8)

Mit folgendem Code lese ich drei Werte aus einer DB aus:

Code: Alles auswählen

$sql = "SELECT COUNT(tipp_points) as anzahl FROM " . FORMEL_TIPPS_TABLE . "
	WHERE tipp_race = $race_id
	GROUP BY tipp_points
	ORDER BY tipp_points DESC LIMIT 3";
if (!$result = $db->sql_query($sql))
{
	message_die(GENERAL_ERROR, 'Could not query formel_tipps', '', __LINE__, __FILE__, $sql);
}
Das funktioniert bestens. Diese drei Werte brauche ich in als je eine Variable. Aktuell zeige ich die Werte so an:

Code: Alles auswählen

while($row = mysql_fetch_object($result))
{
	$anz_place = $row->anzahl;

	echo $anz_place;
	echo "<br>";
}
Die Variable $anz_place möchte ich nun hochzählen lassen zu $anz_place_1, $anz_place_2 bzw. $anz_place_3. Allerdings will sich mir die Lösung hierfür nicht erschließen, trotz Google und PHP Handbuch. :-?

Daher mein Frage und Bitte an die Profis: Wie muss das ganze aussehen?

Bye
Benutzeravatar
Dungeonwatcher
Mitglied
Beiträge: 635
Registriert: 11.07.2004 10:04
Wohnort: Berlin

Re: Variablennamen hochzählen?

Beitrag von Dungeonwatcher »

Moin Unimatrix_0! 8)

Genau das ist das was mir nicht in den Kopf will. :-?

Bye
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Variablennamen hochzählen?

Beitrag von gn#36 »

Du weißt doch wie viele Werte du ausliest. Also einfach statt der while Schleife drei mal von Hand ausführen und in die Variable füllen. Ist vielleicht nicht elegant aber geht schnell.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Benutzeravatar
Dungeonwatcher
Mitglied
Beiträge: 635
Registriert: 11.07.2004 10:04
Wohnort: Berlin

Re: Variablennamen hochzählen?

Beitrag von Dungeonwatcher »

Hi! 8)

Ich hab's nun hinbekommen. Ein Tipp im NewsNet mit dem Stichwort "Variable Variablen" und ein Beispielscript war die Lösung. Das ganze sieht nun so aus:

Code: Alles auswählen

		$i = 1;
		while($row = mysql_fetch_object($result))
		{
			$var_name = "anz_place_" . $i;
			$$var_name = $row->anzahl;
			$i++;
		}
Eigentlich gar nicht so kompliziert wenn man es weiß. :)
Warum sind Dokus eigentlich immer so unlogisch und weltfremd geschrieben? :(

Bye
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Re: Variablennamen hochzählen?

Beitrag von Pyramide »

Genau für solche Zwecke gibt es Arrays. Hier variable Variablen zu verwenden, macht die Sache nicht nur unnötig kompliziert, sondern auch unsicherer und langsamer*.

* Wobei das "langsamer" in der Praxis kaum ins Gewicht fällt, da Leute, die variable Variablen nutzen, auch gern zu schwachsinnigen SQL- oder Schleifenkonstruktionen tendieren, die sich dann viel stärker auf die Performance auswirken.
KB:knigge
Benutzeravatar
Dungeonwatcher
Mitglied
Beiträge: 635
Registriert: 11.07.2004 10:04
Wohnort: Berlin

Re: Variablennamen hochzählen?

Beitrag von Dungeonwatcher »

Hi! 8)

Wie auch immer, ich finde es einfacher als Arrays und danke für dire Bemerkung... :wink:

Bye
Benutzeravatar
Dungeonwatcher
Mitglied
Beiträge: 635
Registriert: 11.07.2004 10:04
Wohnort: Berlin

Re: Variablennamen hochzählen?

Beitrag von Dungeonwatcher »

Hi! 8)

Hier mal meine Schleifenkonstruktion um Pyramide recht zu werden. :wink:

Code: Alles auswählen

// Place 1
if ($anz_place_1 == '1')
{
	$bet_race_place_1 = ($bet_race_place_1 / $anz_place_1);
}
elseif ($anz_place_1 == '2')
{
	$bet_race_place_1 = (($bet_race_place_1 + $bet_race_place_2) / $anz_place_1);
}
elseif ($anz_place_1 > '2')
{
	$bet_race_place_1 = ($bet_race_sum / $anz_place_1);
}

// Place 2
if ($anz_place_1 == '1' && $anz_place_2 == '1')
{
	$bet_race_place_2 = ($bet_race_place_2 * $anz_place_2);
}
elseif ($anz_place_1 == '1' && $anz_place_2 >= '2')
{
	$bet_race_place_2 = (($bet_race_place_2 + $bet_race_place_3) / $anz_place_2);
}

// Place 3
if ($anz_place_1 == '1' && $anz_place_2 == '1' && $anz_place_3 >= '1')
{
	$bet_race_place_3 = (((($bet_race_sum/'100') * $race_place_3)) / $anz_place_3);
}
elseif ($anz_place_1 == '2' && $anz_place_2 >= '1')
{
	$bet_race_place_3 = ($bet_race_place_3 / $anz_place_2);
}
Das ganze ist die Berechnung des Preisgeldes einer virtuellen F1 Wette.

$bet_race_sum entspricht 100% des Topfes
$bet_race_place_1 entspricht 50% des Topfes
$bet_race_place_2 entspricht 30% des Topfes
$bet_race_place_3 entspricht 20% des Topfes

Gibt es je einen ersten, zweiten und dritten Platz bekommt dieser halt 50%, 30% bzw. 20% des Topfes. Gibt es mehrere erste Plätze entfällt der Zweite bzw. auch der Dritte Platz. Der erste bekommt dann die Summe vom ersten, zweiten bzw. des dritten Platzes durch die Anzahl des ersten Platzes. Dito das ganze für den zweiten Platz bzw. dritten Platz. Im Extremfall gibt es dann nur erste Plätze die sich dann die 100% teilen.

Für alternative Umsetzungen bin ich jederzeit offen.

Bye Massi
--
P7BB
Mitglied
Beiträge: 383
Registriert: 15.07.2008 19:40

Re: Variablennamen hochzählen?

Beitrag von P7BB »

Benutz Arrays, die machen an der Stelle mehr Sinn, denke ich.
Benutzeravatar
Dungeonwatcher
Mitglied
Beiträge: 635
Registriert: 11.07.2004 10:04
Wohnort: Berlin

Re: Variablennamen hochzählen?

Beitrag von Dungeonwatcher »

Moin! 8)
P7BB hat geschrieben:Benutz Arrays, die machen an der Stelle mehr Sinn, denke ich.
Das sagen mir mittlerweile viele, nur keiner hat mir bisher erklärt warum? Abgesehen davon, das ich diese in diesem Zusammenhang noch nicht verstanden habe, welchen echten Vorteil bringt mir das?

Bye
Antworten

Zurück zu „Coding & Technik“