milkaman: sql aufrufe aus javascript heraus

Hi,
ist es eigentlich möglich, einen SQL-Befehl in Javascript zu definieren und diesen innerhalb des Script ausführen zu lassen durch z.B einen PHP-Aufruf?

z.B.
var s='delete * from table";
<?php
hier den sql-befehl ausführen (vorher DB Verbindung aufbauen, etc..)
?>

Was ich vorhabe:
ich habe eine Karte mit layern. auf dieser karte werden POI eingetragen. beim klicken eines POI soll das entsprechend in einer Datenbank vermerkt werden, also POI aktiv oder nicht aktiv.
Dazu muss auf der DB-Tabelle ein insert oder ein delete ausgeführt würden. und da ich über das Anklicken der POIs erfahre, welche POIs aktiv werden oder nicht nicht, muß also von dem Client aus eine Serveraktion gestartet werden.

Die Seite, welche die Karte enthält, wechselt. d.h wenn ich eine neue region auswähle, wird in einem frame die neue karte geladen (karte. php).

wer kann helfen?
danke
gruß
kurt

  1. hi,

    ist es eigentlich möglich, einen SQL-Befehl in Javascript zu definieren und diesen innerhalb des Script ausführen zu lassen durch z.B einen PHP-Aufruf?

    jein.

    ich habe eine Karte mit layern. auf dieser karte werden POI eingetragen. beim klicken eines POI soll das entsprechend in einer Datenbank vermerkt werden, also POI aktiv oder nicht aktiv.
    Dazu muss auf der DB-Tabelle ein insert oder ein delete ausgeführt würden. und da ich über das Anklicken der POIs erfahre, welche POIs aktiv werden oder nicht nicht, muß also von dem Client aus eine Serveraktion gestartet werden.

    dann tu das auch - forder per javascript eine ressource vom server an, hinter der sich ein script verbrigt, welches die gewünschte funktionalität ausführt.
    das kann z.b. eine in einen unsichtbaren frame geladene datei sein, oder ein bild, das per JS angefordert wird, etc.

    gruß,
    wahsaga

    --
    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
    1. so ähnlich habe ich das auch gemacht.

      ich führe in einen window.open den aufruf von mark.php durch mit den entsprechenden Parametern. Die Werte werden in der DB richtig verwaltet. Das POI auf der Karte ändert je nach Zustand (aktiv/inaktiv) die Hintergrundfarbe).
      Was störend ist:

      bei meinem langsamen Rechner ist das window.open trotz Parameter width=0 und height=0 deutlich sichtbar. das window hat deutlich größere werte als 0/0. das flackern möchte ich gerne weg haben.
      daher meine frage nach einer direkteren methode.

      bei einem 3GHz Intel ist kein flackern zu sehen, bei meinem Athlon500 schon deutlich.

      gruß
      milkaman

      function iconbgchange(nr)
      {
       layer = "ort"+nr;
       if (merker[nr] == 0)
       {
        text = '<a href="javascript:iconbgchange('+nr+');"
                 onMouseOver="javascript:info('+nr+');"
                 onMouseOut="javascript:infoweg();"><img
                 src="img/icons/'+orte[nr][7]+'" width="40"
                 height="40" border="0" alt=""></a>';
        merker[nr] = 1;
        var win="mark.php?action=insert&id="+orte[nr][4];
        window.open
             (win,"Mark","width=0,height=0,left=0,top=0");
       if (ie)
         document.all[layer].innerHTML = text;
         else
       if (ns)
       {
         document[layer].document.open();
         document[layer].document.write(text);
         document[layer].document.close();
       }
      }
      else
      {
      ..analog  ...
       merker[nr] = 0;
       var win="mark.php?action=delete&id="+orte[nr][4];
      window.open    (win,"Mark","width=0,height=0,left=0,top=0");
      }
      </script>

      1. hi,

        Was störend ist:

        bei meinem langsamen Rechner ist das window.open trotz Parameter width=0 und height=0 deutlich sichtbar. das window hat deutlich größere werte als 0/0.

        das derart geöffnete fenster in den gängigen browsern eine gewisse mindestgröße haben, solltest du aber wissen, wenn du dich in selfhtml über window.open informiert hast.

        das flackern möchte ich gerne weg haben. [...]
        bei einem 3GHz Intel ist kein flackern zu sehen, bei meinem Athlon500 schon deutlich.

        ich denke, dass das weniger mit dem prozessor/rechner an sich zu tun haben sollte, sondern eher damit, wie schnell die antwortseite durch die leitung geht.

        ein paar denkbare alternativen, die du anstelle des öffnens eines neuen fensters in betracht ziehen könntest, hatte ich dir ja bereits genannt.

        gruß,
        wahsaga

        --
        "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
        1. das derart geöffnete fenster in den gängigen browsern eine gewisse mindestgröße haben, solltest du aber wissen, wenn du dich in selfhtml über window.open informiert hast.

          ja, das habe ich auch in selfhtml gelesen. ich wollte es aber nicht glauben.

          ein paar denkbare alternativen, die du anstelle des öffnens eines neuen fensters in betracht ziehen könntest, hatte ich dir ja bereits genannt.

          danke für die alternativen.

          ressource anfordern. dahinter ein script, dass die gewünschte aktion ausführt.

          die gewünschte aktion soll sein:
          mark.php?action=insert&id=irgendwas

          die parameterwerte generiere ich in javascript. diese müsste ich ja an das script übergeben.

          ich habe keine vorstellung wie das script aussehen soll/muß. hab mich wohl zu sehr in meine lösung vernarrt.

          eine ressoruce anfordern hinter der ein script steht.

          ich steh auf der leitung, sorry.

          danke trotzdem, wahsaga

          1. hi,

            ja, das habe ich auch in selfhtml gelesen. ich wollte es aber nicht glauben.

            aua.

            ressource anfordern. dahinter ein script, dass die gewünschte aktion ausführt.

            die gewünschte aktion soll sein:
            mark.php?action=insert&id=irgendwas

            na dann ist das vermutlich die ressource, die du über HTTP anfordern möchtest.
            ggf. noch protokoll/domainnamen/pfad davorsetzen, wenn diese nicht aus dem aktuellen kontext ermittelt werden können.

            ich habe keine vorstellung wie das script aussehen soll/muß. hab mich wohl zu sehr in meine lösung vernarrt.

            es muss den eintrag in deine DB machen, und ggf. eine passende antwort liefern.
            beim laden in einen unsichtbaren frame könnte diese z.b. in einem html-dokument bestehen, bei der anforderung als bild in bilddaten, etc. pp.

            eine ressoruce anfordern hinter der ein script steht.
            ich steh auf der leitung, sorry.

            so gut wie alles, was du über HTTP anfordern kannst, könnte man als ressource bezeichnen. du musst dir jetzt nur noch überlegen, auf welchem wege du sie mit javascript anfordern willst.

            gruß,
            wahsaga

            --
            "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
            1. aua.

              ja, ich weiß, das tut weh. ;-)

              mark.php?action=insert&id=irgendwas
              » na dann ist das vermutlich die ressource, die du über HTTP anfordern möchtest.

              Ja, genau

              unsichtbares Frame:

              ich versuche mal ob ich das hinkriege.

              gruß
              milkaman

            2. kann im selfhtml über den suchbegriff "unsichtbares Frame" nichts finden.

              ist das ein fachbegriff wie zB iframe oder ein frame mit der größe 0, also row=0 oder so ähnlich.

              ich kriegs schon hin.

              danke für die tipps

              1. hi,

                kann im selfhtml über den suchbegriff "unsichtbares Frame" nichts finden.

                ist das ein fachbegriff wie zB iframe oder ein frame mit der größe 0, also row=0 oder so ähnlich.

                ja, idR. macht man sowas über
                <FRAMESET ROWS="100%,*">
                o.ä.

                gruß,
                wahsaga

                --
                "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
          2. Hallo,

            ich habe keine vorstellung wie das script aussehen soll/muß. hab mich wohl zu sehr in meine lösung vernarrt.

            eine ressoruce anfordern hinter der ein script steht.

            http://de.selfhtml.org/javascript/objekte/images.htm:

            var bild = new Image();
            bild.src = 'mark.php?action=insert&id=irgendwas';

            Dann fordert der Browser diese Ressource an und das serverseitige Script wird ausgeführt. Das Script sollte dann ein Bild zurücksenden (normalerweise gibt ein PHP-Script ja ein HTML-Dokument zurück). Zum Beispiel ein 1×1 Pixel großes PNG, wenn die Aktion erfolgreich war. Und ein 1×2 Pixel großes PNG, wenn ein Fehler auftrat. (Die Höhe kannst du aber erst auslesen, wenn die Grafik fertig geladen ist. Nach der bild.src-Zuweisung wird das JavaScript weiter ausgeführt, ohne darauf zu warten, daher wäre ein Warten auf complete nötig bzw. ein Arbeiten mit dem onload-Event des Image-Objekts.)

            <?php
            header('Content-Type: image/png');
            /* ... verarbeite die Parameter, Datenbankoperation... */
            if ($erfolg)
               readfile('1x1.png'); // im Erfolgsfall 1x1.png ausgeben
            else
               readfile('1x2.png'); // im Fehlerfall 1x1.png ausgeben
            ?>

            Mathias

            1. danke.
              ich werde das ausprobieren.
              herzlichen dank den helfern.
              gruß
              milkaman