pragmaMx Support Forum

pragmaMx => Zusatzmodule => Thema gestartet von: pikar am 02 August 2016, 09:02:44

Titel: Alte Module Anpasssen
Beitrag von: pikar am 02 August 2016, 09:02:44
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?
Titel: Re:Alte Module Anpasssen
Beitrag von: Olaf am 02 August 2016, 09:08:41
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 !!!
Titel: Re:Alte Module Anpasssen
Beitrag von: pikar am 02 August 2016, 09:59:34
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?

Titel: Re:Alte Module Anpasssen
Beitrag von: Olaf am 02 August 2016, 10:46:47
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.
Titel: Re:Alte Module Anpasssen
Beitrag von: pikar am 02 August 2016, 11:40:36
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
Titel: Re:Alte Module Anpasssen
Beitrag von: Olaf am 02 August 2016, 11:49:23
ok, so sollte es gehen....

$temp=sql_fetch_row($result);
$num_rows_per_order = $temp[0];
Titel: Re:Alte Module Anpasssen
Beitrag von: pikar am 02 August 2016, 11:56:21
Danke

so hats nun funktioniert

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