• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Rechnen funktioniert nicht

KIUNES

New member
Hallo,
ich lasse die Fensterbreiten über ein formular auf diese seite hier posten, wenn ich jetzt $screen_width ganz normal ins echo setze, dann gibt der mir die größe an, sobald ich aber damit rechnen will, sagen wir minus 10, dann zeigt der mir nurnoch -10 an. Was mach ich falsch?

PHP:
$screen_width = $_POST['screen_width'];
$minus_width = "10";
$screen_width2 = "$screen_width" - 10;
echo $screen_width2;

Danke für eure Hilfe im vorraus!!!
 
Warum die ganzen Anführungszeichen?

PHP:
$minus_width = 10; // soll doch die Zahl 10 sein und nicht ne Zeichenkette
$screen_width2 = $screen_width - 10;
 
PHP:
$screen_width = $_POST['screen_width'];
$minus_width = 10;
$screen_width2 = $screen_width - $minus_width;
echo $screen_width; //kommt 1680 raus
echo $screen_width2; // aber hier kommt statt 1670, -10 raus
 
Zuletzt bearbeitet:
Kann das sein, dass das daran liegt, dass ich die werte so übergebe?
PHP:
$screen_width = "<script>document.write(top.innerWidth)</script>";

ich glaube der übergibt hier den ganzen script-tag. Wie mach ich denn den Wert zu ner Zahl?
 
Zuletzt bearbeitet:
Ahm, vll. hilft es eher wenn du uns den ganzen Quelltext zur Verfügung stellst.
Ich dachte, $screen_width kommt aus einer POST-Variable? Wieso dann
Code:
$screen_width = "<script>document.write(top.innerWidth)</script>";
?

Strings konvertiert man in PHP am besten mit intval() zu Integern...

grüsse
jeko
 
An deinem geposteten Code liegt es nicht. Der funktioniert so (mit $_GET statt post, da ich zu faul war nen Formular zu bauen).

$screen_width = "<script>document.write(top.innerWidth)</script>";

hast du dir mal ausgeben lassen was danach in der Variablen steht? Sicherlich nicht die Auswertung des Javascript-Befehls.
 
Doch es kommt der Wert des Javascripts raus. Also nochmal der ganze Code!

Von Datei 1 schicke ich die daten via Formular ab:
PHP:
<?php
$screen_width = "<script>document.write(top.innerWidth)</script>";
$screen_height = "<script>document.write(top.innerHeight)</script>";
?> 
<form name="fullscreen" method="post" action="<? echo $site_url?>/fullscreen.php">
<input type="hidden" name="screen_width" id="screen_width" value="<? echo $screen_width;?>"/>
<input type="hidden" name="screen_height" id="screen_height" value="<? echo $screen_height;?>"/>
<input type="hidden" name="game_url" id="game_url" value="<? echo $row['url'];?>"/>
<input type="image" name="Submit" value="eintragen" src="<? echo $site_url;?>/templates/delta/img/fullscreen.png" style="border:0px;" />
</form>

Und in Datei 2 will ich damit arbeiten bzw. rechnen:
PHP:
<?
$screen_width = $_POST['screen_width'];
$minus_width = 10;
$screen_width2 = $screen_width - $minus_width;

echo $screen_width; //kommt 1680 raus
echo $screen_width2; // aber hier kommt statt 1670, -10 raus

$screen_height = $_POST['screen_height'];
$minus_height = 10;
$screen_height2 = $screen_height - $minus_height;

$game_url = $_POST['game_url'];
$member = $_COOKIE["ava_username"];
?>

<object width="<? echo $screen_width;?>" height="<? echo $screen_height;?>" name="GameID">
<param name="movie" value="<? echo $game_url;?>">
<embed src="<? echo $game_url;?>" width="<? echo $screen_width;?>" height="<? echo $screen_height;?>" quality="high" type="application/x-shockwave-flash" name="GameID"></embed>
<param name="wmode" value="opaque" />
</object>

Wie ihr seht will ich das Flashgame aus der vorherigen seite in den Fullscreen setzen, allerdings kann ich weder mit den Variablen rechnen, noch zeigt das Object mir die richtige breite an, denn obwohl ich die normale (ohne Rechnung) Variable $screen_width benutze, die mir das echo als die korrekte zahl 1680 ausgibt, kann das object nix damit anfangen und zeigt das object ganz klein an, was mich vermuten läßt, dass der das Javascript in die width variable einbettet - könnt ihr mir folgen?
Ich blick da einfach nicht mehr durch!

Meine Theorie
wenn ich rechne, dann rechnet der garantiert so:
PHP:
$screen_width = <script>document.write(top.innerHeight)</script> - 10;
und da PHP vor Javascript kommt, kann der das nicht errechnen.
Die frage ist also wie packe ich das Javascript in einen festen Wert?!?
 
Zuletzt bearbeitet:
[EDIT] Nicht beachten, habe den letzten Teil des vorherigen Post übersehen [/EDIT]


Wenn du das Ganze per Echo im Browser ausgeben lässt, kommt schon der Wert des JavaScripts heraus. Du solltest aber mal einen Blick in den Quellcode werfen. Dort steht sicherlich "<script>...</script>" an dieser Stelle.

Du übergibst der Variable nämlich den JS-Code als String...
Ein String gibt 0, wenn PHP diesen in einen Integer umwandelt. Das führt zu 0-10=-10
 
[EDIT] Nicht beachten, habe den letzten Teil des vorherigen Post übersehen [/EDIT]


Wenn du das Ganze per Echo im Browser ausgeben lässt, kommt schon der Wert des JavaScripts heraus. Du solltest aber mal einen Blick in den Quellcode werfen. Dort steht sicherlich "<script>...</script>" an dieser Stelle.

Du übergibst der Variable nämlich den JS-Code als String...
Ein String gibt 0, wenn PHP diesen in einen Integer umwandelt. Das führt zu 0-10=-10

Genau das ist ja meine Theorie gewesen, also lag ich da richtig, aber wie kann ich das jetzt umgehn?
 
Eine Idee: Die Formularwerte per JS setzen lassen.
Habs nicht ausgetestet. Der erste Teil ist Javascript.

Code:
<script>
function variablenUebergeben(){

self.document.form.screen_width=document.write(top.innerWidth);

self.document.form.screen_height=document.write(top.innerHeight);

self.document.form.submit();

}
</script>

....

<form name="fullscreen" method="post" action="<? echo $site_url?>/fullscreen.php">
<input type="hidden" name="screen_width" id="screen_width" value="NULL"/>
<input type="hidden" name="screen_height" id="screen_height" value="NULL"/>
<input type="hidden" name="game_url" id="game_url" value="<? echo $row['url'];?>"/>

<input type="image" name="Submit" value="eintragen" src="<? echo $site_url;?>/templates/delta/img/fullscreen.png" style="border:0px;" onClick="variablenUebergeben()" />
</form>
 
Zuletzt bearbeitet:
Also jetzt übergibt der mir die Game-Url nicht mehr und das ergebnis von $screen_width ist 1680897
 
Und das heißt jetzt was?
Mit Texten kann man nicht rechnen - da könnte ja auch "Hallo" drin stehen, oder irgendwelche Koranverse. Und wenn Du nun versuchst zwei Koranverse voneinander abzuziehen oder zu multiplizieren, was soll da wohl rauskommen?
Die Konkatenation ist natürlich netterweise für Zeichenketten definiert und Dein Ergebnis läßt darauf schließen, dass Du genau dieses hier durchführst.
 
Leider kann ich mit dem Begriff Konkatenation nichts anfangen, verstanden habe ich dich trotzdem. Aber wie kann ich das jetzt lösen, habe leider kein plan von Javascript, geschweigedenn wie man einen Wert von JS in eine PHP Variable packt. Hast du da ein Lösungsansatz?
 
So habs jetzt so gemacht ;)
PHP:
<?
if (isset($_GET['width']) AND isset($_GET['height'])) {
  echo "Die Bildschirmbreite ist: ". $_GET['width'] ."<br />\n";
  echo "Die Bildschirmhöhe ist: ". $_GET['height'] ."<br />\n";
    echo "Game-Url ist: ". $_GET['game'] ."<br />\n";
} else {
  echo "<script language='javascript'>\n";
  echo "  location.href=\"${_SERVER['SCRIPT_NAME']}?${_SERVER['QUERY_STRING']}"
           . "&width=\" + top.innerWidth + \"&height=\" + top.innerHeight;\n";
  echo "</script>\n";
  exit();
} 
?>

Vorher die game_url mit get weitergegeben ;) es funzt!!!!
 
Zuletzt bearbeitet:
Wollte euch nochmal danken, wen`s interessiert es diente für die fullscreen-funktion meiner neuen Games-Page (BREAK4GAME)

Ich liebe dieses Forum, hier finde ich immer Hilfe!
 
Mist woran liegt das denn bitte jetzt, dass es beim IE nicht funzt?
da übergibt der die Werte mit "undefined"

PHP:
if (isset($_GET['width']) AND isset($_GET['height'])) {
  $width = $_GET['width'] - 20;
  $height = $_GET['height'] - 20;
  $game = $_GET['game'];
} else {
  echo "<script language='javascript'>\n";
  echo "  location.href=\"${_SERVER['SCRIPT_NAME']}?${_SERVER['QUERY_STRING']}"
           . "&width=\" + top.innerWidth + \"&height=\" + top.innerHeight;\n";
  echo "</script>\n";
  exit();
}
 
... wen`s interessiert es diente für die fullscreen-funktion meiner neuen Games-Page ...
Solche Funktionen sind ein Grund diese Seiten zu meiden, ich könnte jedesmal kotzen wenn eine Seite meine Einstellungen ändert (ich weiß das man das ändern der Browsergröße in fast allen Browsern abschalten kann, ich brauch diese aber hin und wieder für Tests eigener Skripte).

Viele benutzen ihren Browser sowieso im Volbildmodus und die die es nicht tun, tun es mit Absicht und können auch ihre Fenster selbst entsprechend anpassen, warum glauben manche Internetseitenbastler mir da reinreden zu müssen?
 
Mist woran liegt das denn bitte jetzt, dass es beim IE nicht funzt?
da übergibt der die Werte mit "undefined"
Weil dieser die JS eigenschaften nicht kennt, die du benutzt. Hast eigentlich mal in die Fehlerkonsole vom Firefox geschaut? Die quillt über vor CSS Warnungen. JS möchte ich gar nicht einschalten, wegen deiner Fullscreenfunktion
 
Zurück
Oben