tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
1206
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    dennisnowack dennisnowack ist offline Mitglied Silber
    Registriert seit
    Feb 2005
    Beiträge
    66
    Also,

    ich progge grad nen Browsergame mit PHP. Sämtliche Vorabberechnungen und Fehlerabfragen von Formularen händle ich mit Javascript - bis jetzt meisterhaft. Nur hier bekomme ich ein Problem:

    ?php
    [...] //Datenbank und Session abfragen
    ?>

    <form action="" method="post" name="UE"> //Hier das Formular, allerdings müsste ich den Wert der Größe ebenfalls übermitteln
    <br>Schild in Schiff einbauen:<br>

    <select name="schild">
    <option value=''>Schild
    <?
    $i=1;
    while ($i < ($num + 1))
    {
    echo "<option value=".$i." (1)>".$i."</option>";
    $i++;
    }
    ?>
    </select>
    [...] $groesse[$j]= $fa2["groesse"] //dafür die Übergabe der Größe-Werte der Schilde aus der Datenbank in ein Array
    [...] //irrelevant
    <input type="button" name="st1" value="einbauen" ONCLICK="validateForm()"></p>
    </form>

    //Jetzt folgt der Javascript-Teil an dem von der passenden Stelle aus dem Array der Wert der Größe zu dem vom User gewählten Schild aus dem Drop-Down-Menü gezogen werden soll
    <script LANGUAGE="JavaScript"><!--
    document.UE.name.focus();
    function validateForm()
    {
    [...] //einige andere Fehlerabfragen
    if (okSoFar==true) //d.h.:wenn alle eingaben korrekt sind
    {
    var tmp = schild.value //von form()
    var z = 0
    <? $wert=0;?> //php eingebunden
    while (z < tmp)
    {
    <? $wert++;?> //$wert soll effektiv den selben wert erhalten wie tmp, also schild.value, damit ich die passende Größe zum Schild zur Weiterverarbeitung abfragen kann
    z++
    }
    if (confirm("Die Größe beträgt "+ <?= $groesse[$wert];?> + "!")) //nur vorläufig, zum prüfen
    {
    //window.close();
    submit();
    }
    }
    }
    }
    // --></script>


    Soo, weshalb in aler Welt ist nun $wert IMMER 1? die while-schleife wird nur EIN mal durchlaufen, denn wenn ich in der Schleife $wert um 5 hochzähle, dann tut er dies auch, aber eben nur EIN mal. Dumme Frage, ist die Syntax der Schleife falsch Müsste doch eingentlich ne Fehlermeldung geben... Hoffe, mir kann geholfen werden....

    Ach ja,
    2.) mit window.close kann ich ja ein Browser-Fenster schließen. Nur kommt dann immer ein Bestätigungsfenster. Gibt es einen befehl, mit dem ich es ohne Bestätigung schließen kann?
    und
    3.) Kann ich eine Seite per befehl einfach nur "refreshen"? also, nicht per link-weiterleitung, da vieeele php include() befehle mit samt Frames drinnne sind und das dan nicht klappt, schon probiert.

    Danke für eure Unterstützung, nach diesem part werde ich mich dann wieder leidenschaftlich dem PHP-Hauptteil zuwenden
     

  2. #2
    Avatar von con-f-use
    con-f-use con-f-use ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Oct 2004
    Ort
    München / Innsbruck
    Beiträge
    2.263
    Mir scheint dir ist nicht ganz klar wie PHP und JavaScript funktionieren. PHP wird ausschließlich auf dem Server ausgeführt!

    Es läuft so:

    Der User will eine PHP-Seite aufrufen. Der Browser schickt eine Anfrage nach der Seite an den Server. Der Server durchläuft den PHP-Code und schickt dann reines HTML (mit JavaScript) an den Browser des Users zurück. Der führt die JavaScripts aus und das war's.

    Will sagen zu der Zeit, wo das JavaScript ausgeführt wird ist nix mehr mit PHP. Du kannst keine PHP-Anweisungen in eine JavaScript-While-Schlife einfügen und erwarten, dass sie dann als wären sie JS-Anweisungen ausgeführt werden! Der Server sieht da nur einmal $wert = 0 und setzt die Variable, dann sieht er $wert++ und erhöt sie um eins auf 1 und das bevor das JavaScript überhaupt an den User gesendet wurde.

    Wenn du Werte von JavaScript an PHP übergen willst musst du sie nach Ausführen des JavaScripts entweder über ein (verstecktes) Formular, dass du dann absendest oder über die URL (mittels eines virtuellen Bildes oder eines verstecken Frames, dessen src du änderst) zurück an den Server übergeben, wo PHP ein weiters mal läuft. Andere Möglichkeiten gibt es nicht.

    zu 2.) Nein, das Besätigungs-Fenster ist zur Sicherheit desjenigen, der im Internet surft da und es wäre kontraproduktiv, wenn man es umgehen könnte. Bei manchen Browsern kommt aber kein Bestädigungs-Fenster, bei anderen z.B. dem IE kommt es je nach Sicherheiteinstellungen nur, wenn du es von der lokalen Festplatte aufrufst, nicht aber wenn du es auf einem Server im WWW liegen hast.

    zu 3.) location.reload()
    Geändert von con-f-use (02.08.05 um 20:59 Uhr)
     
    Wäre der Satz "Ich möchte auf meinem Fisch-und-Chips-Schild einen Bindestrich zwischen die Wörter Fisch und und und und und Chips machen" nicht deutlicher, wenn Anführungszeichen vor Fisch und zwischen Fisch und und und und und und und und und und und und und und und und und und und und und Chips und auch nach Chips wären?

    | Meine Homepage: Forschung, unethische | Meine Seite mit viel verlangten Javascrits |

    -----------

    Zufriedenstellende Beiträge bitte als erledigt markieren!


  3. #3
    dennisnowack dennisnowack ist offline Mitglied Silber
    Registriert seit
    Feb 2005
    Beiträge
    66
    Danke erst mal für deine Hilfe.

    Das mit Server-Client war mir schon klar, sonst hätte ich mich janicht für Java-Script entschieden...

    Aber ich war fälschlicherweise der Meinung, dass bei jedem Schleifendurchlauf eine Server-Anfrage gesendet wird, den PHP-Part auszuwerten, nicht dass dies zuerst geschieht.

    Okay, nur wie genau bekomme ich jetzt die Schildgrösse übergeben, die derzeitig in einem Array steckt und je nach Auswahl des Users eines Schildes logischerweise variiert? Ich muss ja vorher prüfen, ob genug Platz auf dem Schiff ist. Könnte jemand meinen Code insofern verbessern oder etwas hinzufügen? Ich zerbreche mir schon den Kopf daran...
    Ich dachte schon an "hidden" feldern mit der Grösse als Wert, aber da ist das Problem der Namensgebung, ich kann ihnen irgendwie keine "Ziffernn-Namen" zuteilen und andernfalls würden sie alle gleich heissen, was auch schlecht wäre.. und mehr als einen Value kann ich ja nicht bei einem <option> - Feld übergeben, nicht wahr?

    Danke für jede Hilfe im Voraus,

    Dennis
     

  4. #4
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Hallo,..

    Du benötigst ein PHP-Skript, welches dir die nötige Information zurückgibt.
    Per XMLHttpRequest kannst du eine Anfrage an dieses Skript senden und die Antwort auswerten.
    Ein kleines Beispiel dazu findest du hier: http://www.tutorials.de/forum/showth...61#post1103261
    Diese Methode funktioniert mit IE5+(bei aktiviertem ActiveX), Geckos, Opera und Safari.

    Eine andere Möglichkeit...welche über das Senden von Formularen arbeitet, findest du hier: http://www.tutorials.de/tutorials202670.html
     

Ähnliche Themen

  1. JSP Applikation zum Datenaustausch
    Von Zacherias im Forum Java
    Antworten: 7
    Letzter Beitrag: 01.03.10, 14:46
  2. xml zum Datenaustausch
    Von buschke im Forum VisualStudio & MFC
    Antworten: 2
    Letzter Beitrag: 13.06.07, 18:16
  3. Entfernter Datenaustausch?
    Von flashray im Forum Java
    Antworten: 4
    Letzter Beitrag: 17.11.06, 15:01
  4. datenaustausch zw. server
    Von quidnovi im Forum PHP
    Antworten: 6
    Letzter Beitrag: 25.04.05, 10:42
  5. JSP - Java prg datenaustausch
    Von kjk im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 2
    Letzter Beitrag: 25.02.05, 18:22