PHP und JavaSkript - Übergabe von Variablen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP und JavaSkript - Übergabe von Variablen

    Hallo alle miteinander!

    ich muss für meinen Prof. einen Buchshop basteln und komme beim Warenkorb nicht weiter.

    Ich lasse mit PHP aus einem Standartformular für jeden Titel den der Käufer in seinem Warenkorb zu liegen hat dynamisch ein Formular erstellen, mit dem er dann noch mehr Bücher des gleichen Typs kaufen kann oder aber das Buch löscht. Natürlich heißen dann alle Formulare gleich, bis auf einen angehängten index.

    Um mir die Feldabfrage vor den Abschicken zu erleichtern habe ich "versucht" :-) den korbindex, welchen ich bei jedem neu angelegten Formular hochzählen, an die aufgerufene javaskript Funktion "onsubmit=\"return submitcheckwarenkorb($korbindex)" zu übergeben.

    in der Funktion selber ist die Variable allerdings scheinbar nicht mehr bekannt. Dort nenne ich sie "function submitcheckwarenkorb(titel)" und möchte das die entsprechende Zahl in die if- Anweisungen an der entsprechenden Stelle eingefügt wird.

    Wie ich die Variable allerdings einfüge hab ich noch nicht raus bekommen. Und ich habwirklich schon einiges versucht, aber es will nicht gelingen.

    Hier etwas Quelltext zur Veranschaulichung:

    Erst der PHP - Code

    PHP-Code:
    for($korbindex 0$korbindex $anzahl$korbindex++) {
    echo 
    "...
    .
    .
    .
    <form action=\"bookshop.php\" method=\"post\" name=\"warenkorbchange
    $korbindex\" target=\"_self\" id=\"warenkorbchange$korbindex\" onsubmit=\"return submitcheckwarenkorb($korbindex)\">
    <table width=\"100\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">
    <tr valign=\"baseline\">
    <td width=\"20\">
    <input name=\"buchanzahlchangewk\" type=\"text\" id=\"buchanzahlchangewk\" value=\"
    $buchanzahlwk\" size=\"2\" maxlength=\"1\"></td>
    <td width=\"80\" align=\"right\">
    <input name=\"isbnwk\" type=\"hidden\" va lue=\"
    $isbnwk\">
    <input type=\"submit\" name=\"Submit\" value=\"&auml;ndern\"></td>
    </tr>
    </table>
    </form>
    .
    .
    .
    ..."


    So und hier das dazugehörige JavaSkript

    <script language="JavaScript1.2" type="text/JavaScript">
    var abgeschickt = false;
    function submitcheckwarenkorb(titel) {
    if(document.warenkorbchange[titel].buchanzahlchangewk.value == "") {
    alert("Bitte eine Zahl eingeben!");
    document.&warenkorbchange[titel].buchanzahlchangewk.focus();
    return false;
    }
    if(document.warenkorbchange[titel].buchanzahlchangewk.value.indexOf('1') == -1) {
    if(document.warenkorbchange[titel].buchanzahlchangewk.value.indexOf('2') == -1) {
    if(document.warenkorbchange[titel].buchanzahlchangewk.value.indexOf('3') == -1) {
    if(document.warenkorbchange[titel].buchanzahlchangewk.value.indexOf('4') == -1) {
    if(document.warenkorbchange[titel].buchanzahlchangewk.value.indexOf('5') == -1) {
    if(document.warenkorbchange[titel].buchanzahlchangewk.value.indexOf('6') == -1) {
    if(document.warenkorbchange[titel].buchanzahlchangewk.value.indexOf('7') == -1) {
    if(document.warenkorbchange[titel].buchanzahlchangewk.value.indexOf('8') == -1) {
    if(document.warenkorbchange[titel].buchanzahlchangewk.value.indexOf('9') == -1) {
    if(document.warenkorbchange[titel].buchanzahlchangewk.value.indexOf('0') == -1) {
    alert("Bitte nur Zahlen von 0 bis 9 eingeben!");
    document.warenkorbchange[titel].buchanzahchangelwk.focus();
    return false;
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    if(abgeschickt == false) {
    abgeschickt = true;
    return true;
    }
    else {
    return false;
    }
    }
    //-->
    </script>


    An die Stelle wo ja die Zahl hin müsste hab ich mal ersatzhalber [titel] geschrieben. Aber da muss bestimmt was anderes hin.

    Ich hoffe ich habe mich verständlich ausgedrückt und von euch weiß einer was ich besser machen kann.

    Gruß MichaK.

  • #2
    Vielleicht solltest Du ein array benutzen auch dein javaScript sieht ziemlich nach overhead total aus
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      Array, versteh ich nicht. Das nimmt man doch zur ablegen von mehreren Werten. Ich will aber lediglich einen Wert übergeben. Und überhaupt war diese Antwort mehr als hilfreich, weil jegliche Erklärung fehlt. :-(

      Gruß MichaK.

      PS. Sorry für den Breiten Text. Weiß auch nicht was da bei der Eingabe passiert ist. LOL

      Kommentar


      • #4
        Jo, bin fündig geworden.
        für alle die es Interessiert hier ein Lösungsvorschlag.

        Ich übergebe beim Funktionsaufruf this.
        This ist ein reserviertes Wort in Javascript und stellt einen Zeiger auf das aufrufende Objekt da.
        So denke ich mir dass jedenfalls.

        Nun braucht man in der Aufgerufenen Funktion lediglich das Feld des Formulars explizit
        ansprechen und kann es auswerten.

        Diese Vorgehensweise vereinfacht auch ungemein den Quellcode.

        Hier noch auszugsweise mein Quellcode:

        Hier wird die Funktion aufgerufen....

        PHP-Code:
        <form action=\"bookshop.php\" method=\"post\" name=\"warenkorbchange\" 
        target=\"_self\" id=\"warenkorbchange\"
         onsubmit=\"return submitcheckwarenkorb(this)\">
        .
        .
        .

        Wie ihr sehen könnt übergebe ich beim Aufruf der Funktion
        "submitcheckwarenkorb(this)" das Statement this


        Hier das Javascript.....

        <script language="JavaScript1.2" type="text/JavaScript">
        <!--
        function submitcheckwarenkorb(formular) {
        if(formular.buchanzahlchange.value == "") {
        alert("Zum löschen des Buches geben Sie Bitte ein x ein!");
        formular.buchanzahlchange.focus();
        return false;
        }
        }
        .
        .
        .
        //-->
        </script>

        Hier in der Funktion selber nenne ich das übergeben Statement formular und setze es
        einfach an die Stelle wo vorher "documet.warenkorbchange" stand.

        Das ist alles was man machen muss. Vielleicht hilft es ja einem.

        Gruß MichaK.

        Kommentar

        Lädt...
        X