segas: Hidden text-input value durch onChange eines anderen inputs

Problem:
Ich würde gerne bei einer Änderung in einem Input-Feld einem hidden Input einen Wert zuweisen, den ich beim Absenden des Formulars verarbeiten kann.

HTML-Form:

<form method='post' action='rekorde-update.php' name='rekordeform'>  
[...]  
<input type='text' value='1' name='minuten".$get_record_count."' class='rekordbox' onChange='document.rekordeform.updated".$get_record_count.".value=yes'>  
[...]  
<input type='hidden' name='updated".$get_record_count."' value='no'>  
[...]  
</form>
<?php  
  
for($i = 0; $i < 64; $i++){  
	$var = "updated".$i;  
	if($_POST[$var] == "yes"){  
		echo "Rekord ".$i." geändert";  
  
	}  
}  
  
?>

Nun, ich versuche also beim Ändern des Feldes "minuten" dem entsprechenden hidden Feld "updated" den Wert "yes" zuzuweisen.
Allerdings funktioniert genau das nicht, denn im php-Teil bekomm ich immer "no" - für jedes Feld, egal ob etwas geändert wurde - und somit nicht in die if-Abfrage.

Ich hab mich schon dumm und dämlich gesucht, ob man hidden inputs überhaupt ändern kann, ob es übergeben wird, usw.
Weiß da jemand was?

Ist wahrscheinlich was ganz banales, was ich zu dieser späten Stunde übersehe, wenn es eigentlich funktioniert ..

  1. Der php-Teil stammt aus der Datei rekorde-update.php
    und ich bin mir bewusst, dass im HTML-Teil php-Variablen vorkommen, das ist aber alles korrekt. Habe es nur nicht richtig gekennzeichnet, falls sich jemand über die Code-Schnippsel wundert.

    1. Hi,

      und ich bin mir bewusst, dass im HTML-Teil php-Variablen vorkommen, das ist aber alles korrekt.

      nein, ist es nicht. Korrekt ist es, den clientseitig interessanten Teil ohne auch nur die Spur jedweden serverseitigen Codes zu nennen. Was sagen eigentlich die Fehlerkonsolen Deiner Browser?

      Cheatah

      --
      X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
      X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
      X-Will-Answer-Email: No
      X-Please-Search-Archive-First: Absolutely Yes
      1. Danke an all die, die sinnvolle Antworten geschrieben haben, die wenigstens einen vernünftigen Anstoß geben.
        Über die inhaltlosen Belehrungen verlier ich mal lieber kein Wort. Dass man für solche Bemerkungen seine Zeit verschwendet, nur weil jemand ein kleines Problem (spät nachts wohlgemerkt, wenn normale Menschen müde sind/schlafen und nicht aktiv sind, weil sie nichts anderes zu tun haben) auf das Wissen über 27 Sprachen verzichtet .. einfach nur daneben.

        1. Hallo,

          Danke an all die, die sinnvolle Antworten geschrieben haben, die wenigstens einen vernünftigen Anstoß geben.

          das wären also nach meiner Einschätzung in diesem Thread vier Leute.

          Über die inhaltlosen Belehrungen verlier ich mal lieber kein Wort.

          Das ist gut - solche kann ich nämlich hier auch nicht finden.

          Dass man für solche Bemerkungen seine Zeit verschwendet, nur weil jemand ein kleines Problem (spät nachts wohlgemerkt, wenn normale Menschen müde sind/schlafen und nicht aktiv sind, weil sie nichts anderes zu tun haben) auf das Wissen über 27 Sprachen verzichtet .. einfach nur daneben.

          Wie meinen? Da kann ich nicht ganz folgen.

          Ciao,
           Martin

          --
          Niemand lebt allein von seinen Träumen.
          Aber wer träumt, lebt noch.
          Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
          1. Es gibt in den Antworten genügend Belehrungen oder unpassende Kommentare.
            Ich brauche niemanden, der mir sagt, ich müsse alles selbst rausfinden und lernen. Ich kann selbst genügend für meine Zwecke und meinen Beruf, da muss ich mir nicht noch weitere Sprachen für irgendwelche Webdinge aneignen, nur weil ich mal ein kleines Problem habe.
            Wenn es ein Problem wäre, das öfter auftaucht, würde ich mir schon selbst helfen, keine Panik. Dann würde ich sicher nicht in ein Forum rennen, wo man sich helfen lassen kann, wenn dann doch keiner der User helfen möchte, sondern nur die Regeln der Kunst runterrattert.

            Zum Code selbst:
            Es muss mir auch niemand sagen, dass onChange nur mit Funktionen klappt (eh, was?), wenn ich eine Checkbox gecheckt kriege, aber den Value eines hidden Inputs nicht geändert bzw. nicht korrekt per Post übermittelt bekomme.
            Und es ist mit Sicherheit nicht falsch eine php-Variable in ein echo einzubetten, das HTML enthält. Nur weil es Leuten, die sich den Kram zur Lebensaufgabe gemacht haben, nicht ganz passt, weil es fein säuberlich getrennt sein muss, ist es noch lange nicht falsch .. und ich kann schlecht 3 verschiedene Sprachen in _eine_ "richtige" Formatierung über ein Code-Tag bringen.

            Also, wenn mir jemand sagen könnte, wieso
            onChange='document.rekordeform.checked".$get_record_count.".checked=true'
            etwas tut und
            onChange='document.rekordeform.updated".$get_record_count.".value=yes'
            nichts tut, wäre ich demjenigen sehr verbunden.
            An php liegt es anscheinend nicht, weil die checkbox lustigerweise auf das onChange reagiert und alles in einem echo liegt und somit php auch funktioniert und auch noch korrekt im Browser ausgegeben wird, z. B. updated2 usw.

            Eine simple Antwort und alle haben mehr Zeit für andere Dinge.

            1. Mahlzeit segas,

              Und es ist mit Sicherheit nicht falsch eine php-Variable in ein echo einzubetten, das HTML enthält.

              Doch. Wenn es sich um ein rein Client-seitiges Javascript-Problem handelt, dann ist sämtlicher PHP-Code irrelevant und beim Verständnis eher hinderlich. Merke: beim Verständnis *Deinerseits* eher hinderlich!

              Also tu Dir selbst bitte einmal den Gefallen und liefere ein einziges Mal den HTML-Code eines Deiner Texteingabefelder *so wie er im Browser ankommt*. Nicht anders. Nur *genau so*.

              Ich verspreche Dir, dass Du dann *sofort* verstehen wirst, wo Dein Problem liegt.

              Also, wenn mir jemand sagen könnte, wieso
              onChange='document.rekordeform.checked".$get_record_count.".checked=true'
              etwas tut und
              onChange='document.rekordeform.updated".$get_record_count.".value=yes'
              nichts tut, wäre ich demjenigen sehr verbunden.

              Die letztere der beiden von Dir genannten Zeilen tut doch etwas. Sie tut genau das, was Du ihr sagst. Sie weist dem genannten Formularelement den Wert der Variablen namens "yes" zu.

              An php liegt es anscheinend nicht, weil die checkbox lustigerweise auf das onChange reagiert und alles in einem echo liegt und somit php auch funktioniert und auch noch korrekt im Browser ausgegeben wird, z. B. updated2 usw.

              An PHP *kann* es auch gar nicht liegen(1), da es sich um ein rein Client-seitiges Javascript-Problem handelt. Ist das so schwer zu verstehen?

              Eine simple Antwort und alle haben mehr Zeit für andere Dinge.

              Eine zielführende Antwort, so dass Du Dein eigentliches (und grundsätzliches) Problem verstehst und *selbst*(2) beheben kannst, und alle haben *noch* mehr Zeit für andere Dinge, weil Du den gleichen Fehler nämlich nie wieder machen wirst (und deshalb auch nie wieder deswegen hier im Forum nachfragen wirst).

              (1) (Herrgottsakramentnochmal!)

              (2) Hm, wofür steht das "SELF" in "SELFHTML" noch gleich?

              MfG,
              EKKi

              --
              sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
            2. Hallo,

              Es gibt in den Antworten genügend Belehrungen oder unpassende Kommentare.

              Sorry, aber unpassend ist allein dein Ausgangsposting:
              Du schilderst ein JavaScript-Problem im JavaScript-Forum und zeigst keine einzige Silbe von deinem vermutlich problematischen JavaScript-Code! Was soll das? Hier kann doch niemand hellsehen.

              "Es ist wie wenn du fragst: Ich schicke einen Brief nach Paris aber er kommt dort nicht an. Woran kann das liegen?" Du sagst dabei nicht, wie genau du den Brief verchickst – per UPS, Post, Brieftaube, Flaschenpost... – sondern nur, dass der Briefkasten in Paris leer ist, und öffnest ihn zum Beweis. Der Briefkasten ist aber völlig irrelevant, nur der Weg dorthin ist von Belang.

              Dann beklagst du dich auch noch, dass die Antworten dein Problem nicht lösen, sondern dir nur sagen, wie du es besser schildern kannst.

              *kopfschüttel*

              Gruß, Don P

  2. moin,

    Ich hab mich schon dumm und dämlich gesucht, ob man hidden inputs überhaupt ändern kann, ob es übergeben wird, usw.
    Weiß da jemand was?

    Aber Sischr. OnChange ändern heißt, du brauchst eine Funktion in JavaScript, die das macht. Das steht alles in SELFHTML wie das geht.

    Hotti

    --
    Dass die Bayern ein Raucherproblem haben, wusste ich nicht; ich dachte immer, die haben ein Alkoholikerproblem.
  3. Mahlzeit segas,

    darauf, dass bei Client-seitigen (Javascript-)Problemen Server-seitiger (PHP-)Code nicht weiterhilft, wurdest Du ja bereits hingewiesen.

    <input type='text' value='1' name='minuten".$get_record_count."' class='rekordbox' onChange='document.rekordeform.updated".$get_record_count.".value=yes'>

    Aber abgesehen davon schau Dir bitte mal genau an, was Du als Wert im Attribut "onchange" notiert hast - dabei muss es sich um Javascript-Code handeln.

    Angenommen, Dein PHP würde fehlerfreien HTML-Code an den Browser schicken, würde da in etwa stehen:

    Weise dem Wert des Elements namens "updated".$get_record_count im Formular namens "rekordeform" den Inhalt der Variablen namens "yes" zu.

    Du möchtest Dich *dringend* zum Thema "Kontextwechsel" informieren!

    Allerdings funktioniert genau das nicht, denn im php-Teil bekomm ich immer "no" - für jedes Feld, egal ob etwas geändert wurde - und somit nicht in die if-Abfrage.

    "Funktioniert nicht" funktioniert nicht. Was steht in der Fehlerkonsole Deines Browsers?

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  4. Hi!

    Ich hab mich schon dumm und dämlich gesucht, ob man hidden inputs überhaupt ändern kann, ob es übergeben wird, usw.
    Weiß da jemand was?
    Ist wahrscheinlich was ganz banales, was ich zu dieser späten Stunde übersehe, wenn es eigentlich funktioniert ..

    Ich könnte dir sagen, was falsch ist, aber du brauchst das Wissen, wie du sowas aufspürst, denn das benötigst du in ähnlichen Situationen immer wieder. Wunsch und Wirklichkeit stimmen bei dir nicht überein. Das erste ist, nach Fehlermeldungen Ausschau zu halten. Jeder Browser bietet mehr oder weniger gut eine Fehlerkonsole an. Öffne diese, wenn du denkst, ein Javascript-Problem zu haben. (Sie immer zu öffnen, wenn man entwickelt wäre auch keine schlechte Idee.) Wenn die nichts sagt, überzeuge dich vom Erfolg deiner Aktionen, mach Kontrollausgaben. Lass dir den Wert der eben gesetzten Eigenschaft mit alert() ausgeben. Wenn am Client alles in Ordnung scheint, mach die Kontrollausgaben im Server: var_dump($_POST); Steht drin, was du erwartest? Das error_reporting auf E_ALL (und display_errors auf on) zu stellen hilft auch oft, unscheinbare Fehler zu finden.

    Diese Kurzanleitung enthält mehr als du für den jetzigen Fehler brauchst. Übe die genannten Handlungen trotzdem, man braucht sie beim Programmieren ständig.

    Lo!

  5. Hi!

    Ich hab mich schon dumm und dämlich gesucht,

    Das ist äußerst bedauerlich;-)

    ob man hidden inputs überhaupt ändern kann,

    Das kann man und es ist übliche Praxis. Schaue Dir einmal an oder zeige hier, was im Browser ankommt - _nur_ das ist für Dein Problem relevant!

    off:PP

    --
    "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)