Smarty Forum Index Smarty
WARNING: All discussion is moving to https://reddit.com/r/smarty, please go there! This forum will be closing soon.

smarty assign durch javascript onclick?

 
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.    Smarty Forum Index -> Language: German
View previous topic :: View next topic  
Author Message
demo1987
Smarty Rookie


Joined: 16 Apr 2014
Posts: 9

PostPosted: Mon Feb 02, 2015 8:00 pm    Post subject: smarty assign durch javascript onclick? Reply with quote

ich lade in einem template eine tabelle, jede tr ist ein datensatz, am ende der tr ist ein button

ich möchte das wenn dieser button geklickt wird eine id aus diesem datensatz in eine andere smarty variable gepackt wird

die neue variable soll dann an anderer stelle ausgegeben werden

hier ist die schleife. Der Wert von {$medicalservice.id} soll nach dem click übergeben werden
Code:

...
<tbody>
  {foreach $medicalservices as $medicalservice}
  <tr>
         <td class="pl18 pr18">{$medicalservice.id}</td>
         <td class="pl18 pr18">{$medicalservice.title}</td>
         ...
         <td class="pl18 pr18">
           <div class="btn-group">
             <button id="set-id" type="button" class="btn btn-info light"><span>Lage &ouml;ffnen</span>
             </button>
           </div>
         </td>
  </tr>
  {/foreach}
</tbody>
...


Der Wert soll über den button mit der id #set-id in die smarty variable {$set-id} übergeben werden.

Die neue variable wird unter der tabelle ausgegeben:
Code:
<p>Es wurde {$set-id} gesetzt</p>


-------------------------------------------------------------

Ich habe schon alles versucht, link aufrufen und in einer php datei die $_GET variable an smarty übergeben
per ajax call die daten setzen

aber nichts hat funktioniert

wie würdet ihr es machen? was mache ich falsch?
Back to top
View user's profile Send private message
Grizzly
Smarty Pro


Joined: 15 Apr 2011
Posts: 172
Location: Germany

PostPosted: Wed Feb 04, 2015 9:02 am    Post subject: Reply with quote

Wenn ich dich richtig verstehe, willst du nur beim klick auf den Button einen Text in diesen p-Tag reinschreiben?

gib dem p-Tag eine id:

z. B.:

Code:
<p id="idChangedcontent"></p>


dem button gibst du statt der id ein onclick-event:

Code:
<button onclick="document.getElementById('idChangedcontent').innerHTML = 'Es wurde die ID bla gesetzt'" type="button" class="btn btn-info light"><span>Lage &ouml;ffnen</span>


Sollte gehen.
Back to top
View user's profile Send private message Visit poster's website
demo1987
Smarty Rookie


Joined: 16 Apr 2014
Posts: 9

PostPosted: Wed Feb 04, 2015 9:24 am    Post subject: Reply with quote

Fast

Ich habe eine Schleife in Smarty erstellt, die Datensätze ausgibt. Jeder Datensatz hat eine ID, diese ID soll mit dem Button in der letzten Spalte verknüpft werden.

Wenn ich diesen Button drücke dann soll die ID des jeweiligen Datensatzes in eien andere globale Smarty Variable gepackt werden.

Diese gesetzete Variable gebe ich dann zwar auch auf der Seiet aus (als Hilfestellung) ich möchte sie aber dann an anderen Stellen auch nutzen. Die ID in eine SESSION Variable zu packen wäre auch eien Lösung.

Am liebsten per AJAX wenn es geht, aber irgendwei krig ich das nicht hin.
Back to top
View user's profile Send private message
Grizzly
Smarty Pro


Joined: 15 Apr 2011
Posts: 172
Location: Germany

PostPosted: Wed Feb 04, 2015 10:16 am    Post subject: Reply with quote

Ach so,

dann mach doch einfach ein Formular mit einem Submit button, der dann die benötigte ID übergibt (GET oder POST) und dann kannst du ja die "Hilfestellung" so machen, dass du überprüfst ist der Request gesetzt, wenn ja dann gib den p-Tag aus mit dem Inhalt der ID.

Im Code kannst du ja dann ebenfalls abfragen obs gesetzt ist, wenn ja, dann überschreibe die Variable...
Back to top
View user's profile Send private message Visit poster's website
demo1987
Smarty Rookie


Joined: 16 Apr 2014
Posts: 9

PostPosted: Wed Feb 04, 2015 10:21 am    Post subject: Reply with quote

Ja das mache ich auch so, aber sollte jemand ein AJAX Code Beispiel für mich haben wie ich das machen kann wäre ich sehr dankbar. Wink
Back to top
View user's profile Send private message
Grizzly
Smarty Pro


Joined: 15 Apr 2011
Posts: 172
Location: Germany

PostPosted: Wed Feb 04, 2015 10:25 am    Post subject: Reply with quote

Am einfachsten finde ich AJAX mit externen JavaScript Framework wie z. B. jQuery. Und wenn du es schon eh einsetzt, um so besser. Wenn nicht, würde ich dir raten (außer du setzt ein anderes ein).

Dort geht es ganz einfach
Back to top
View user's profile Send private message Visit poster's website
demo1987
Smarty Rookie


Joined: 16 Apr 2014
Posts: 9

PostPosted: Wed Feb 04, 2015 10:41 am    Post subject: Reply with quote

ich setze jQuery ein aber die Skripte die ich dort verwende habe ich nicht selbst geschrieben sondern woanders her bekommen.

Könntest du mir ein Script schreiben wie das aussehen müsste?

Bedenke ich arbeite mit Smarty. Das hie rhatte ich schon rasu gefunden:
Code:

$.ajax({
    type: 'POST',
    url: 'yourphppage.php',
    data: WERT von dem Button?
});


Da ist die Frage, wie verknüpfe ich die Smarty Variable {$medicaservices.id} mit dem Button?
Back to top
View user's profile Send private message
Grizzly
Smarty Pro


Joined: 15 Apr 2011
Posts: 172
Location: Germany

PostPosted: Wed Feb 04, 2015 10:54 am    Post subject: Reply with quote

Okay, kein Problem:

Code:

$.ajax({
    type: 'POST',
    url: 'yourphppage.php',
    data: JSON.stringify({'deinPostParamaterName': 'deinPostParamaterWert' }),
    success: function() {
    //mache dinge, wenn alles erfolgreich, wie z. B. im p-Tag den Wert reinschreiben
}
error: function() {
//Im Fehlerfall, dinge tun
}
});


Wenn du also im php-Code den POST-Parameter "ID" überprüfst ($_POST["ID"])

dann schaut dein AJAX-Aufruf so aus:

Code:

$.ajax({
    type: 'POST',
    url: 'DeineUrlZumSetzenDerID.php',
    data: JSON.stringify({'ID': '1' }),
    success: function() {
    //mache dinge, wenn alles erfolgreich, wie z. B. im p-Tag den Wert reinschreiben
$('idChangedcontent').html('Es wurde die ID 1 gesetzt');
}
error: function() {
//Im Fehlerfall, dinge tun
}
});
Back to top
View user's profile Send private message Visit poster's website
demo1987
Smarty Rookie


Joined: 16 Apr 2014
Posts: 9

PostPosted: Wed Feb 04, 2015 11:39 am    Post subject: Reply with quote

wie komme ich denn an den wert von meinem Button ran? In deinem Beispiel sind die übergebenen Werte ja statisch
Back to top
View user's profile Send private message
Grizzly
Smarty Pro


Joined: 15 Apr 2011
Posts: 172
Location: Germany

PostPosted: Wed Feb 04, 2015 11:49 am    Post subject: Reply with quote

Oh da gibt es mehrere Arten xD

Wie hast du es denn vorher gemacht mit dem set-id button?

theoretisch kannst du dem button ein onclick-event mitgeben mit einem data-attribut so z. B.:

Code:
<button type="button" onclick="javascript:myAjaxCall(this);" class="btn btn-info light" data-selectedid="{$medicalservice.id}" />


dann in deiner JS-Funktion dieses data-attribut auslesen, in der deine benötigte id steht:

Code:
function myAjaxCall(button) {
   var id = $(button).data("selectedid");
   
   $.ajax({
      type: 'POST',
      url: 'DeineUrlZumSetzenDerID.php',
      data: JSON.stringify({'ID': id }),
      success: function() {
         //mache dinge, wenn alles erfolgreich, wie z. B. im p-Tag den Wert reinschreiben
         $('idChangedcontent').html('Es wurde die ID 1 gesetzt');
      }
      error: function() {
         //Im Fehlerfall, dinge tun
      }
   });
}


oder du setzt die id über das tatsächliche ID-Attribut

Code:
var id = $(button).attr("id");


oder du übergibst im onclick die id:

Code:
<button type="button" onclick="javascript:myAjaxCall({$medicalservice.id});" class="btn btn-info light" />


oder, oder, oder....


BTW: Es ist allgemein nicht gut, dass du ein Element hast, welches ein ID-Attribut hat, welches öfter als ein mal vorkommt. Denn ein Element ist mit einem ID-Attribut "einzigartig" sozusage n
Back to top
View user's profile Send private message Visit poster's website
demo1987
Smarty Rookie


Joined: 16 Apr 2014
Posts: 9

PostPosted: Wed Feb 04, 2015 12:40 pm    Post subject: Reply with quote

Vorher hatte ich es völlig falsch da ich die Schleife gar nicht berücksichtigt hatte, aber deien methode:

Code:
<button type="button" onclick="javascript:myAjaxCall(this);" class="btn btn-info light" data-selectedid="{$medicalservice.id}" />


gefällt mir am besten, das probiere ich nachher mal aus

Danke Very Happy
Back to top
View user's profile Send private message
Display posts from previous:   
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.    Smarty Forum Index -> Language: German All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group
Protected by Anti-Spam ACP