Alte Module Anpasssen

Begonnen von pikar, 02 August 2016, 09:02:44

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

pikar

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?

Olaf

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 !!!
g

Olaf

Kein Support über PN, Mail etc.!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!

pikar

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?


Olaf

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.
g

Olaf

Kein Support über PN, Mail etc.!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!

pikar

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

Olaf

ok, so sollte es gehen....

$temp=sql_fetch_row($result);
$num_rows_per_order = $temp[0];
g

Olaf

Kein Support über PN, Mail etc.!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!

pikar

Danke

so hats nun funktioniert

$temp=sql_fetch_row($count_result,0,0);
$num_rows_per_order = $temp[0];