Sie befinden sich hier im Forenarchiv von phpforum.de wenn Sie direkt ins Forum möchten, klicken Sie bitte hier. Zur Startseite kommen Sie hier.

Hilfe! Es geht um Include. Variablenübergabe

hallo,

Die Variable $pot wird beim klicken des Checkboxfeldes jeweils auf 1 für geklickt und 0 für nicht geklickt gesetzt. PROBLEM : die include datei jackpot.inc nimmt die Variablen nicht wirklich auf.
Wenn man in die includete datei <?php echo"pot" ?> eintragen würde könnte man das gut sehen das die werte durch das betätigen des häckchens gesetzt werden. Nun das HAUPTPROBLEM:
das spiel includet genau die selbe jackpot.inc. Die Variable $pot ist aber nicht in der includeten datei jackpot.inc zu finden.

Fragen:
Wie schaffe ich das nun die $pot variablen in die jackpot.inc zu setzen

hier die quellcodes zum verdeutlichen:

• jackpot.inc

<?php
?>

• jackpot.php

<script type="text/javascript">
function setzen(obj){

if(obj.checked==true){
location.href="jackpot1.php";
alert("ich bin an!!!")
}
else {}
}
</script>
<?php
$pot=0;
include('jackpot.inc');
?>
<body onLoad='' bgcolor='#A5FF99'>
<table width='175' height='80'><tr><td align='center'><input type='checkbox' name='box[]' onclick='setzen(this)' value='on'></td></tr></table>
</body>

• jackpot1.php

<script type="text/javascript">

function setzen1(obj){
if(obj.checked==true){}
else {
location.href="jackpot.php";
alert("ich bin aus!!!")
}
}
</script>
<?php
$pot=1;
include('jackpot.inc');
?>
<body bgcolor='#A5FF99'><table width='175' height='80'><tr><td align='center'><input type='checkbox' name='box[]' onclick='setzen1(this)' value='on' checked='1'></td></tr></table></body>


zum testen eine 4. datei (soll das spiel darstellen) muss in anderem frame sein

• test.php

<?php
include(jackpot.inc);
echo"pot";
?>


Nun sollte ja die variable pot gesetzt sein, was aber nicht der fall ist....vieleicht könnt ihr mir ja weiter helfen...

wenn mein server läuft hier noch mal schauen:

http://projektserver.homeip.net/klammgame/index.htm

danke...
gruß
enrico

Hier gehts zum Orginal Eintrag "Hilfe! Es geht um Include. Variablenübergabe" im Forum

Antworten

Hallo enrico,

ohje.... Da hast Du aber etwas ziemlich krass Mißverstanden :( ;)

Wenn Du so

haupt.php
<?php
$pot = 1;
include 'jackpot.inc';
?>

eine Variable deklarierst, ist diese zwar innerhalb des Scripts "haupt.php" für die "jackpot.inc" sichtbar, denn das Coding aus der "jackpot.inc" wird zu einem Teil des Codings der "´haupt.php", aber doch nicht in einem ganz anderen Script, welches nicht auf die Haupt.php zurückgreift. Durch das Includen der jackpot.inc wird die haupt.php nicht automatisch zu einem Teil der jackpot.inc, sondern umgekehrt.

Um den Wert von der einen Seite auf die andere Seite durchzuschleifen, mußt Du in Deinem Javascript entsprechend die Url verändern, auf welche Du wechselst, wenn die Option gewählt / verändert wurde.

Hänge ?pot=0 an, wenn die Option abgewählt wurde und ?pot=1 wenn die Option gewählt wurde.

In Deinem Script prüfst Du dann mit

$pot = 0;
If(isset($_GET['pot'])
{
$pot = $_GET['pot'];
}

ob die Variable übergeben wurde und übernimmst diese dann in die entsprechende Variable. Im Gegensatz zu früheren PHP-Versionen wird spätestens seit Version 4.2 die direkte Übergabe der Url-Parameter in Programmvariablen nicht mehr unterstützt, da dies ein Sicherheitsrisiko darstellt. Siehe dazu in der PHP-Dokumentation unter register_globals!

Gruß

Arno


2.

hi arno!


ist glaub ich ne super idee von dir...hab register_globals auf on
gestellt...

will aber nicht laufen....

hier die scripte

• jackpot.php //php entfernt und an die js verweise ?pot= ergänzt

<script type="text/javascript">
function setzen(obj){

if(obj.checked==true){
location.href="jackpot1.php?pot=1";
alert("ich bin an!!!")
}
else {}
}
</script>

<body onLoad='' bgcolor='#A5FF99'>
<table width='175' height='80'><tr><td align='center'><input type='checkbox' name='box[]' onclick='setzen(this)' value='on'></td></tr></table>
</body>

• jackpot1.php

<script type="text/javascript">

function setzen1(obj){
if(obj.checked==true){}
else {
location.href="jackpot.php?pot=0";
alert("ich bin aus!!!")
}
}
</script>

<body bgcolor='#A5FF99'><table width='175' height='80'><tr><td align='center'><input type='checkbox' name='box[]' onclick='setzen1(this)' value='on' checked='1'></td></tr></table></body>

//nun fällt ja die include ganz weg....stand ja eh nix drin...

• test.php

<?php
$pot = 0;
If(isset($_GET['pot'])){
$pot = $_GET['pot'];
}
echo"$pot";
?>

//leider gibt die test.php mir nur immer null aus, also werden die angehängten variablen wohl noch ignoriert?

Vielen Dank!


3.

hab register_globals auf on gestellt

Das solltest Du ganz schnell wieder ändern.

*** Nobody ***


4.

Zum einen, wie Nobody schon gesagt hat, register_globals ganz schnell wieder auf off stellen, damit Du Dir gar nicht erst angewöhnst den alten Weg zu beschreiten.

Zum anderen, nochmals:

Wenn Du in einem Script eine Variable deklarierst, ist diese nicht in dem anderen Script vorhanden, sondern kann nur von diesem genutzt werden, wenn es per include, include_once, require oder require_once eingebunden wird!!

Das heißt im Umkehrschluß, das die Variable $pot die in jackpot.php und jackpot1.php ausgelöst wird, in test.php nicht vorhanden ist, da du die beiden vorher genannten Dateien ständig untereinander aufrufst. Wenn Du anschließend die test.php manuell aufrufst, hat diese die Variable $_GET['pot'] natürlich nicht, denn am Ende eines PHP-Scriptes werden automatisch alle Variablen aufgelöst. Und da Du Dein test.php-Script immer manuell so

http://localhost/test.php

aufrufen dürftest, kann es nicht funktionieren, denn Du übergibst diesem Scipt keine Variable. Einem Script stehen immer nur die Variablen zur Verfügung die im Querystring (alles hinter dem ?-Zeichen) übergeben werden oder per HTML-Formular (siehe Selfhtml.teamone.de) via POST oder GET übergeben werden.

Wenn Du die test.php mal mit

http://localhost/test.php?pot=1

aufrust, erhälst Du auch eine entsprechende ausgabe!

Ich schlage vor, Du schaust Dich erstmal nach ein paar Tutorials oder Büchern zum Thema PHP um und schaust Dir dort mal von Anfang an an, wie PHP läuft und programmiert wird.

Gruß

Arno


5.

hi...ich nochmal...

mit js geht das wunderbar über frames variablen zu speichern

ich habe von php auch nur bedingt ahnung und die prüfung nur mit 70% geschaft...

nun bleibt mit nur noch der weg über cookies...
jackpot.php cookie wert 0
jackpot1.php cookie wert 1
dann eine datei schreiben in der die cookies ausgelesen werden und dann variablen auslösen und diese datei dann im spiel selbst includen ...
ist das ne idee? =)

na dann...danke nochmal
gruß
enrico


6.

Sorry, aber....


Hallo?!?!? JEMAND ZUHAUSE????

Ich habe Dir jetzt zwei mal Beispiele dafür gegeben, wie Variablen zwischen Scripten in PHP übertragen werden und weitere Möglichkeiten angeführt!

Würdest Du bitte 'mal LESEN UND PRAKTISCH ERPROBEN, was man Dir schreibt?

Ausserdem gibt es zwischen JavaScript und PHP einen grundlegenden Unterschied: JScript ist Client- und PHP Server-basiert.... Das heißt die Scripts wissen nichts von dem was Du auf Deinem Client machst, solange es nicht an die Scripts übertragen wird:

entweder per Link-Url, per Formular-Get oder per Formular-Post.

Gruß

Arno

.... irgendwie spielt mein Insulinspiegel heut verrückt :(


7.

schon ok....soweit ich konnte hab ichs ja probiert...ging ja nicht...

nun funktioniert es...

http://projektserver.homeip.net/klammgame/index.htm

die 0 die dort kommt steht für $pot=0 und die 1 für $pot=1;

nur noch mal spielen obs wirklich anspringt...

na dann...bis irgendwann mal =) =) =)


Hier gehts zum Orginal Eintrag "Hilfe! Es geht um Include. Variablenübergabe" im Forum
 
phpforum.de | Impressum