Ankündigung

Einklappen
Keine Ankündigung bisher.

input Feld per Button Klick füllen:

Einklappen

Neue Werbung 2019

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

  • input Feld per Button Klick füllen:

    Hi,

    Ich habe als Hausaufgabe eine Aufgabe, wo ich ein Input-Feld, was deaktiviert sein soll mit einen Zufallswert aus der Datenbank füllen soll.

    Dies habe ich auch fertig und klappt.

    SQL-Syntax:
    Code:
    SELECT name
    FROM zufalls_namen
    ORDER
    BY RAND( )
    LIMIT 1
    PHP-Code:
      <tr>
        <td>Zufallsname: <img src="refresh.gif" style="cursor: pointer; cursor: hand;" id="zufall" border="0" alt="Zufallsnamen Generieren" /></td>
        <td><input type="text" disabled="disabled" name="zufall" id="zufall"
          value="<?php print $record->zufall?>" />
    </td>
      </tr>
    Wenn ich das Formular jetzt aufrufe, habe ich in diesen Input Feld bereits einen Namen drin.

    Nun kommt leider die Zusatzaufgabe (die ich aber nicht unbedingt machen muß... aber will).
    "Erweitern Sie Ihr Script so, das der Zufallsname neu generiert werden kann ohne das die Seite neu geladen wird."

    Da ich es gerne schlank halten möchte, würde ich das mit JS umsetzen wollen. AYAX wird sicherlich auch gehen... aber dann müßte sicherlich erst was einbinden müssen.

    Fragen:
    1: Kann ich das gewünschte mit JS umsetzen ?
    Oder schafft das PHP sogar (soweit mir bekannt nur mit Reload[?])
    2: Wäre JS die schlankste Lösung oder gibt es noch was anderes, womit ich das gewünschte besser/einfacher umsetzen kann ?

    3: Falls 1 + 2 darauf hinauslaufen, das JS das am besten umsetzen kann: Nach was müßte ich googeln. Welche Funktionen kommen hier zum einsatz ?
    Gff. ein Link wäre gaaaanz schön (Aber nicht unbedingt notwendig... kann auch selbst suchen)

    Danke


  • #2
    Zitat von noop Beitrag anzeigen
    Fragen:
    1: Kann ich das gewünschte mit JS umsetzen ?
    Oder schafft das PHP sogar (soweit mir bekannt nur mit Reload[?])
    Ja, kannst und musst du. Wenn du dabei allerdings auf AJAX verzichten willst, bleibt dir eigentlich nur, alle Zufallsnamen von vorneherein auszulesen (Ansatz für die Übergabe nach JavaScript siehe unten). Sind das nur 20 Stück, sicherlich eine akzeptable Lösung für deine Aufgabe, bei hunderten oder tausenden Namen kommst du um weitere Requests (AJAX) wohl nicht herum.

    PHP-Code:
    <script type="text/javascript">
    var namen = <?php echo json_encode($array_mit_allen_namen); ?>;
    </script>
    @fschmengler - @fschmengler - @schmengler
    PHP Blog - Magento Entwicklung - CSS Ribbon Generator

    Kommentar


    • #3
      Zitat von fab Beitrag anzeigen
      ... bei hunderten oder tausenden Namen kommst du um weitere Requests (AJAX) wohl nicht herum.
      Schlecht. Den Import den wir damals durchgeführt hatten beinhaltete über 62.500 an Einträgen.

      In der Aufgabenstellung ist aber nicht erwähnt, welche Sprache benutzt werden soll. Und auch nicht, wieviel Speicher man verwenden darf.

      Da wir zur Zeit aber nur PHP und JS behandeln, soll es wohl in JS umgesetzt werden. Nur so ein Blödsinn würde ich mir erst garnicht "anlernen" wollen.
      62K an Datensätze im Speicher.... <igitt>

      Soweit war ich jetzt schon mal. Dummerweise halt nur ein DB-Satz.

      PHP-Code:
      <?php
          $zufall 
      CFG::sqlObject("
            SELECT  *
            FROM    `zufall`
            ORDER
              BY    RAND()
            LIMIT 1
          "
      );
      ?>

        <form name="formular"> 
        <input type="hidden" name="hiddentext" value="<?php echo $zufall->name?>"> 
        <input type="text" name="text" value=""> 
        <input type="button" name="click" onClick="document.formular.text.value=document.formular.hiddentext.value;">
      </form>
      Beim klick wird mir der Name in das Input-Feld übergeben.

      Kann ich darauf mit AJAX aufbauen oder muß was komplett neues her ?

      (P.s. AJAX hatten wir wenns hochkommt... 4-6h mal behandelt. Ich kann also noch nicht mal behaupten, das Grundwissen vorhanden ist. Hoffe, das es keine allzu große Funktion wird)

      Kommentar


      • #4
        Deshalb ist es wohl eine Zusatzaufgabe. Wenn du trotz dieser 4-6h kein ausreichendes Grundwissen hast, dann lass es lieber.
        @fschmengler - @fschmengler - @schmengler
        PHP Blog - Magento Entwicklung - CSS Ribbon Generator

        Kommentar


        • #5
          Zitat von fab Beitrag anzeigen
          ... dieser 4-6h kein ausreichendes Grundwissen hast, dann lass es lieber.
          In der Hoffnung, das das gewünschte nicht allzuviel an Grundwissen vorraussetzt würde ich es trotzdem gern versuchen.

          Vllt. erbarmt sich ja auch jm. und greift mir ein bissel unter die Arme und nennt mir schon mal die Befehle, die zum Einsatz kommen müssen.
          Dann kann ich mich in diese Richtung schonmal einlesen und ggf. schon was zusammenbauen.


          ** Aufgeben, nur weil mal als Azubi noch kein Wissen hat... is glaube ich komplett der falsche Weg. Ein bissel eigeninitative meinerseits wird glaube ich überall vorrausgetzt **

          Kommentar


          • #6
            Zitat von noop Beitrag anzeigen
            einlesen ... eigeninitative
            Genau das ist der Punkt. Irgendwas scheinst du ja gelernt zu haben, warum liest sich das gerade dann wie "Erklärt mir, wie AJAX funktioniert" ?

            Edit: Ein Tipp, schau dir mal jquery an, wenn du nicht alles zu Fuß machen willst/musst
            @fschmengler - @fschmengler - @schmengler
            PHP Blog - Magento Entwicklung - CSS Ribbon Generator

            Kommentar


            • #7
              Zitat von fab Beitrag anzeigen
              "Erklärt mir, wie AJAX funktioniert" ?
              Wenn HA nächstes Jahr fertig sein soll = sicherlich wäre dann die Zeit ausreichend, AJAX im Detail zu verstehen und komplett eigenständige Programme zu schrieben.

              Da aber nun Abgabe nächste Woche wäre, habe ich nur die Zeit mich in das Grundlegenste einzulesen. <= Was ich (wenn ich hier nicht gar tippe) auch schon mache.

              Kommentar


              • #8
                Und weiter geht es dann hier:
                neuen Datensatz per Klick holen - Forum: phpforum.de
                @fschmengler - @fschmengler - @schmengler
                PHP Blog - Magento Entwicklung - CSS Ribbon Generator

                Kommentar


                • #9
                  Dass du jetzt auch noch in anderen Foren gleichzeitig fragst - und dabei dort auch noch über das Forum hier lästerst, bringt dir gleich eine weitere negative Bewertung von mir ein. Wenn hier „alles Kacke“ ist - warum bleibst du dann nicht gleich dort?


                  Zu deiner Aufgabe: Das muss man nicht unbedingt per AJAX lösen, es geht auch mit „primitiverem“ JavaScript.
                  Du kannst mit DOM-Methoden ein neues SCRIPT-Element erzeugen, und im HEAD einhängen - dann wird dessen Inhalt geladen und ausgeführt.
                  Als Adresse kannst du auch ein PHP-Script angeben - das muss dann einen passenden Content-Type-Header ausgeben, gefolgt von JavaScript-Code.
                  Dieser JavaScript-Code kann entweder reiner Daten-Code sein (bspw. Wertzuweisung an eine Variable), oder auch direkt ausführbarer Code (Zuweisung eines neuen Inhaltes an ein Formularfeld).
                  Den Inhalt der Variable/Wertzuweisung kann PHP dann zufällig generieren/aus der DB lesen.

                  Damit hast du noch keinen „Schutz“ dagegen drin, dass Namen ggf. doppelt vorkommen. Wenn du den auch noch haben willst, bietet es sich an, serverseitig mit einer Session zu arbeiten, die den Part, eindeutige Zufallswerte bereitzustellen, übernimmt.

                  Kommentar


                  • #10
                    Also auf die dusslige Antwort (sorry für dusslig) "Ihr sollt meine HA machen" geh ich jetzt mal nicht drauf ein. Wüste nicht, das gewisse Probleme sich durch die blose Nennung einer Funktion von alleine lösen. Aber wie gesagt... no comment dazu.

                    Hier vvlt. mal ein gegen-Beweiss, das ich nicht (popelnd) vorm Rechner sitze und F5 drücke und darauf hoffe, das endlich mal ein vollständer Code gepostet wird, der dann auch noch funzt.

                    Article.php
                    PHP-Code:
                    class CFG_Article
                    {
                       static public function 
                    createName()
                      {
                        
                    $newName CFG::sqlObject("
                          SELECT  *
                          FROM    `zufall`
                          ORDER
                            BY    RAND()
                          LIMIT 1
                        "
                    );

                        return 
                    $newName->name;
                      }

                    artikel.js
                    Code:
                    CFG_Admin_Article = {
                      elBtnName: null
                    
                    
                      ,init: function()
                      {
                        if ((this.elBtnName = $('btn_zufall')))
                        {
                          this.elBtnName.addEvent('click', this.evtClickName.bind(this));
                        }
                      }
                    
                      ,evtClickName: function()
                      {
                        new Request.JSON({
                           url: '/control-article.php'
                          ,data: {action: 'createName'}
                          ,onComplete: this.evtCompleteName.bind(this)
                        }).send();
                      },
                      evtCompleteName: function(r)
                      {
                        console.log(r);
                        $('zufall').set('value', r.name);
                      }
                    window.addEvent('domready', CFG_Admin_Article.init.bind(CFG_Admin_Article));

                    control-article.php
                    PHP-Code:
                    $action = @$_REQUEST['action'];
                    $rsp    = new stdClass();

                    switch (
                    $action)
                    {
                      case 
                    'createName' :
                        
                    $rsp->name DFP_Article::createName();
                        break;
                    }

                    print 
                    json_encode($rsp); 
                    form.php
                    PHP-Code:
                      <tr>
                        <td>Zufallsname: <img src="refresh.gif" style="cursor: pointer; cursor: hand;" id="zufall" border="0" alt="Zufallsnamen Generieren" /></td>
                        <td><input type="text" disabled="disabled" name="zufall" id="zufall"
                          value="<?php print $record->zufall?>" />
                    </td>
                      </tr>

                    Das ist mein derzeitiger Stand. Es wird sicherlich einiges unnötig sein bzw. man könnte was zusammenfassen. Aber das stammt alles aus verschiedene anderen Aufgaben, die ich jetzt irgendwie zu kombinieren versuche.

                    Zu deiner Aufgabe: Das muss man nicht unbedingt per AJAX lösen, es geht auch mit „primitiverem“ JavaScript.
                    Ahja... Hatte mich schon gewundert, das eine Zusatz-HA ein Bereich anscheindet, was zuvor noch garnicht gelernt worden ist.

                    Kommentar


                    • #11
                      Eines zur Klärung: AJAX ist JavaScript, das Apronym steht für Asynchronous JavaScript and XML.
                      Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                      Kommentar

                      Lädt...
                      X