Hallo
ich habe ein altes Modul was unter 1.12.3.1.33.4.14 (2012-06-21) und nun versuche ich es auf das 2.2.4.74 (2015-08-13) anzupassen
da kommt folgende Fehler Meldung
PHP Run-time warning:
mysql_result() expects parameter 1 to be resource, object given
in modules/Namenstag/showalpha.php on line 181
das wäre dann mal der Code
$result = sql_query("select content, bes from ".$prefix."_namenstag order by eid DESC limit 0,1", $dbi);
list($lastuser) = sql_fetch_row($result, $dbi);
// echo "<i>$lastuser</center></b></i>";
$numrows = sql_num_rows(sql_query("select eid from ".$prefix."_namenstag", $dbi), $dbi);
echo "<br><center>"._WEHAVE." <b>$numrows</b> "._BIRTHENTR."<br><br>\n";
alpha();
SortLinks($letter);
$min = $pagesize * ($page - 1); // This is where we start our record set from
$max = $pagesize; // This is how many rows to select
/* All my SQL stuff. DO NOT ALTER ANYTHING UNLESS YOU KNOW WHAT YOU ARE DOING */
/* This is a totaly crap code, any help to re-code this functions will be very appreciated */
/* Need to be database independent */
$count = "SELECT COUNT(eid) AS total FROM ".$prefix."_namenstag "; // Count all the users in the db..
$select = "select eid, content, bes, did, mid, yid from ".$prefix."_namenstag "; //select our data
$where = "where eid != 0 ";
if ( ( $letter != "Other" ) AND ( $letter != "All" ) ) { // are we listing all or "other" ?
$where .= "AND content like '".$letter."%' "; // I guess we are not..
} else if ( ( $letter == "Other" ) AND ( $letter != "All" ) ) { // But other is numbers ?
$where .= "AND content REGEXP \"^\[1-9]\" "; // REGEX :D, although i think its MySQL only
// Will have to change this later.
// if you know a better way to match only the first char
// to be a number in uname, please change it and email
// myphportal-developers@lists.sourceforge.net the correction
// or goto http://sourceforge.net/projects/myphportal and post
// your correction there. Thanks, Bjorn.
} else { // or we are unknown or all..
$where .= ""; // this is to get rid of anoying "undefinied variable" message
}
$sort = "order by $sortby"; //sorty by .....
$limit = " ASC LIMIT ".$min.", ".$max; // we only want rows $min to $max
/* due to how this works, i need the total number of users per
letter group, then we can hack of the ones we want to view */
$count_result = sql_query($count.$where, $dbi);
$num_rows_per_order = mysql_result($count_result,0,0);
/* This is where we get our limit'd result set. */
$result = sql_query($select.$where.$sort.$limit, $dbi) or die(); // Now lets do it !!
besagter Zeile wäre das hier
$num_rows_per_order = mysql_result($count_result,0,0);
weiß jemand was hier angepasst werden muss?
prinzipell erstmal ALLE sql-Aufrufe umstellen von "mysql_xxxxx" auf "sql_xxxx" !!
bei keinem SQL-Aufruf ist das $dbi als 2. Parameter notwendig und überflüssig.
Bitte unbedingt die API- und SQL-Funktionen des Systems nutzen, sonst geht nix !!!
hi
ok hab das my... entfernt, auch die dbi
nun meldet er diesen fehler in der zeile
Fatal error: Call to undefined function sql_result() in /home/www/web204/html/doc/modules/Namenstag/showalpha.php on line 183
da steh in der Zeile
$num_rows_per_order = sql_result($count_result,0,0);
gibt ne Doku zum anpassen der Module, was alles geändert werden muss fürs neue PMX?
die Doku kommt noch....
der Befehr sql_result ... bzw mysql_result gibt es unter mysqli nicht mehr. Auch war er nie Bestandteil der pmx-API. Für das Ermitteln der Anzahl der Ergebnisse für eine Abfrage solltest du sql_num_rows($result) verwenden.
ok gut wenn ne doku kommt...
habe jetzt aus der fehlerhaften zeile
$num_rows_per_order = sql_result($count_result,0,0);
diese hier gemacht
$num_rows_per_order = sql_num_rows($result, $count_result,0,0);
oder auch mit dieser hier
$num_rows_per_order = sql_num_rows($count_result,0,0);
oder dieser
$num_rows_per_order = sql_num_rows($result);
probiert, es wird nun zwar ein Inhalt angezeigt aber keine weiteren links zu weiteren Seiten da steht dann nur immer 1 Eintrag
ok, so sollte es gehen....
$temp=sql_fetch_row($result);
$num_rows_per_order = $temp[0];
Danke
so hats nun funktioniert
$temp=sql_fetch_row($count_result,0,0);
$num_rows_per_order = $temp[0];