Seite 1 von 2

phpbb schreibweise

Verfasst: 21.05.2004 20:26
von Lord_Femto
hi.... ich habe diesen code mit hilfe von RubberDuck vom schon gewusst mod abgewandelt.

Code: Alles auswählen

$eintraege = mysql_query ("SELECT info FROM " . SCHON_GEWUSST_TABLE);
$zufall = mysql_num_rows($eintraege)-1;
$zufall = rand(0, $zufall);
$random = mysql_query ("SELECT info FROM " . SCHON_GEWUSST_TABLE . " LIMIT $zufall,1");
$row = mysql_fetch_array($random);
wie bekomme ich diesen code nun in diese typische phpbb schreibweise.
ich fange schon einmal an:

Code: Alles auswählen

sql = "SELECT info FROM " . SCHON_GEWUSST_TABLE);
$zufall = rand(0, count($sql)-1);
so und schon hört es bei mir auf.

unten unter zmessage steht folgender code:

Code: Alles auswählen

	'ZMESSAGE' => $row['info'],
doch ich will das so richtig schön integriert haben.
danke im voraus

Re: phpbb schreibweise

Verfasst: 21.05.2004 20:39
von Pyramide
Lord_Femto hat geschrieben:typische phpbb schreibweise
[ externes Bild ]

Verfasst: 21.05.2004 20:41
von Lord_Femto
*lol* na ich meinte diese codingweise.

immer ohne dieses mysql_query oder mysql_num_rows oder mysql_fetch_array usw.

Verfasst: 21.05.2004 21:51
von QCO
Also zuerstmal nutzt phpbb einen Database Abstraction Layer, die Klasse $db.
Ergo:
mysql_query() wird zu $db->sql_query()
mysql_fetch_array() wird zu $db->sql_fetchrow()
mysql_num_rows() wird zu $db->sql_numrows()

Code: Alles auswählen

sql = "SELECT info FROM " . SCHON_GEWUSST_TABLE;
$zufall = rand(0, count($sql)-1);
Das ist Blödsinn. So wird ein Schuh daraus...

Code: Alles auswählen

$sql = "SELECT info FROM " . SCHON_GEWUSST_TABLE);
$result = $db->sql_query($sql);
$zufall = rand(0, $db->sql_numrows($result)-1);
Ansonst ist es üblich, englischsprachige Variablennamen zu verwenden. Außerdem sehr beliebt ist die Funktion message_die(), mit deren Hilfe man ziemlich schnell und zielsicher debuggen kann (ist also auch eine Hilfe für dich).

Verfasst: 21.05.2004 22:29
von Lord_Femto
hmmm. hey danke. das war sehr sehr hilfreich. gerade das mit dem $db->....... und dem debugging. tortzdem weiß ich nicht, was hier falsch sein soll:

Code: Alles auswählen

$sql = "SELECT info
		FROM " . SCHON_GEWUSST_TABLE;
$ranomizer = rand(0, $db->sql_numrows($sql)-1) OR die(test);
$random = $db->sql_fetchrow($randomizer);
$znumber = rand(1, 2);
die ausgabe lautet test

Verfasst: 21.05.2004 22:43
von QCO

Code: Alles auswählen

$ranomizer = rand(0, $db->sql_numrows($sql)-1) OR die(test);
Ich glaube, du meintest hier was anderes.
So wie es da steht heißt das in etwa (man beachte die Klammersetzung)

Weise der Variablen $randomizer den Wert ( (Zufallszahl zwischen Null und Anzahl Infos aus db) ODER die ) zu; d.h. um diesen Code auszuwerten macht der Parser zuerst die Zufallszahl, welche einen Wert von 0 bis n haben kann.
Jetzt wirds hakelig: Danach machst du eine logische (binäre) ODER-Verknüpfung. Daraus folgt: die(test) wird ausgewertet, wenn das Ergebnis der Zufallsaktion (binär betrachtet) falsch ist. Wann ist die Zufallszahl aber falsch? Klare Regelung in PHP: Jeder Integer außer 1 ist falsch. Ergo: Wenn du Zufallszahl nicht 1 ist, wird die() ausgeführt.

Damit sollte es also funktionieren:

Code: Alles auswählen

$ranomizer = rand(0, $db->sql_numrows($sql)-1);

Verfasst: 21.05.2004 22:52
von Lord_Femto
boa alter. soll ich irre werden? kapiere bald gar nichts mehr :wink:

hab jetzt diesen code

Code: Alles auswählen

$sql = "SELECT info
		FROM " . SCHON_GEWUSST_TABLE;
$randomizer = rand(0, $db->sql_numrows($sql)-1);
$random = $db->sql_fetchrow($randomizer);
$znumber = rand(1, 2);
mir ist nämlich aufgefallen, dass ich ausversehen ranomizier statt randomizer geschrieben habe. nun sehe ich wieder das board. allerdings bleibt das feld leer.

hier mein array code.

Code: Alles auswählen

	'ZMESSAGE' => $random,

Verfasst: 21.05.2004 23:50
von QCO
Ey Alter, bevor du vollkommen irre wirst...

Code: Alles auswählen

$sql="SELECT info FROM " . SCHON_GEWUSST_TABLE;
if ( !$result = $db->sql_query($sql) )
{
 message_die(GENERAL_ERROR, 'Could not obtain infos from db', '', __LINE__, __FILE__, $sql); 
}
$all_infos = $db->sql_fetchrowset($result);
$info = $infos[rand(0, count($all_infos)-1)];




'ZMESSAGE' => $info['info'],
ungetestet und ohne Garantie und Haftung

Verfasst: 22.05.2004 00:08
von Lord_Femto
leider auch nicht...
wo könnte denn nur der fehler sein?

Verfasst: 22.05.2004 12:10
von QCO
"Geht nicht" ist keine Fehlermeldung :-?