PHP Script Übergabe Problem

Alles, was PHP betrifft, kann hier besprochen werden.

PHP Script Übergabe Problem

Postby ds80 » 20. July 2011 18:42

Hallo,

ich habe ein kleines Problem mit dem unteren Schnippseln. Bis dato hatte ich es in zwei Dateien mit Include, aber ich will das alles in einer haben und das Problem das $name nicht an $info weitergegeben wird. Setze ich $info am Ende der Seite, also unter "test", "test1",..., dann wird es gar nicht angezeigt. Was kann ich am Besten machen das $name auch im $info angezeigt wird?

------------------------------------

<?php
$hwn = $_GET["le"];
{$info="
<br />2:$hwn
<br />3:$name
";}


if ($_GET["le"]=="test") {
$name="Test";
echo "1: $name<br />$info";}
else {echo "";}
?>


if ($_GET["le"]=="test1") {
$name="Test1";
echo "1: $name<br />$info";}
else {echo "";}
?>


-------
Ausgabe ist:

Code: Select all
1: Test

2:test
3:


Ausgabe soll:

Code: Select all
1: Test

2:test
3:Test
ds80
 
Posts: 16
Joined: 06. April 2008 17:30

Re: PHP Script Übergabe Problem

Postby Altrea » 20. July 2011 19:37

Ich habe kaum ein Wort davon verstanden, was du vorhast.
Ich vermute aber mal, dass du ein Problem mit dem Verständnis von Zuweisungen bei PHP hast.

Weist du einer Variablen den Wert einer anderen Variablen zu (oder einen Teil davon wie in deinem Beispiel), so wird nicht die Referenz der Variablen übergeben, sondern ihr derzeitiger Wert. Sie wird quasi kopiert.
Änderst du später den Ursprünglichen Wert der Variablen, die du vorher übergeben hast, ändert sich der Wert natürlich nur in der Ursprungsvariablen, nicht in den Zuweisungen.

Dein Beispiel ist aber im höchsten Maße unüblich, sowohl was die Syntax betrifft als auch die Zuweisung von Variablen innerhalb des Strings, obwohl du später auf die Variablen noch einwirken willst.
Es gibt sicher deutlich logischere Wege dies zu lösen, doch ohne zu wissen was wieso gerade so gelöst ist, kann man dazu nichts näheres sagen.
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 11935
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 11 Pro x64

Re: PHP Script Übergabe Problem

Postby ds80 » 21. July 2011 09:57

Doch so schlecht ausgedrückt? Ich habe eben ein einfaches Script, der einfach halber (Quote) [1] und [2] nenne. Von [2] werden nachfolgend mehrere folgen test1, test2,... . Bis dato war das alles kein Problem. Vereinzelnd muss aber [1] mit eingefügt werden über ($info), was an sich auch funktioniert. Nun brauch ich aber den Namen ($name) von [2] auch in [1] übergeben und das will nicht funktionieren. Das Script hier ist auf das nötigste gekürzt worden, um die Sache nicht zu verkomplizieren.

http://www.url.de/index.php?id=test&le=test

1 wrote:<?php
$hwn = $_GET["le"];
{$info="
<br />2:$hwn
<br />3:$name
";}


2 wrote:if ($_GET["le"]=="test") {
$name="Test";
echo "1:$name<br />$info";}
else {echo "";}
?>


Ich möchte als Ausgabe also

1:Test
2:test
3:Test

haben, aber mit dem oberen Script kommt nur

1:Test
2:test
3:
ds80
 
Posts: 16
Joined: 06. April 2008 17:30

Re: PHP Script Übergabe Problem

Postby Nobbie » 21. July 2011 17:08

ds80 wrote:Das Script hier ist auf das nötigste gekürzt worden, um die Sache nicht zu verkomplizieren.


Zusammen mit der sehr ungenügenden Erklärung ist das aber nicht nachvollziehbar. Wie hängen Script11 und Script2 zusammen? Wir sehen hier nur zwei Codeschnipsel, da ist nicht zu erkennen, ob ein Script das andere irgendwie inkludiert oder was auch immer.
Nobbie
 
Posts: 13182
Joined: 09. March 2008 13:04

Re: PHP Script Übergabe Problem

Postby ds80 » 21. July 2011 18:49

Also Versuch Nummer 3.

Das ist der Code:
Code: Select all
<a href="index.php?id=test&amp;le=test1">Test (1)</a><br />
<a href="index.php?id=test&amp;le=test2">Test (2)</a><br />
<br /><br />

<?php
$hwn = $_GET["le"];
{$info="
   2: $hwn<br />
   3: $name
";}

if ($_GET["le"]=="test1") {
   $name="Testseite 1";
   echo "1: $name<br />$info";}
   else {echo "";}

if ($_GET["le"]=="test2") {
   $name="Testseite 2";
   echo "1: $name<br />$info";}
   else {echo "";}
?>


Ergebnis ist beim oberen Link:
1: Testseite 1
2: test1
3:

Ergebnis ist beim unteren Link:
1: Testseite 2
2: test2
3:


Haben muss ich aber:
1: Testseite 1
2: test1
3: Testseite 1

und
1: Testseite 2
2: test2
3: Testseite 2


Was muss ich dafür im Script oben ändern? Der obere Code ist so komplett und würde nur erweitert werden um weitere test3, test4, usw. erweitert werden. Eingebaut in die Hauptseite ist es per einfachen include-Script.
Code: Select all
<?php include($_GET['id'].'.php'); ?>
ds80
 
Posts: 16
Joined: 06. April 2008 17:30

Re: PHP Script Übergabe Problem

Postby Altrea » 21. July 2011 19:30

Ich kann mich lediglich wiederholen.

Zum Zeitpunkt der Zuweisung von $name zu $info existiert $name nochnicht.
Dies ändert sich erst in deinen if-Abfragen, hat dort aber keine Auswirkungen mehr auf $info.

Und nochmals: Deine Syntax ist sehr sehr unüblich.
Wenn du uns erklären würdest, was du vorhast, könnte man einen saubereren Weg zusammen finden.
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 11935
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 11 Pro x64

Re: PHP Script Übergabe Problem

Postby ds80 » 22. July 2011 07:47

Ich habe echt keinen Bock mehr es x-mal zu erklären, um denn nur zu hören das es "unüblich" ist. Die PHP-Datei ist über 3000 Zeilen lang und über 300KB groß und das einzige was ich möchte ist eine Übergabe $name in $info. Da werde ich bestimmt nicht anfangen die Datei komplett umzukrempeln, weil es "unüblich" ist.

Also nochmal die Frage, gibt es für den oberen Quellcode eine einfache Lösung dafür?
ds80
 
Posts: 16
Joined: 06. April 2008 17:30

Re: PHP Script Übergabe Problem

Postby Altrea » 22. July 2011 08:53

ds80 wrote:Ich habe echt keinen Bock mehr es x-mal zu erklären

Ich habe auch auf so vieles keinen Bock, zum Beispiel solche Antworten zu bekommen, obwohl man nur helfen möchte.
Du hast es bisher nicht x-mal erklärt, sondern nicht ein einziges mal vernünftig. Ich habe keinen blassen Schimmer, wofür diese drei Werte überhaupt da sein sollen, was deren Zweck ist und wieso sie in einen String gepackt werden statt zum Beispiel in einem Array. Mag alles seinen Grund haben, doch ohne diese zu kennen ist es fast unmöglich dich auf den richtigen Weg zu bringen, denn davon gibt es mehrere.

Dir einen optimierten Weg aufzuzeigen war auch nur eine Nettigkeit von mir. In fast allen anderen PHP Foren hätte man dir deine Erklärung komplett um die Ohren gehauen, dich auf irgendwelche Tutorials zu PHP Grundlagen verwiesen oder zumindest auf einen Hinweis, wie denn eine qualifizierte Fehlerbeschreibung auszusehen hat. Und selbst dann hättest du höchstens Hilfe zur Selbsthilfe erhalten und dir deinen Weg selbst erarbeiten müssen. Also den Ball schön flach halten, mein Freundchen.

ds80 wrote:Also nochmal die Frage, gibt es für den oberen Quellcode eine einfache Lösung dafür?

Ja! Einen Hinweis hast du bereits in meinem letzten Beitrag erhalten (und etwas Mitdenken wird man von jemandem erwarten können, der eine 3000 Zeilen lange php Datei schreiben kann):
Altrea wrote:Zum Zeitpunkt der Zuweisung von $name zu $info existiert $name nochnicht.


Soll ich es dir aufmalen, damit du es besser verstehst :?: Bitteschön, mal etwas bildlicher anhand deines Quelltextes:

Code: Select all
<a href="index.php?id=test&amp;le=test1">Test (1)</a><br />
<a href="index.php?id=test&amp;le=test2">Test (2)</a><br />
<br /><br />

<?php
$hwn = $_GET["le"];

//HIER IST DIE ZUWEISUNG
{$info="
   2: $hwn<br />
   3: $name
";}
//AB HIER HABEN ÄNDERUNGEN AN $hwn oder $name KEINE AUSWIRKUNG MEHR AUF DIE BEREITS ZUGEWIESENEN WERTE AN $info

if ($_GET["le"]=="test1") {
   $name="Testseite 1";
   echo "1: $name<br />$info";}
   else {echo "";}

if ($_GET["le"]=="test2") {
   $name="Testseite 2";
   echo "1: $name<br />$info";}
   else {echo "";}
?>


EIne Lösung wäre zum Beispiel diese
Code: Select all
<a href="index.php?id=test&amp;le=test1">Test (1)</a><br />
<a href="index.php?id=test&amp;le=test2">Test (2)</a><br />
<br /><br />

<?php
$le = isset($_GET['le']) ? $_GET['le'] : '';

$info = '';
switch( $le ) {
    case 'test1':
        $name = 'Testseite 1';
        $info .= '1: ' .$name. '<br />';
        break;
    case 'test2':
        $name = 'Testseite 2';
        $info .= '1: ' .$name. '<br />';
    // case 'test3', 'test4', ...
    default :
        // irgendein Verhalten, falls $_GET['le'] nicht übergeben wurde
        break;
}
$info .= '2: ' .$le. '<br />';
$info .= '3: ' .$name. '<br />';

echo $info;
?>


Aber wer weiß das schon, mit den unzureichenden Informationen, die du bisher von dir gegeben hat.
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 11935
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 11 Pro x64

Re: PHP Script Übergabe Problem

Postby Nobbie » 23. July 2011 10:39

ds80 wrote:Also nochmal die Frage, gibt es für den oberen Quellcode eine einfache Lösung dafür?


Kauf Dir ein PHP Buch und lerne programmieren. Ich habe auch keinen Bock mehr, uneinsichtigen Anfängern ihre Fehler aufzuzeigen.
Nobbie
 
Posts: 13182
Joined: 09. March 2008 13:04

Re: PHP Script Übergabe Problem

Postby Pitze » 06. August 2011 16:22

Man kinnas welch ein Kinderkramm
Setz die Zuweisung in die if-Abfragen fertig ob nun unüblich oder nicht $name ist bei der Übergabe an $info noch leer, @Altrea hats doch erklärt
Der grösste Vertrauensbruch ist der Blitzableiter auf der Kirchturmspitze
User avatar
Pitze
 
Posts: 210
Joined: 20. November 2003 21:38
Location: Huskvarna-Schweden
Operating System: Windows Vista


Return to PHP

Who is online

Users browsing this forum: No registered users and 8 guests