kostenloser Webspace werbefrei: lima-city


PHP&Javascript | Mausposition x/y in DB Speichern?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    christian1603

    Kostenloser Webspace von christian1603

    christian1603 hat kostenlosen Webspace.

    Hallo LC,
    Man kann so:
    <html><head><title>Test</title>
    <script type="text/javascript">
    function Mausklick (Ereignis) {
      if (!Ereignis)
        Ereignis = window.event;
      alert("x-Wert: " + Ereignis.screenX + " / y-Wert: " + Ereignis.screenY);
    }
    
    document.onclick = Mausklick;
    </script>
    </head><body>
    </body></html>

    Die aktuelle Mausposition auslesen und als Meldung ausgeben. Dazu habe ich 2 Fragen:
    1) Wenn man auf eine Bestimmte Position klickt kommt eine Meldung. Jetzt möchte Ich wenn man auf OK klickt das er Wert in meine MySQL DB gespeichert Wirt. Wie kann man das Manchen?

    2) Sind die Positionen auf Jeden PC Gleich? Wenn nicht wie kann man das Lösen?



    Danke Schonmal für alle Guten Beiträge!
    Christian
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. sonok

    Moderator Kostenloser Webspace von sonok

    sonok hat kostenlosen Webspace.

    Die Positionen sind nicht gleich, wenn Du ein variables Design verwendest; schon eine Positionierung des Hauptbereiches woanders als links am Rand macht andere Pixelwerte von Fenstergröße zu Fenstergröße

    Für den Datenbankeintrag kannst Du in dem Script doch eine PHP-Klasse aufrufen (die Du dann auch haben solltest :biggrin:)
  4. Mit Ajax ein kleines php-Skript aufrufen, dem Du die Position übergibst. Dieses Skript kann dann die Daten in die DB schreiben.

    Die absolute Position sollte immer gleich sein.
    Ein Problem wird es geben, wenn die Webseite eine dynamische Breite hat und eventuell noch zentriert dargestellt wird. Dann müßtest Du noch Offsets berücksichtigen.

    Ob bei jedem Browser die gleichen Werte übergeben werden müßte man testen.

    FF
  5. Autor dieses Themas

    christian1603

    Kostenloser Webspace von christian1603

    christian1603 hat kostenlosen Webspace.

    Danke Schonmal für die beiträge!

    ich habe das gefunden:
    <html><head><title>Test</title>
    <script type="text/javascript">
    function Coords () {
      if (window.event)
        alert("x = " + window.event.x + "/ y = " + window.event.y);
    }
    </script>
    <style type="text/css">
    div { position:relative; left:100px; width:200px; padding:30px; background-color:#FFFFE0; }
    div p { margin:0; padding:10px; background-color:#FFFFB0; }
    </style>
    </head><body>
    <div><p onclick="Coords()">Klick mich</p></div>
    </body></html>

    Jetzt misste der die Position in diesem Div.
    Da müsste dann auf jeden PC das gleiche rauskommen oder? (da der div eine Vorgegebene Größe hat)


    sonok schrieb:
    Für den Datenbankeintrag kannst Du in dem Script doch eine PHP-Klasse aufrufen

    Also PHP kann ich ich habe nur keine ahnung wie ich es Schafe wenn ich auf OK drücke das der wert in eine PHP
    Variable Speichert und dann den Script ausführe der in die DB Speicher

    LG
  6. Prinzipiell wird immer der gleiche Wert rauskommen.
    Teste es einfach mal mit verschiedenen Auflösungen und Browsern.
    Wie fatfreddy schon sagte ist die Abspeicherung der Koordinaten über ein Php-Skript, das per Ajax aufgerufen wird, möglich.
    Falls du keinen Ajax-Prototypen zur Hand hast, bindest du einfach eine fertige Bibliothek ein (z.b. jQuery) und programmierst deinen Abschnitt dazu.
    Gruß,
    dex (qap2-Team)
  7. Autor dieses Themas

    christian1603

    Kostenloser Webspace von christian1603

    christian1603 hat kostenlosen Webspace.

    Noch ne andere Frage:
    <script type="text/javascript">
    function Coords () {
    if (window.event)
    alert("x = " + window.event.x + "/ y = " + window.event.y);
    }
    </script>
    So gibt er es in einer Meldung aus.
    Wie kann ich die Werte in einen oder bessergesagt 2 Input Felder eins für x Wert eins für y wert ausgeben?
    LG
  8. Also wenn das window.event überall den selben Wert hat, ist das das 8te Weltwunder. window.event sollte es nur im IE geben, im FF musst wird das event als erster Parameter an die Event-Funktion übergeben. Weiterhin erinnere ich mich aus alten Zeiten, dass auch der Name der Eigenschaften, die zu den korrekten Koordinaten führen in IE / gute Browser verschieden waren.

    Wenn du möchtest, dass nur ein Mal geklickt wird und sofort abgesendet, kannst du ein input vom type "image" nutzen. Dann bekommst du die Koordinaten an PHP übertragen. Nur wird dann dein Formular auch wirklich abgesendet.
  9. Autor dieses Themas

    christian1603

    Kostenloser Webspace von christian1603

    christian1603 hat kostenlosen Webspace.

    nikic schrieb:
    Wenn du möchtest, dass nur ein Mal geklickt wird und sofort abgesendet, kannst du ein input vom type "image" nutzen. Dann bekommst du die Koordinaten an PHP übertragen. Nur wird dann dein Formular auch wirklich abgesendet.


    <html><head><title>Test</title>
    <script type="text/javascript">
    function Coords () {
      if (window.event)
        alert("x = " + window.event.x + "/ y = " + window.event.y);
    }
    </script>
    
    </head><body>
    <div><p onclick="Coords()">
    <form action="datei.php">
    
     <input type="image" src="Bild.png" width="345" height="312" border="0" alt="Karte" 
      value=" Hier soll X dann ein , und dann y  " name="Beschriftung">
    
    
      </form>
    </p></div>
    </body></html>


    wie krig ich es hin das value = window.event.x , window.event.y ist ?
    Danke Schonmal


    edit: sry das ich mich so doof anstelle!

    Beitrag zuletzt geändert: 11.1.2010 15:49:05 von christian1603
  10. vampiresilence

    Kostenloser Webspace von vampiresilence

    vampiresilence hat kostenlosen Webspace.

    @Die gelben Kampfcoder ;)

    nikic schrieb: Wenn du möchtest, dass nur ein Mal geklickt wird und sofort abgesendet, kannst du ein input vom type "image" nutzen. Dann bekommst du die Koordinaten an PHP übertragen. Nur wird dann dein Formular auch wirklich abgesendet.

    Falsch. Damit kriegst du nur die Koordinaten relativ zur oberen linken Ecke des Bildes. Wenn allerdings wenigstens das Bild einigermaßen statisch auf der Homepage positioniert ist, kann man die Position relativ zur oberen linken Ecke der Page zurückrechnen. Und das Absenden kann man unterbinden, indem man den Klick einfach an ein Event hängt, dass statisch "false" zurückgibt.

    qap2 schrieb: Wie fatfreddy schon sagte ist die Abspeicherung der Koordinaten über ein Php-Skript, das per Ajax aufgerufen wird, möglich.
    Falls du keinen Ajax-Prototypen zur Hand hast, bindest du einfach eine fertige Bibliothek ein (z.b. jQuery) und programmierst deinen Abschnitt dazu.

    Reine Ressourcenverschwendung. Das geht so:

    // Werte ermitteln (hast du ja schon)
    getElementById("inviFrame").src = "koordinaten.inc.php?x=" + x + "&y=" + y;

    In den <Body>-Tag muss dann noch:

    <iFrame id="inviFrame" style="visibility: hidden;" src="about:blank"></iframe>

    und deine koordinaten.inc.php nimmt deine Daten dann folgendermaßen in Empfang:

    <?php
    
    if(intval($_GET['x']) > 0 && intval($_GET['y']) > 0) {
      if(mysql_query("UPDATE table SET `x` = '".intval($_GET['x'])."', `y` = '".intval($_GET['y'])."' WHERE Bedingung")) {
        echo "success.";
      } else {
        echo "fail.";
      }
    }
    
    ?>

    Das sind, wenn ich die Leerzeilen jetzt mal nicht beachte 9 Zeilen Code und mehr brauchst du definitiv nicht.

    Die input-image Koordinaten sind im Übrigen in jedem Browser gleich, also brauchst du dir in der Hinsicht auch keine Gedanken mehr machen.

    Liebe Grüße
    - VampireSilence

    Beitrag zuletzt geändert: 11.1.2010 16:42:43 von vampiresilence
  11. Autor dieses Themas

    christian1603

    Kostenloser Webspace von christian1603

    christian1603 hat kostenlosen Webspace.

    vampiresilence schrieb: @Die gelben Kampfcoder ;)

    nikic schrieb: Wenn du möchtest, dass nur ein Mal geklickt wird und sofort abgesendet, kannst du ein input vom type "image" nutzen. Dann bekommst du die Koordinaten an PHP übertragen. Nur wird dann dein Formular auch wirklich abgesendet.

    Falsch. Damit kriegst du nur die Koordinaten relativ zur oberen linken Ecke des Bildes. Wenn allerdings wenigstens das Bild einigermaßen statisch auf der Homepage positioniert ist, kann man die Position relativ zur oberen linken Ecke der Page zurückrechnen. Und das Absenden kann man unterbinden, indem man den Klick einfach an ein Event hängt, dass statisch "false" zurückgibt.

    qap2 schrieb: Wie fatfreddy schon sagte ist die Abspeicherung der Koordinaten über ein Php-Skript, das per Ajax aufgerufen wird, möglich.
    Falls du keinen Ajax-Prototypen zur Hand hast, bindest du einfach eine fertige Bibliothek ein (z.b. jQuery) und programmierst deinen Abschnitt dazu.

    Reine Ressourcenverschwendung. Das geht so:

    // Werte ermitteln (hast du ja schon)
    getElementById("inviFrame").src = "koordinaten.inc.php?x=" + x + "&y=" + y;

    In den <Body>-Tag muss dann noch:

    <iFrame id="inviFrame" style="visibility: hidden;" src="about:blank"></iframe>

    und deine koordinaten.inc.php nimmt deine Daten dann folgendermaßen in Empfang:

    <?php
    
    if(intval($_GET['x']) > 0 && intval($_GET['y']) > 0) {
      if(mysql_query("UPDATE table SET `x` = '".intval($_GET['x'])."', `y` = '".intval($_GET['y'])."' WHERE Bedingung")) {
        echo "success.";
      } else {
        echo "fail.";
      }
    }
    
    ?>

    Das sind, wenn ich die Leerzeilen jetzt mal nicht beachte 9 Zeilen Code und mehr brauchst du definitiv nicht.

    Die input-image Koordinaten sind im Übrigen in jedem Browser gleich, also brauchst du dir in der Hinsicht auch keine Gedanken mehr machen.

    Liebe Grüße
    - VampireSilence



    mh.... Ich krig das nich hin!

    ich habe Jetzt eine Datei Neu1.php

    <iFrame id="inviFrame" style="visibility: hidden;" src="about:blank"></iFrame>
    <script type="text/javascript">
    getElementById("inviFrame").src = "koordinaten.inc.php?x=" + x + "&y=" + y;
    </script>

    und die koordinaten.inc.php wie du gesagt hast!
    aber was soll da passieren ^^
  12. Du musst das getElementById natürlich in den Code einbauen, den du vorhin hattest.
  13. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!