[JavaScript] Werte eintragen lassen

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Phil333, 19. Februar 2009 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 19. Februar 2009
    Werte eintragen lassen

    Hallo an alle!

    Ihr lacht mich jetzt sicherlich aus, aber ich komm nicht weiter bei folgenden Problem:

    Ich habe ein Formular bei dem man zuerst eine Zahl eingibt und es werden nach klick auf "weiter" x Zeilen mit jeweils 2 textinputs gemacht.
    Dort dürfen auf keinen fall Schreibfehler entstehen, wesshalb sie das attribut readonly haben.
    Ein popup bekommt die Zeilennummer und listet die unterschiedlichen Einträge der Datenbank auf.
    Bei einem klick auf den Button "einfügen" werden die beiden Werte in die beiden inputs geschrieben und das popup schließt sich.

    Hier ein verstümmelter Code zu Veranschaulichung, der aber dennoch funktioniert:

    Ausgangsfomular:
    PHP:
    <? php

      
    echo  "<form  method='POST' name='wk' action='" . $_SERVER [ 'PHP_SELF' ]. "'>" ;

    if(
    $_POST [ 'submit' ]== 'Weiter' )
    {
      
    $anzahl = $_POST [ 'anzahl' ];
      echo 
    "<center><table>" ;
      echo 
    "<tr><td>Artikelnummer</td><td>Ek-Preis pro Artikel</td></tr>" ;
      for(
    $m = 1 $m  <=  $anzahl $m ++)
      {
        echo 
    "<tr>" ;
        echo 
    "<td><input type='text' name='Artikelnummer" . $m . "' value='' readonly><a href='#' onclick=\"javascript:window.open('auswahl.php?feld=" . $m . "','Auswahl','scrollbars=yes, resizable=yes, width=550, height=600, left=200,top=200')\">auswahl</a></td>" ;
        echo 
    "<td><input type='text' name='PreisArtikel" . $m . "' value='' readonly> €</td>" ;
        echo 
    "</tr>" ;
      }
      echo 
    "<tr><td colspan='4'><center><input type='hidden' name='anzahl' value=' $anzahl '><input type='submit' name='submit' value='Fertig'></td></tr>" ;
      echo 
    "</table>" ;
      echo 
    "</form>" ;
      exit;
    }

    ?>
    <center>
    <form method='POST' action="<?php  echo  $_SERVER [ 'PHP_SELF' ];  ?>">
    <table >
     <tr>
      <td><center><br>Anzahl unterschiedlicher Artikel:<br><br><input type='text' name='anzahl'><input type='submit' name='submit' value='Weiter'></td>
     </tr>
    </table>
    </form>
    Auflistung:
    PHP:
    <? php

    $feld
    = $_GET [ 'feld' ];
    $feld1 = $feld * 2 - 2 ;
    $feld2 = $feld * 2 - 1 ;

    echo 
    "<html><head>

     <script language='JavaScript'>
        function schreibe(a, b, c, d) {
        opener.document.forms[0].elements[a].value = b;
             opener.document.forms[0].elements[c].value = d;
             window.close();
        }
    </script>
    </head>"
    ;

    echo 
    "<form method='POST' action='" . $_SERVER [ 'PHP_SELF' ]. "'>" ;
         echo 
    "<table border='1'>" ;

    include (
    "../verbindungen/verbindung_Inventur.php" );
    $sql  "SELECT ID, EK FROM  $Tabelle " ;
    $result  mysql_query ( $sql ) OR die( mysql_error ());
    while(
    $row  mysql_fetch_assoc ( $result ))
    {

      
    $ID = $row [ 'ID' ];
      
    $EK = $row [ 'EK' ];

      echo 
    "<tr>" ;
      echo 
    "<td><center>" . $ID . "</td>" ;
      echo 
    "<td><center>" . $EK . "</td>" ;
      echo 
    "<td><input type='button' value='einfügen' onClick='schreibe(" . $feld1 . "," . $ID . ", " . $feld2 . ", " . $EK . ")'></td>" ;
      echo 
    "<tr>" ;
    }
    echo 
    "</table>" ;
    ?>
    Das ist ja alles schön und gut und funktioniert auch.
    Leider wird an manchen stellen nun ein Button erstellt.
    Somit funktioniert das mir dem zählen der elemente über JS natürlich nicht mehr.

    Desshalb hatte ich die Idee das über id's zu steuern.
    Beim Forumular also:
    PHP:
    < input type = 'text'   id = 'Artikelnummer".$m."'  name = 'Artikelnummer".$m."'  value = ''  readonly >

    und

    < input type = 'text'  id = 'PreisArtikel".$m."'  name = 'PreisArtikel".$m."'  value = ''  readonly >
    und das Ganze dann im Popup mit getElementById anzusprechen, aber es geht leider nicht.
    Das Popup öffnet sich zwar, aber es schreibt die Werte nicht rein und schließt sich auch nicht.

    Das ganze sieht jetzt so aus:

    PHP:
    $Artikelnummer = "Artikelnummer" . $feld ;
    $PreisArtikel = "PreisArtikel" . $feld ;
    echo 
    "<html><head>

     <script language='JavaScript'>
        function schreibe(a, b) {
        opener.document.getElementById(
    $Artikelnummer ).value = a;
             opener.document.getElementById(
    $PreisArtikel ).value = b;
             window.close();
        }
    </script>


    und unten dann natürlich

    <input type='button' value='einfügen' onClick='schreibe("
    . $ID . "," . $EK . ")'>

    Ich wär euch super dankbar für jede Hilfe!!
     
  2. 19. Februar 2009
    AW: Werte eintragen lassen

    hi,

    du kannst inputs auch wie folgt erstellen:
    Code:
    <input type="text" name="txt[]" value="x">
    <input type="text" name="txt[]" value="y">
    
    php ist in der lage den name als array zu sehen.
    Code:
    for ($i = 0; $i < count ($_POST['txt']); $i++){
     echo $_POST['txt'][$i];
    }
    
    den code hab ich jetzt nicht getest.
    sollte aber gehen.
    vielleicht kommst du damit besser zu recht.
     
  3. 19. Februar 2009
    AW: Werte eintragen lassen

    hmmm

    und dann mit getelementbyname drauf zugreifen oder wie?
    Die id wird ja richtig vergeben, nur kann ich mit JS nicht drauf zugreifen...
     
  4. 19. Februar 2009
    AW: Werte eintragen lassen

    du kannst ja trotzdem id's vergeben
     
  5. 19. Februar 2009
    AW: Werte eintragen lassen

    hmmm
    das problem liegt ja nicht am formular.
    das JS im popup macht probleme..
    IDs vergeben ist kein problem

    "Die id wird ja richtig vergeben, nur kann ich mit JS nicht drauf zugreifen..."
     
  6. 19. Februar 2009
    AW: Werte eintragen lassen

    Schau mal im Firefox in der Fehlerkonsole nach, dies dürfte dir Aufschluss darüber geben, was im JS schief gegangen ist. Falls nicht poste den Eintrag hier,
     
  7. 20. Februar 2009
    AW: Werte eintragen lassen

    es kommt "Artikelnummer1 is not definied" (vom popup)
    der quelltext zum script sieht so aus

    HTML:
    <script language='JavaScript'>
     function schreibe(a, b) {
     opener.document.getElementById(Artikelnummer1).value = a;
     opener.document.getElementById(PreisArtikel1).value = b;
     window.close();
     }
    </script>
    ich weiß nicht warum aber greift scheinbar nicht auf das formular zu
    im formular kann ich folgendes im quellcode über firefox sehen

    HTML:
    <input type='text' id='Artikelnummer1' name='Artikelnummer1' value='' readonly>
     
  8. 26. Februar 2009
    AW: Werte eintragen lassen

    kann damit jemand was anfangen?
     
  9. 27. Februar 2009
    AW: Werte eintragen lassen

    hmm ich kenns nur aus prototype aber wenn ich auf n element mit seiner id zugreifen will dann musste man doch die ID unter hochkomma setzen oder täusch ich mich da komplett?

    Code:
    <script language='JavaScript'> function schreibe(a, b) { opener.document.getElementById('Artikelnummer1').value = a; opener.document.getElementById('PreisArtikel1').value = b; window.close(); } </script>
    
     
  10. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.