Varibale $var aus DB lesen

Bash, Shell, PHP, Python, Perl, CGI
kane
Posts: 82
Joined: 2002-10-04 01:22

Varibale $var aus DB lesen

Post by kane » 2004-07-18 14:11

Hi!

Hatte zwar gesucht, aber auf die schnelle nix gefunden :(
Ich möchte folgendes erreichen:

Irgendwo im Header (header.php) lese ich diverse Werte aus einer DB aus. Eine dieser Variablen nennen wir mal $var_link mit dem Wert "4711".
Meine Navigation wird aus einer DB gelesen und dynmaisch aufgebaut. In der Tabelle "navigation" gibt es eine Spalte "link". In dieser steht

Code: Select all

datei.php?nr=$var_link
Wenn ich nun die Spalte "link" auslese, sollte dann da stehen:

Code: Select all

datei.php?nr=4711
.

Leider steht bei mir nur

Code: Select all

datei.php?nr=$var_link
.

Ich hatte mal was gelesen, wie man das lösen kann, aber ich habs einfach nicht mehr gefunden.

Danke für eure Hilfe!

Gruß Kane[/code]

oxygen
RSAC
Posts: 2179
Joined: 2002-12-15 00:10
Location: Bergheim

Re: Varibale $var aus DB lesen

Post by oxygen » 2004-07-18 14:27

sollte ich das richtig verstanden haben, willst du: ${$link}

kane
Posts: 82
Joined: 2002-10-04 01:22

Re: Varibale $var aus DB lesen

Post by kane » 2004-07-18 14:37

hmm, das versteh ich jetzt wieder nicht ... :oops:

myname
Posts: 96
Joined: 2003-10-31 11:12

Re: Varibale $var aus DB lesen

Post by myname » 2004-07-18 14:46

Hast Du die Zeile datei.php?nr=$var_link beim Ausgeben in einfache Anführungszeichen '' gesetzt. Dann wird die Zeile nicht geparst, d.h. php erkennt nicht, dass es sich bei $var_link um eine Variable handelt.

Möglichkeit der Beseitigung:
Entweder du schreibst:

Code: Select all

echo 'datei.php?nr='.$var_link;
oder

Code: Select all

echo "datei.php?nr=$var_link";
(Alternativ kann man natürlich auch print o.a. nehmen)

Bei ${$link} handelt es sich um eine variablen Variablennamen. Die Variable wird so genannt, wie der Wert der Varialben $link lautet.

P.S.: Sorry wegen Doppelpost beim Edit ist was schief gegangen.

kane
Posts: 82
Joined: 2002-10-04 01:22

Re: Varibale $var aus DB lesen

Post by kane » 2004-07-18 14:54

Hi!

Die Ausgabe erfolgt folgendermaßen:

Code: Select all

echo "<a href=../".$str_navugruppe['linkto']."?navid=".$str_navugruppe['id']."".$str_navugruppe['var']." target='".$str_navugruppe['target']."' class=navleft_link>".$str_navugruppe['name']."</a>";
$str_navugruppe['var'] ist die Variable, in der steht (aus der DB gelesen):

kdnr=$int_workdata[int_kdnr]

Die Ausgabe ist aber, trotz der Ã?nderung wie du sie oben beschrieben hast, immer noch "kdnr=$int_workdata[int_kdnr]"

myname
Posts: 96
Joined: 2003-10-31 11:12

Re: Varibale $var aus DB lesen

Post by myname » 2004-07-18 16:01

Poste doch mal die Zeile, in der die Variable zugewiesen wird.

kane
Posts: 82
Joined: 2002-10-04 01:22

Re: Varibale $var aus DB lesen

Post by kane » 2004-07-18 16:10

Abfrage aus DB:

Code: Select all

$str_navugruppe['id'] = mysql_result($resnav, $iugruppe, "id");
$str_navugruppe['name'] = mysql_result($resnav, $iugruppe, "str_navname");
$str_navugruppe['linkto'] = mysql_result($resnav, $iugruppe,"str_linkto");
$str_navugruppe['var'] = mysql_result($resnav, $iugruppe, "variablen");
$str_navugruppe['target'] = mysql_result($resnav, $iugruppe, "target");

# Wenn Variablen vorhanden sind, soll ein & eingefügt werden
if($str_navugruppe['var'] != '') {
$str_navugruppe['var'] = "&".$str_navugruppe['var']; }

echo "<tr>";

echo "
<td height=15 class=navleft>
<img src=../library/images/grafik/img_pfeil.gif align=absmiddle>
<a href=../".$str_navugruppe['linkto']."?navid=".$str_navugruppe['id']."".$str_navugruppe['var']." target='".$str_navugruppe['target']."' class=navleft_link>".$str_navugruppe['name']."</a>
</td>";

echo "</tr>";
Ausgabe ist dann: dateiname.php?navid=1&nr=$str_navugruppe[target]

Es sollte aber kommen: dateiname.php?navid=1&nr=12345

Hoffe das ist jetzt besser :)[/code]

myname
Posts: 96
Joined: 2003-10-31 11:12

Re: Varibale $var aus DB lesen

Post by myname » 2004-07-18 18:26

Also ich habe das mal durch den Parser geschickt:

Code: Select all

<?php
$str_navugruppe['id'] = "1234id";
$str_navugruppe['name'] = "1234name";
$str_navugruppe['linkto'] = "1234linkto";
$str_navugruppe['var'] = "1234var";
$str_navugruppe['target'] = "1234target";

# Wenn Variablen vorhanden sind, soll ein & eingefügt werden
if($str_navugruppe['var'] != '') {
    $str_navugruppe['var'] = "&".$str_navugruppe['var']; }

    echo "<tr>";

    echo "
    <td height=15 class=navleft>
    <img src=../library/images/grafik/img_pfeil.gif align=absmiddle>
    <a href=../".$str_navugruppe['linkto']."?navid=".$str_navugruppe['id']."".$str_navugruppe['var']." target='".$str_navugruppe['target']."' class=navleft_link>".$str_navugruppe['name']."</a>
    </td>";

    echo "</tr>";
?>
Es wird das hier ausgegeben:

Code: Select all

<tr>
        <td height=15 class=navleft>
        <img src=../library/images/grafik/img_pfeil.gif align=absmiddle>
        <a href=../1234linkto?navid=1234id&1234var target='1234target' class=navleft_link>1234name</a>
        </td></tr>
So sollte es doch auch sein oder?

Also fallen mir nur noch diese Möglichkeiten ein:

In der Datenbank steht aus irgendeinem Grund, der Name der Variablen.

Dein PHP hat scheint richtig nicht zu funktionieren.

Entweder Du hast <?php ?> vergessen oder PHP ist gar nicht aktiv und er gibt den gesamten Code aus.

kane
Posts: 82
Joined: 2002-10-04 01:22

Re: Varibale $var aus DB lesen

Post by kane » 2004-07-18 18:36

Danke für deine Antwort...
Vielleicht habe ich mich nicht richtig ausgedrückt :oops:

In der Datenbank steht für die Variable

Code: Select all

$str_navugruppe['var']
die Syntax

Code: Select all

nr=$einevariable
Der Variable $einevariable wird im Header bereits ein wert zugewiesen, der dann erscheinen soll... Das Prob ist ja einfach, das er einen String "nr=$einevariable" aus der DB bekommt... und der Variablen keinen Wert zuweist.

So wie du das gemacht hast, würde bei mir ja auch alles erscheinen...
Last edited by kane on 2004-07-18 18:37, edited 1 time in total.

arty
Userprojekt
Userprojekt
Posts: 761
Joined: 2002-06-12 10:11

Re: Varibale $var aus DB lesen

Post by arty » 2004-07-18 18:36

Kane wrote:

Code: Select all

$str_navugruppe['id'] = mysql_result($resnav, $iugruppe, "id");
$str_navugruppe['name'] = mysql_result($resnav, $iugruppe, "str_navname");
$str_navugruppe['linkto'] = mysql_result($resnav, $iugruppe,"str_linkto");
$str_navugruppe['var'] = mysql_result($resnav, $iugruppe, "variablen");
$str_navugruppe['target'] = mysql_result($resnav, $iugruppe, "target");

# Wenn Variablen vorhanden sind, soll ein & eingefügt werden
if($str_navugruppe['var'] != '') {
$str_navugruppe['var'] = "&".$str_navugruppe['var']; }

echo "<tr>";

echo "
<td height=15 class=navleft>
<img src=../library/images/grafik/img_pfeil.gif align=absmiddle>
<a href=../".$str_navugruppe['linkto']."?navid=".$str_navugruppe['id']."".$str_navugruppe['var']." target='".$str_navugruppe['target']."' class=navleft_link>".$str_navugruppe['name']."</a>
</td>";

echo "</tr>";
Dein Code ist sehr unperformant.

bye
arty

kane
Posts: 82
Joined: 2002-10-04 01:22

Re: Varibale $var aus DB lesen

Post by kane » 2004-07-18 18:38

es geht in diesem Fall nicht um performance, da es nur ein kleines Intranet-Skript ist...

arty
Userprojekt
Userprojekt
Posts: 761
Joined: 2002-06-12 10:11

Re: Varibale $var aus DB lesen

Post by arty » 2004-07-18 19:05

Kane wrote:es geht in diesem Fall nicht um performance, da es nur ein kleines Intranet-Skript ist...
Das ist egal, dein Code ist auch schlecht.

bye
arty

kane
Posts: 82
Joined: 2002-10-04 01:22

Re: Varibale $var aus DB lesen

Post by kane » 2004-07-18 19:12

es geht hier nicht um den code, es geht um meine frage...
ausÃ?erdem, wenn du schon was dran auszusetzen hast ... dann sollten auch verbesserungsvorschläge kommen ....

so daher sagen kann nun wirklich jeder...

arty
Userprojekt
Userprojekt
Posts: 761
Joined: 2002-06-12 10:11

Re: Varibale $var aus DB lesen

Post by arty » 2004-07-18 19:53

Kane wrote:so daher sagen kann nun wirklich jeder...
Das tue ich aber einfach. :)

Wenn Dein Code sauber und HTML und PHP getrennt wäre, würde man den Fehler sicher schnell finden.

bye
arty

kane
Posts: 82
Joined: 2002-10-04 01:22

Re: Varibale $var aus DB lesen

Post by kane » 2004-07-18 19:58

ich möchte doch nur wissen... wie man einen string mit variablen aus der DB verarbeiten kann...
man, egal... vielleicht weiß das ja einer...

arty
Userprojekt
Userprojekt
Posts: 761
Joined: 2002-06-12 10:11

Re: Varibale $var aus DB lesen

Post by arty » 2004-07-18 20:08

Poste doch mal deine komplette DB und den kompletten Code, dann kann man vielleicht sehen, was daran nicht passt.

Aber eigentlich ist das alles hier eh offtopic.

bye
arty

myname
Posts: 96
Joined: 2003-10-31 11:12

Re: Varibale $var aus DB lesen

Post by myname » 2004-07-18 21:25

Achso!!

str_replace ist dein Freund!

Ersetzt doch einfach den Namen der Variable mit dem Wert! Das erscheint mir am unproblematischsten.

kane
Posts: 82
Joined: 2002-10-04 01:22

Re: Varibale $var aus DB lesen

Post by kane » 2004-07-19 09:36

hmm, joa, so sollte es gehen ... danke myname :)
ist zwar nicht ganz so toll (arty würde das jetzt eh auch noch auf meinen code beziehen...), aber damit sollte es gehen. Das dumme ist nur, ich muss für jede Variable die als String in der DB steht (nr=$var) das ganze mit str_replace nutzen...

Vielleicht finde ich ja noch einmal die Beschreibung, wie sowas möglich war :)

Trotzdem danke vorerst!

Gruß

gamecrash
Posts: 339
Joined: 2002-05-27 10:52

Re: Varibale $var aus DB lesen

Post by gamecrash » 2004-07-19 11:49

Also sollte ich das hier jetzt richtig verstanden haben, wäre eval() Dein Freund. Allerdings: eval = evil, also vorher genau nachdenken ;)

marsupilami
Posts: 20
Joined: 2004-01-31 19:13
Location: Böblingen

Re: Varibale $var aus DB lesen

Post by marsupilami » 2004-07-20 17:42

Kane wrote:

Code: Select all

$str_navugruppe['id'] = mysql_result($resnav, $iugruppe, "id");
$str_navugruppe['name'] = mysql_result($resnav, $iugruppe, "str_navname");
$str_navugruppe['linkto'] = mysql_result($resnav, $iugruppe,"str_linkto");
$str_navugruppe['var'] = mysql_result($resnav, $iugruppe, "variablen");
$str_navugruppe['target'] = mysql_result($resnav, $iugruppe, "target");

# Wenn Variablen vorhanden sind, soll ein & eingefügt werden
if($str_navugruppe['var'] != '') {
$str_navugruppe['var'] = "&".$str_navugruppe['var']; }

echo "<tr>";

echo "
<td height=15 class=navleft>
<img src=../library/images/grafik/img_pfeil.gif align=absmiddle>
<a href=../".$str_navugruppe['linkto']."?navid=".$str_navugruppe['id']."".$str_navugruppe['var']." target='".$str_navugruppe['target']."' class=navleft_link>".$str_navugruppe['name']."</a>
</td>";

echo "</tr>";
Versuch mal dashier:

Code: Select all

eval("$str_navugruppe['id'] = "".mysql_result($resnav, $iugruppe, "id")."";");
eval("$str_navugruppe['name'] = "".mysql_result($resnav, $iugruppe, "str_navname")."";");
eval("$str_navugruppe['linkto'] = "".mysql_result($resnav, $iugruppe,"str_linkto")."";");
eval("$str_navugruppe['var'] = "".mysql_result($resnav, $iugruppe, "variablen")."";");
eval("$str_navugruppe['target'] = "".mysql_result($resnav, $iugruppe, "target")."";");

# Wenn Variablen vorhanden sind, soll ein & eingefügt werden
if($str_navugruppe['var'] != '') {
$str_navugruppe['var'] = "&".$str_navugruppe['var']; }

echo "<tr>";

echo "
<td height=15 class=navleft>
<img src=../library/images/grafik/img_pfeil.gif align=absmiddle>
<a href=../".$str_navugruppe['linkto']."?navid=".$str_navugruppe['id']."".$str_navugruppe['var']." target='".$str_navugruppe['target']."' class=navleft_link>".$str_navugruppe['name']."</a>
</td>";

echo "</tr>";
Das sollte eigentlich dein Problem lösen. :)


Und arty, wahnsinn was du für ein Großmaul bist. Schonmal daran gedacht das du auch mal so angefangen hast? Und nein du bist nicht Gott oder ähnliches. Anstatt sachlich zu bleiben wird gleichmal wieder das Maul aufgerissen. Solche Leute wie dich pissen einen einfach nur an!

Hoffe ich konnte dir helfen @ Kane[/code]

arty
Userprojekt
Userprojekt
Posts: 761
Joined: 2002-06-12 10:11

Re: Varibale $var aus DB lesen

Post by arty » 2004-07-20 18:14

MaRsuPiLaMi wrote:Und arty, wahnsinn was du für ein Großmaul bist. Schonmal daran gedacht das du auch mal so angefangen hast? Und nein du bist nicht Gott oder ähnliches. Anstatt sachlich zu bleiben wird gleichmal wieder das Maul aufgerissen. Solche Leute wie dich pissen einen einfach nur an!
*PLONK*

Im Gegensatz zu dir war ich sachlich.

arty