mittels AJAX wert aus der DB abrufen.

  • Hi,

    ich bin grad etwas am üben mit PHP und nun auch Ajax.

    I will folgendes versuchen.


    In meiner DB gibt es eine spalte "akutellerpreis".

    ich will zu nächst nur diesen wert (per echo) auf meiner seite anzeigen lassen.

    der Ajax Befehl soll sich alle 5sek. wiederholen (mittel timeout function)


    Wenn ich nun den wert in der DB ändere, sollte man das "automatisch" nach wenigen Sekunden auf der Seite sehen.


    Wie gehe ich am Besten vor. PHP verbinden zum DB funktioniert alles.... Nur mit Ajax weiß ich icht wie ich starten soll.

  • Danke ich hab was nützliches in netz gefunden was auch funktioniert:

    PHP
    <div id="anz1"><?php include('database.php'); ?></div>
    
    
    <script>
            setInterval(function(){
                $.get('database.php', function(data) {
                    $('#anz1').html(data);
                });
            }, 5000)
    </script>

    Also über die database.php wird der wert von der DB gezogen und dann auf meiner Seite angezeigt.


    Ich will nun den Wert in einem Textfeld (Inputfeld) mit der ID "anz1" anzeigen lassen...

    Das heißt ich muss diese zeile ersezten:


    PHP
    <div id="anz1"><?php include('database.php'); ?></div>

    Nur wie?

  • Da bist Du ja schon auf dem richtigen Wege. Du brauchst nur ein Inputfeld statt eines Div und musst den Wert mit val() statt hmtl() eintragen.

    Code
    <input id="anz1"></input>
    Code
    $.get('database.php', function(data) {
                    $('#anz1').val(data);
                });
  • Hab jetzt den Code wie folgt verändert:

    Leider wird im Input Feld nichts angezeigt.

    Woran kann dass nun noch liegen?

  • Vielen Dank. hab ich wirklich übersehen...

    klapp nun auch soweit. Der wert aus der DB wird angezeigt, und ändert sich automatisch,

    nur hängt da immer noch was drann...

    sieht so aus:

    1.50<!doctype html><html><head>............

    wie gesagt, der Wert 1.50 passt, das danach gehört da nicht hin. (Hab gesehen das wird von meiner database.php seite mitausgelesen)

  • Das ist die Ausgabe von deinem PHP-Skript. Bei html() ist das Grundgerüst unsichtbar, weil der Text geparst wird. Bei val() wird jedoch der gesamte Text angezeigt. Du musst diesen im Skript löschen und nur den Wert ausgeben.

  • Super. klappt nun alles so, wie ich mir das Vorgestellt habe ;)

    Nun noch ein Zusatz:

    Ich habe Konditionen für mein Inputfeld gesetzt. : d.H. Ist der Wert größer als 1, wird der Hintergrund grün, ist der Wert kleiner dann wird er rot.


    Nun funktioniert es, dass sich die zahl ändert, nur die Farbe der Box ändert sich nicht mehr mit. -> wie kann ich das Inputfeld refreshen ?

  • So sieht's im Detail aus:


  • Code
    $("#amp1").trigger('change');

    Das ist schon die Lösung: Diese Zeile im success-Callback einfügen und es sollte funktionieren.

    Code
                $.get('database.php', function(data) {
                    $('#anz1').val(data);
                    $("#amp1").trigger('change');
                });

    *confused* #amp1 oder #anz1?

  • Ich habe nun in meiner database.php (die ja ausgeben werden soll) mittlerweile mehrere variable:

    Aktueller Code:

    PHP
    <input id="amp1"><?php include('database.php'); ?></Input>


    Wie schaffe ich es nun, von meiner database.php nur eine bestimmte variable abzufragen?


    so hat es leider nicht funktioniert:

    PHP
    <input id="amp1"><?php include('database.php , echo $meinevariable'); ?></Input>
    • Entweder indem Du nur diese eine mit echo ausgibst und sonst nichts
    • Oder indem Du sie in ein Array einträgst, nach JSON kodierst und mit Javascript auswertest.


    Edit: Unklar: Benutzt Du nur Ajax und includierst Du die Datei? In deinen letzten Beispielen sehe ich letzteres.

  • Ok ich versuche halbwegs professionell (und das als Anfänger) zu antworten :)


    mein kompletter Code wie aus den obigen Beispielen sieht wie folgt aus:

    • Entweder indem Du nur diese eine mit echo ausgibst und sonst nichts

    und wenn das jetzt mit einem einfachen echo funktioniert von meiner database.php eine betimmte variable auszugeben,

    wär ich schon glücklich.... nur weiß ich nicht wie.

  • Danke, jetzt ist es klar, Du benutzt Ajax, um das Feld zyklisch zu aktualisieren.

    Zitat

    und wenn das jetzt mit einem einfachen echo funktioniert von meiner database.php eine betimmte variable auszugeben,

    wär ich schon glücklich.... nur weiß ich nicht wie.

    Dann poste doch Mal den Code der database.php, dann kann man dir zeigen, wie es geht.

  • Der Code in meiner database.php sieht wie folgt aus:

    PHP
    <?php
    $db = mysqli_connect("host", "sql", "password", "database");
    
    $anzeige1 = mysqli_query($db, "SELECT wert  as 'wert001' FROM pros001 ");
    $rowanzeige1 = mysqli_fetch_object($anzeige1);
    
    $anzeige2= mysqli_query($db, "SELECT wert  as 'wert002' FROM pros002 ");
    $rowanzeige2= mysqli_fetch_object($anzeige2);
    ?>


    mit "echo $rowanzeige1->wert001;" bzw. mit "echo $rowanzeige2->wert002;" funktioniert auch die Ausgabe auf dieser seite.


    nur will ich nun diese beiden variablen in unterschiedlichen Inputfelder (#anz1 bzw. #anz2) auf meiner Hauptseite ausgeben lassen.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!