PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : abfrage auf vb ändern


Highlandersepp
10.03.2006, 18:40
hi zusammen,
nachdem ich mich heute entschlossen habe das wbb abzuschaffen und mir das vb zuzulegen und nun anfange diverse seiten umzuschreiben, kommt hier für mich schon mal ein verständnisproblem mit einer php, nachdem das in vb doch etwas anders ausieht.

<?php
$filename="skiracing_rangliste.php";
require("./global.php");
require("./acp/lib/class_useronline.php");


$si = 0;
$class = 1;
$tabellebit = "";
$rang = 0;
$abfrage = $db->query("SELECT * FROM bb".$n."_skiracing2006_rangliste ORDER BY ewigpunkte DESC");
$ergebnis = $db->num_rows($abfrage);
while ($row = $db->fetch_array($abfrage)) {
if ($row['username']) $si++;
$ewigrang++;
$username = $row['username'];
$ewigpunkte = $row['ewigpunkte'];
$abfahrtpunkteewig = $row['abfahrtpunkteewig'];
$supergpunkteewig = $row['supergpunkteewig'];
$slalompunkteewig = $row['slalompunkteewig'];
$riesenpunkteewig = $row['riesenpunkteewig'];
$kombipunkteewig = $row['kombipunkteewig'];
$techpunkteewig = $row['techpunkteewig'];
$kombipunkteewig = $row['kombipunkteewig'];

$ewigpunkte=$abfahrtpunkteewig+$supergpunkteewig+$slalompunkteewig+$riesenpunkteewig+$kombipunkteewi g+$techpunkteewig+$kombipunkteewig;
//wcpunkte in die Datenbank eintragen per update funktion
$ergebnis = $db->query("UPDATE bb".$n."_skiracing2006_rangliste SET ewigpunkte='$ewigpunkte' WHERE username='$username' ");
//wcpunkte ende
if ($class == 1) $tableclass = "tablea";
elseif ($class == 2) {
$class = 0;
$tableclass = "tableb";

}
$class++;


$usname = $wbbuserdata['username'];
if($usname == $username){
eval ("\$tabellebit .= \"".$tpl->get("anzeigerang_wcrang_woche")."\";");
}
eval ("\$tabellebit .= \"".$tpl->get("skiracing_ranglistebit")."\";");
}




eval("\$tpl->output(\"".$tpl->get("skiracing_rangliste")."\");");
?>


wär klasse, wenn mir das jemand auf vb übersetzen könnte, für die alles andere komm ich dann vlt selber klar........

und an dieser stelle noch ein dickes lob:
die install und übernahme aus dem wbb war ein traum :D
jetzt muss ich mich nur noch durchkämpfen :eek:

Boothby
10.03.2006, 19:34
Hallo,

diese Anleitung von Codemonkey (http://www.vbulletin-germany.com/forum/showthread.php?t=9327) ist eine gute Einstiegshilfe, wenn man eigene Scripte programmieren möchte. Die ist zwar für das vB 3.0.x geschrieben, trifft aber größtenteils genauso auf das vB 3.5.x zu ;)

Zu deiner Frage:
<?php

define('THIS_SCRIPT', 'skiracing_rangliste');


// get special phrase groups
$phrasegroups = array();

// get special data templates from the datastore
$specialtemplates = array();

// pre-cache templates used by all actions
$globaltemplates = array('anzeigerang_wcrang_woche','skiracing_ranglistebit','skiracing_rangliste');

// pre-cache templates used by specific actions
$actiontemplates = array();

require_once('./global.php');


$si = 0;
//$class = 1;
$tabellebit = "";
$rang = 0;
$abfrage = $db->query_read("SELECT * FROM " . TABLE_PREFIX . "_skiracing2006_rangliste ORDER BY ewigpunkte DESC");
$ergebnis = $db->num_rows($abfrage);
while ($row = $db->fetch_array($abfrage)) {
if ($row['username']) $si++;
$ewigrang++;
$username = $row['username'];
$ewigpunkte = $row['ewigpunkte'];
$abfahrtpunkteewig = $row['abfahrtpunkteewig'];
$supergpunkteewig = $row['supergpunkteewig'];
$slalompunkteewig = $row['slalompunkteewig'];
$riesenpunkteewig = $row['riesenpunkteewig'];
$kombipunkteewig = $row['kombipunkteewig'];
$techpunkteewig = $row['techpunkteewig'];
$kombipunkteewig = $row['kombipunkteewig'];

$ewigpunkte=$abfahrtpunkteewig+$supergpunkteewig+$slalompunkteewig+$riesenpunkteewig+$kombipunkteewi g+$techpunkteewig+$kombipunkteewig;
//wcpunkte in die Datenbank eintragen per update funktion
$ergebnis = $db->query_write("UPDATE " . TABLE_PREFIX . "_skiracing2006_rangliste SET ewigpunkte='$ewigpunkte' WHERE username='" . $db->escape_string($username) ."' ");
//wcpunkte ende

// keine Ahnung, wozu das gut ist, Hintergrundfarbe?

/*
if ($class == 1) $tableclass = "tablea";
elseif ($class == 2) {
$class = 0;
$tableclass = "tableb";

}
$class++;
*/

// Wenn Hintergrundfarbe, dann:

exec_switch_bg();

// Variablen sind jetzt $bgclass und $altbgclass


$usname = $vbulletin->userinfo['username'];
if($usname == $username){
eval ('$tabellebit .= "'.fetch_template('anzeigerang_wcrang_woche').'";');
}
eval ('$tabellebit .= "'.fetch_template('skiracing_ranglistebit').'";');
}


$navbits = array(''=>'Skiracing 2006');

$navbits = construct_navbits($navbits);
eval('$navbar = "' . fetch_template('navbar') . '";');

eval ('print_output("'.fetch_template('skiracing_rangliste') . '");');
?>

Da ich das wbb nicht kenne, konnte ich an einer Stelle nur raten. ;)

Hinweis. Den Update würde ich für alle betroffenen Datensätze nach der while-Schleife durchführen. Die Daten könnte man z.B. in einem Array speichern. ;)

// Edit: Kleiner Fehler korrigiert.

Highlandersepp
10.03.2006, 19:39
ich schliesse dich in mein nachtgebet ein :p

das ging ja superschnell..........DANKE

zu dem unklaren:
damit wird für die ausgabe der tabelle je zeile eine eigene farbe definiert, siehst du im original hier:

Rangliste (http://www.skiracing.de/wbb2/skiracing_rangliste.php)

Boothby
10.03.2006, 19:48
Dann wäre wie beschrieben exec_switch_bg() genau das richtige. Damit werden die CSS-Klassen alt1 und alt2 gesteuert. Noch als Hinweis. Das Template skiracing_rangliste müßtest du entsprechend Codemonkeys Beispiel anpassen. Damit bekommst du den vB-Style. ;)

Highlandersepp
10.03.2006, 19:57
ja danke, das hatte ich schon heute nachmittag gesehen.........sind wohl ein paar begriffe, die anders als im wbb sind.........aber html bleibt html. :D

Highlandersepp
13.03.2006, 13:34
ok, habs mit ner leichten änderung hinbekommen, nun das nächste problem:

der style für diese tabelle soll nicht der standardstyle sein............also hab ich ein tpl im entsprechenden style erstellt und ich bekomm ne weisse seite.

nur wenn ich das tpl auch in den standardstyle stelle bekomme ich die seite angezeigt, allerdings im standardstyle und nicht im ski racing style.

was tun ?? :confused:

Boothby
13.03.2006, 18:16
Uups, mein Fehler. Du mußt die Templates vorher cachen. Vgl. hierzu die Zeile mit $globaltemplates. Im obigen Bsp. hab ich's korrigiert. ;)

Highlandersepp
13.03.2006, 18:22
hi
auch ups........die funktion tpl cachen hab ich noch gar ned vermisst.........wo is die ?? mit welchem begriff ??

Boothby
13.03.2006, 21:45
Das passiert automatisch für alle Templates, die in den Arrays: $specialtemplates, $globaltemplates und $actiontemplates bezeichnet werden.

$specialtemplates lädt Daten aus dem Datastore (meistens Variablen, die ständig benötigt werden)
$globaltemplates lädt Templates, egal bei welcher Aktion
$actiontemplates lädt Templates bezüglich der vorgegebenen Aktion (also entsprechend der Variablen $_REQUEST['do']).