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:
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:
Verfasst: 21.05.2004 22:52
von Lord_Femto
boa alter. soll ich irre werden? kapiere bald gar nichts mehr
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.
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
