variable Übergabe funtioniert nicht
averoxus
- php
Hallo alle zusammen,
folgendes Problem:
function count_members ($all_counted_members) {
$query = mysql_query("SELECT id
FROM members
");
$all_counted_members = mysql_num_rows($query);
}
Diese Funktion soll aus der Datenbank members herauslesen wie viele Zeilen es gibt.
Jetzt führe ich die Funtkion aus:
count_members ($all_counted_members);
echo $all_counted_members;
Aber es kommt kein Ergebnis.
Wo liegt da das Problem (zur Datenbank habe ich schon connected).
mfG
averoxus
P.S.: Vielen Dank für die Hilfe!
echo $begrüßung;
function count_members ($all_counted_members) {
$query = mysql_query("SELECTid
FROMmembers
");
$all_counted_members = mysql_num_rows($query);
}
Idealerweise sind Funktionen so aufgebaut, dass sie Parameter entgegennehmen, etwas berechnen und ein Ergebnis zurückliefern.
Du versuchst, das Ergebnis über einen Parameter zu erhalten. So wie die Funktion jetzt aussieht, braucht sie keine Parameter, will aber ein Ergebnis zurückliefern. Streiche also den Parameter und gib das Ergebnis über return zurück.
Weiterhin ist es zum Zählen der Datensätze sinnvoller, die Funktion COUNT(*) der Datenbank zu verwenden. Du hingegen lässt alle Ergebnisse ermitteln, zu PHP übertragen (passiert automatisch im Hintergrund) und wirfst nach einem Durchzählen die übertragenen Daten wieder weg. Bei einer kleinen Datenmenge fällt das nicht weiter auf, aber bei einem größeren Datenbestand ist das eine sinnlose Verschwendung von Ressourcen.
echo "$verabschiedung $name";
Vielen, vielen Dank an alle.
Jetzt funktioniert es mit count und return :-)!
Die Tutorials werd ich mir gleich durchlesen.
Also nochmal vielen Dank :D!
mfG
averoxus
Hallo,
Wo liegt da das Problem (zur Datenbank habe ich schon connected).
Dir fehlen ein paar Grundlagen, würde ich sagen ... abre das lässt sich nachholen.
Ok, ein paar Gedankenanstöße:
[1] http://de3.php.net/manual/de/function.error-reporting.php
[2] http://de3.php.net/manual/de/language.functions.php
[3] http://de3.php.net/manual/de/functions.returning-values.php
[4] http://de3.php.net/manual/de/language.references.php
[5] http://php-faq.de/ch/ch-databases.html
[6] Die Doku findest du jetzt bestimmt selber, oder?
Lieber averoxus,
Du hast das Prinzip der Werteübergabe zwischen Funktionen noch nicht ganz verstanden, schätze ich.
function count_members ($all_counted_members) {
$query = mysql_query("SELECTid
FROMmembers
");
$all_counted_members = mysql_num_rows($query);
}
Diese Funktion bekommt einen Wert in einer Variablen $all_counted_members übermittelt... und tut damit absolut nichts. Der eventuell übermittelte Wert wird in der zweiten Anweisung mit etwas Neuem überschrieben! Zurück gibt die Funktion übrigens nichts (oder siehst Du da ein "return $irgendwas"?).
Diese Funktion soll aus der Datenbank members herauslesen wie viele Zeilen es gibt.
Das tut sie ja...
Jetzt führe ich die Funtkion aus:
count_members ($all_counted_members);
Das ist richtig. Du lässt die Funktion genau das tun, was sie soll. Na und? Fängst Du damit irgendetwas an? Ach, und wo kommt die Variable $all_counted_members her? Hast Du diese vorher im Verlauf Deines Scripts definiert? Dieses $all_counted_members im Funktionsaufruf ist eine völlig andere Variable, als die gleichnamige Variable innerhalb Deiner Funktion!
echo $all_counted_members;
Tja, hier wird das ausgegeben, was auch schon vorher in der Variablen $all_counted_members drinne stand... nämlich nix.
Wo liegt da das Problem (zur Datenbank habe ich schon connected).
Du möchtest, dass Deine Funktion einen Wert zurück gibt!
function count_members () {
/* Diese Funktion benötigt keine übergebenen Werte, da ja alles schon
in der folgenden Zeile fest eingetragen ist: */
$query = mysql_query("SELECT `id` FROM `members`");
$all_counted_members = mysql_num_rows($query);
// Hier gibst Du das Ergebnis an den Funktionsaufruf zurück!!
return $all_counted_members;
}
So. Und nun holen wir uns über unsere Funktion den Wert:
$all_counted_members = count_members(); // Wert holen und in Variable speichern
echo $all_counted_members; // und ausgeben.
Liebe Grüße aus Ellwangen,
Felix Riesterer.