Funktion für Anzahl der Einträge

hab1cht

Erfahrenes Mitglied
Hi,
ich habe auf meiner Seite ein paar Kategorien, jetzt möchte ich, dass hinter jeder Kategorie die Anzahl der Einträge steht und das versuche ich mit einer Funktion zu machen.
PHP:
<?php
include("../category_config.inc.php");
$field ="1";

$db = @mysql_pconnect($host, $user, $pass) or die ("Verbindung mit MySQL-Server fehlgechlagen!");
@mysql_select_db($database, $db) or die ("Verbindung zur Datenbank fehlgeschlagen!");
$sql = "SELECT * FROM $ptable WHERE categoryid LIKE $field";
$result = mysql_query($sql);
$number = mysql_num_rows($result);
echo $number;

?>

So funktioniert das, allerdings ist das ziemlich lästig, diesen Code mehrmals zu schreiben, wenn ich jetzt daraus eine Funktion mache:
PHP:
<?php
include("../category_config.inc.php");

function anzahl($field){
$db = @mysql_pconnect($host, $user, $pass) or die ("Verbindung mit MySQL-Server fehlgechlagen!");
@mysql_select_db($database, $db) or die ("Verbindung zur Datenbank fehlgeschlagen!");
$sql = "SELECT * FROM $ptable WHERE categoryid LIKE $field";
$result = mysql_query($sql);
$number = mysql_num_rows($result);
echo $number;
}
echo anzahl(1);
?>

Und jetzt kommt: "Verbindung mit MySQL-Server fehlgechlagen!"

Woran liegt das?
Vielen Dank für eure Hilfe im Voraus.

mfg hab1cht
 
Kommt die Fehlermeldung jedes Mal oder erst ab dem 2. Aufruf?
Wenn letzteres der Fall ist wuerde ich sagen, dass es daran liegt, dass die Verbindung nicht wieder geschlossen wird.
Ansonsten kannst Du Deine selbstgeschusterte Fehlermeldung ja auch mal durch mysql_error() ersetzten um zu sehen welchen Fehler Dir MySQL meldet.
 
Einfacher wäre es doch 2 Fnktionen zu nehmen. Eine die die MySQL Verbindung herstellt uns eine zweite , die nur dazu da ist querys aufzunehmen und die Ergebnisse als Array oder ähnliches wieder zu geben.

Des weiteren wäre es gut zu wissen als was die Daten in der Config Datei gespeichert wurden. Als normale Variablen oder Konstanten. Wenn ersteres der Fall ist dann musst du diese Variablen noch auf global setzen innerhalb der Funktion , sonst weiss die Funktion nicht welchen Wert Pass , User und Host haben.
 
Zuletzt bearbeitet:
PHP:
$db = @mysql_pconnect($host, $user, $pass) or die(mysql_error());
das macht man ja so oder?

Dann kommt: "Access denied for user 'ODBC'@'localhost' (using password: NO)"
(ich mach das ganze mit xampp)

Und das ist ja komisch, warum sollte ich bei der Funktion keinen Zugriff haben, aber wenn ich es ohne Funktion mache geht es. *komisch*

Funktioniert von Anfang an nicht, nicht erst beim 2. mal.
 
@FipsTheThief:
wie setze ich diese Variablen auf global?
(glaube es sind nur Variablen ($pass="passwort" steht momentan in der config))

mfg hab1cht
 
Die Funktion hat keinen Zugriff auf die Variablen mit den Userdaten.
Diese sind zwar im Script verfuegbar aber nicht innerhalb von Funktionen.
 
hab1cht hat gesagt.:
PHP:
$db = @mysql_pconnect($host, $user, $pass) or die(mysql_error());
das macht man ja so oder?

Dann kommt: "Access denied for user 'ODBC'@'localhost' (using password: NO)"
(ich mach das ganze mit xampp)

Und das ist ja komisch, warum sollte ich bei der Funktion keinen Zugriff haben, aber wenn ich es ohne Funktion mache geht es. *komisch*

Funktioniert von Anfang an nicht, nicht erst beim 2. mal.

Ganz einfach alles was innerhalb des Funktionskörper ist geht extra.

Probiere doch mal aus Spass

PHP:
 $x = "hallo welt";
 DEFINE(Y , "Hallo Welt");
 
 function gib_aus(){
    echo $x."<br>";
    echo Y."<br>";
    global $x; // x auf global setzen und für den funktionskörper verfügbar machen
    echo $x."<br>";
    echo Y."<br>";
 }
 
 
 gib_aus();
 
Vielen Dank,
habs jetzt verstanden und funktioniert alles, lag daran, dass es nur Variablen waren.

mfg hab1cht
 
Zurück