webForumDet fria alternativet

Scope, Objekt, funktioner

8 svar · 260 visningar · startad av K++

K++Medlem sedan juli 2002183 inlägg
#1

Har lite problem med scopet mellan funktionerna. Hur fixar jag detta?

<?php

class dl{

	function anslut($host,$name,$pwd){
		$link = mysql_connect($host,$name,$pwd);
	}

	function select($db){
		mysql_select_db($db,$link) or die("Kunde ej v&#65533;lja databasen $db");
	}

	function query($table,$condition,$sort){	
		$query = "SELECT * FROM $table";
		if($condition != "")
		$query .= " WHERE $condition";
		if($sort != "")
		$query .= " ORDER BY $sort";
		return mysql_query($query,$link);
	}

}

$dl = new dl();
$dl->anslut("localhost","mysql","mysql");
$dl->select("test");
$result = $dl->query("test","","online DESC");

echo "<table>\n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
   echo "\t<tr>\n";
   foreach ($line as $col_value) {
       echo "\t\t<td>$col_value</td>\n";
   }
   echo "\t</tr>\n";
}
echo "</table>\n";

?>
MatteMedlem sedan aug. 20002 970 inlägg
#2

Testa så här:

class dl{

    var $link;

    function anslut($host, $name, $pwd){
        $this->link = mysql_connect($host, $name, $pwd);
    }

    function select($db){
        mysql_select_db($db, $this->link) or die("Kunde ej v&#65533;lja databasen $db");
    }

    function query($table, $condition, $sort){    
        $query = "SELECT * FROM $table";
        if($condition != "")
        $query .= " WHERE $condition";
        if($sort != "")
        $query .= " ORDER BY $sort";
        return mysql_query($query, $this->link);
    }

}
K++Medlem sedan juli 2002183 inlägg
#3

tack, det fungerae, men en fråga till:'
Får fram detta då
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /srv/www/htdocs/simple/dl.php on line 35

MatteMedlem sedan aug. 20002 970 inlägg
#4

Endast för felsökning, ändra till:

return mysql_query($query, $this->link) or die("SQL: $query <br>".mysql_error());

Vad får du ut på skärmen ?

Ett tips.
Använd mysql_fetch_assoc($result) istället för mysql_fetch_array($result, MYSQL_ASSOC).
Du får fram samma sak, men det går snabbare.

K++Medlem sedan juli 2002183 inlägg
#5

Fick detta felmedelandet:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /srv/www/htdocs/simple/da.php on line 33
"; ?>?>le>\n"; ?>>

Med denna kod

<?php
class dl{

    var $link;

    function anslut($host, $name, $pwd){
        $this->link = mysql_connect($host, $name, $pwd);
    }

    function select($db){
        mysql_select_db($db, $this->link) or die("Kunde ej v&#65533;lja databasen $db");
    }

    function query($table, $condition, $sort){    
        $query = "SELECT * FROM $table";
        if($condition != "")
        $query .= " WHERE $condition";
        if($sort != "")
        $query .= " ORDER BY $sort";
       return mysql_query($query, $this->link) or die("SQL: $query <br>".mysql_error());
    }
}

$dl = new dl();
$dl->anslut("localhost","mysql","mysql");
$dl->select("abc");
$result = $dl->query("film","","");

echo "<table>\n";
while ($line = mysql_fetch_assoc($result)) {
   echo "\t<tr>\n";
   foreach ($line as $col_value) {
       echo "\t\t<td>$col_value</td>\n";
   }
   echo "\t</tr>\n";
}
echo "</table>\n";

?>
MatteMedlem sedan aug. 20002 970 inlägg
#6

Testa då istället med:

$result = mysql_query($query, $this->link) or die("SQL: $query <br>".mysql_error());
return $result;
K++Medlem sedan juli 2002183 inlägg
#7

Nu fungerade det, även om jag inte tycker att det borde göra det.. :)

MatteMedlem sedan aug. 20002 970 inlägg
#8

Den koden var för felsökning.

Fick du inte fram några felmeddelanden, och allt fungerade, så borde det också fungera med:

return mysql_query($query, $this->link);

Det gör det i vilket fall när jag testar.

jmeMedlem sedan maj 20011 967 inlägg
#9

du får nog det fel för att ett fel händer vid queryn och då sätts $result till false och det är inte en giltig parameter till myslq_fetch_assoc(). Tog mig ett tag att hitta det fel som jag själv hade.

Är van med Java och att metoderna returnerar antingen en sorts typ eller null och inte vad som helst som man kan göra med php. :)

Genererad på 377 ms · cache AV · v20260730165559-full.f96bc7eb