function erweitern
Andreas
- php
0 Jens Nistler0 Vinzenz0 Andreas
Hallo,
habe durch Eure Hilfe schon eine funktionierende function gebastelt.
function kalkvorgang($sid)
{
$kalkulationsdaten=mysql_query("SELECT * from calc_vorgang WHERE
sid='$sid'");
$kalk_vorgang=mysql_fetch_array($kalkulationsdaten);
return $kalk_vorgang;
}
$berechnung = kalkvorgang($sid);
echo $berechnung["von"];
klappt alles
So jetzt eine Neue Frage:
kann ich zu der oberen function, einen weiteren Select einbauen,
der abhängig ist vom ersten:
So könnte ich mir das vorstellen.
function kalkvorgang($sid)
{
//-- 1. SELECT --
$kalkulationsdaten=mysql_query("SELECT * from calc_vorgang WHERE
sid='$sid'");
$kalk_vorgang=mysql_fetch_array($kalkulationsdaten);
// aus dem Select die Variable $kalk_vorgang["von"] übergeben für den
nächsten SELECT
//-- 2. SELECT --
$set_von_medium = mysql_query("select vonmedium from calc_von_medien where
vid = '$kalk_vorgang["von"]");
$kalk_con=mysql_fetch_array($set_von_medium);
//-- war ja für den ersten Vorgang --
return $kalk_vorgang;
}
Wie kann ich denn jetzt die Werte vom 1 SELECT und 2 SELECT übergeben
für den ersten war mal
$berechnung = kalkvorgang($sid);
echo $berechnung["von"];
Danke
Andreas
wieso schreibst du keine zweite funktion, der du beim aufruf den string uebergibst nach dem gefilter werden soll ...
waere uebersichtlicher und besser wiederzuverwenden ...
gruss jens
Hallo Andreas,
Hallo,
habe durch Eure Hilfe schon eine funktionierende function gebastelt.
prima
So jetzt eine Neue Frage:
function kalkvorgang($sid)
{
//-- 1. SELECT --
$kalkulationsdaten=mysql_query("SELECT * from calc_vorgang WHERE
sid='$sid'");
$kalk_vorgang=mysql_fetch_array($kalkulationsdaten);
// aus dem Select die Variable $kalk_vorgang["von"] übergeben für den
nächsten SELECT
//-- 2. SELECT --
$set_von_medium = mysql_query("select vonmedium from calc_von_medien where
vid = '$kalk_vorgang["von"]");
$kalk_con=mysql_fetch_array($set_von_medium);
//-- war ja für den ersten Vorgang --
return $kalk_vorgang;
Wenn ich's richtig verstanden habe, bist Du also in Wirklichkeit nur an den Daten aus der Tabelle calc_from_medien interessiert mit bestimmter vid, die von der sid in Tabelle calc_vorgang abhängt, interessiert.
Möglicherweise willst Du das:
SELECT vonmedium
FROM calc_von_medien
INNER JOIN calc_vorgang
ON calc_von_medien.vid = calc_vorgang.vid
WHERE sid = '$sid';
Und dann brauchst Du nur eine Abfrage und keine Werte zu übergeben
Hth,
Vinzenz
Hallo,
Wenn ich's richtig verstanden habe, bist Du also in Wirklichkeit nur an den Daten aus der Tabelle calc_from_medien interessiert mit bestimmter vid, die von der sid in Tabelle calc_vorgang abhängt, interessiert.
Nee, ich brauch von beiden die Werte.
ich wollte alles in einer Function unterbringen da ich noch mehr SELECT habe.
Dies dient für eine Berechnung.
Einmal brauche ich die Einzel Werte von dem ersten SELECT dann brauche ich die Werte von den weiteren SELECT
Hallo Andreas,
Nee, ich brauch von beiden die Werte.
Deine Funktion soll also zwei Arrays zurückgeben?
ich wollte alles in einer Function unterbringen da ich noch mehr SELECT habe.
Warum schreibst Du nicht für jede einzelne Aufgabe eine eigene Funktion? Es ist gar nicht schlecht, viele davon zu haben, die genau eine Aufgabe haben und die richtig machen.
Einmal brauche ich die Einzel Werte von dem ersten SELECT dann brauche ich die Werte von den weiteren SELECT
Wenn Du aber unbedingt zwei Arrays zurückgeben willst, dann solltest Du mindestens ein Array per Referenz übergeben:
function kalkvorgang($sid, &$kalk_con)
Der zweite Funktionsparameter ist eine Referenz. Änderungen innerhalb der Funktion gehen also nicht verloren, wenn die Funktion beendet wird.
Gruss,
Vinzenz
Moin!
Hallo,
Wenn ich's richtig verstanden habe, bist Du also in Wirklichkeit nur an den Daten aus der Tabelle calc_from_medien interessiert mit bestimmter vid, die von der sid in Tabelle calc_vorgang abhängt, interessiert.
Nee, ich brauch von beiden die Werte.
ich wollte alles in einer Function unterbringen da ich noch mehr SELECT habe.
Dies dient für eine Berechnung.
Einmal brauche ich die Einzel Werte von dem ersten SELECT dann brauche ich die Werte von den weiteren SELECT
Du kannst nur eine Variable aus einer Funktion zurückgeben. Diese Variable kann aber bei Bedarf ein Array sein, welches die von dir festgestellten Werte enthält:
function test ()
{
// Rückgabewert zusammensetzen:
$rueckgabe['wert1']=1;
$rueckgabe['stringwert']='Ich bin ein String';
// Wertarray zurückgeben (hier als Hash)
return $rueckgabe;
}
$werte = test();
echo $werte['wert1'];
echo $werte['stringwert'];
Siehe dazu: http://www.php.net/manual/de/functions.returning-values.php
Wahlweise kannst du der Funktion auch Variablen übergeben, in die die Funktion einen Wert ablegt und zurückgibt:
function test2 (&$rueck1);
{
// Der übergebenen Variable einen Rückgabewert zuweisen
$rueck1 = 'Rückgabewert';
// Den Rückgabewert für return zuweisen:
$returnwert = 'andere Rückgabe';
// Returnrückgabewert zurückgeben
return $returnwert;
}
$funktionswert = test2($variable);
echo $funktionswert; // Durch return zurückgegeben
echo $variable; // der angegebenen Variable zurückgegeben
Es ist zwingend erforderlich, dass du im Bespiel eine Variable übergibst. Ein konstanter Wert ist verboten und führt zu einem Fehler.
Siehe dazu: http://www.php.net/manual/de/functions.arguments.php -> "Verweise als Parameter übergeben".
Bei den zwei Beispielen sind Parameter, die der Funktion ggf. übergeben werden sollen, weggelassen.
- Sven Rautenberg