eingabe kombiniert mit abfrage

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

  • eingabe kombiniert mit abfrage

    hallo,

    ich hoffe, ich bin hier richtig (für mich hängt meine frage mit einem projekt zusammen, daher poste ich hier. kann also auch bedeuten, daß ich noch weitere fragen habe. allerdings auch gerne die lösungen verstehen würde, so daß ich es bei einem evtl nächsten mal alleine kann - hoffentlich nicht zuviel erwarte, bin am php lernen und noch ziemlich am anfang).

    worum geht es ?
    es geht um eine art mitgliederverwaltung, jedes mitglied hat eine kontonummer (extra nicht die ID ist).
    in der datenbank habe ich nun 3 tabellen: eine für die mitgliederdaten, eine für eine art anzeigen und eine für 'buchungen'.

    ein formular um die mitgliederdaten einzugeben und anzeigen einzugeben, habe ich (wenn auch noch verbesserungsideen habe).

    bzgl dem buchungsformular habe ich nun ein problem :
    ich würde gerne die kontonummer der zwei von der 'buchung' betroffenen mitgliedern eingeben und dann zur kontrolle deren name auftauchen sehen, bevor ich das formular weiter ausfülle.
    also eine art nicht beendete eingabe mit einer abfrage kombiniert.
    keine ahnung wie man so etwas nennt, googlen brachte mich leider nicht weiter.

    das formular sieht derzeit so aus :

    PHP-Code:
    code wieder entfernt 
    es ist also nur ein formular, wo ich kontonummer und mitgliedsname getrennt einfügen könnte und ein normaler datensatz abgespeichert würde.

    eine einfache abfrage kann ich zwar machen, aber wie kann ich diese abfrage (kontonummer => mitglied mustername) in ein formular einbinden ?
    daß wenn ich die kontonummer eingebe, automatisch der dazugehörige name auftaucht ?

    würde mich über anregungen/tips oder wie man das nennt sehr freuen.

    viele grüße, skys
    Zuletzt geändert von skys; 13.02.2008, 23:29.

  • #2
    Das was du meinst, ist eine Art Autovervollständigung, die man mit AJAX umsetzen kann. Hier ein kleines Tutorial

    Die Unterschiede zwischen client- und serverseitiger Programmierung sind Dir scheinbar nicht bekannt, zumindest konnte man dies Deinem Beitrag so entnehmen. Deswegen wäre es angebracht, wenn Du Dich auch darüber erst einmal Schlau machen würdest.

    Kommentar


    • #3
      hallo reallife,

      und danke für deine antwort.
      habe mich schon gefragt, ob es das falsche forum ist oder tatsächlich keiner eine php-lösung hat.

      der unterschied zwischen client- und serverseitige programmierung ist mir schon klar, nur leider nützt mir diese kenntnis noch nicht viel, wenn es um das eigentliche code aufsetzen geht.

      ajax hatte ich mir auch schon angesehen, soweit meine kenntnisse reichen, ist ajax eine ganz feine sache - aber auch da bin ich wieder nur völliger anfänger. auch an java script dachte ich, aber da gilt das gleiche.
      ich hatte gehofft, daß es mit php machbar wäre, denn je mehr extras ich brauche, desto mehr befürchte ich, daß die wahrscheinlichkeit sinkt, auch selbst diese 'teile' sicher(!) neu kombinieren zu können. soll ja auch ein sicherer code sein.

      ich bin eigentlich überzeugt davon, daß hier jemand eine lösung kennt.
      aber der punkt ist einfach der : ich mache es ehrenamtlich und möchte nur um ein paar probleme lösen zu können, nicht erst 3 programmiersprachen lernen. sorry, aber das wird mir zuviel.
      ich möchte punktuell tipps, anregungen, gerne natürlich auch code, an dem es mir erklärt wird.

      das tutorial werde ich mir gerne ansehen.
      aber vermutlich werden dabei eher mehr fragen entstehen als geklärt werden. denn ich habe nur eine konkrete frage und suche eine konkrete lösung zu genau diesem problem.

      noch eine frage : ist es mit reinem php wirklich so viel schwerer oder gar nicht umsetzbar oder nicht empfehlenswert ?

      viele grüße, skys

      Kommentar


      • #4
        *freu* ich habe eine lösung

        unorthodox und sicher nicht im sinne eines programmierers, aber erfüllt den zweck :
        im eingabeformular unter dem formular eine tabelle mit den vorhandenen nummern und zugehörigen mitgliedern anzeigen lassen, so daß der, der das formular ausfüllt, zumindest dort eine kontrollmöglichkeit seiner nummerneingabe hat.

        ich weiß, ist eine absolute kurve um das eigentliche problem, aber auf jeden fall schneller und unkomplizierter als meine anderen ansätze (incl ajax oder java script).
        ergo : nicht festbeißen an einem lösungsweg

        viele grüße, skys

        Kommentar


        • #5
          Guck dir mal den Autocompleter von Scriptaculous an, vielleicht ist das ja ok für dich!

          Kommentar


          • #6
            hallo php-desaster,

            danke für deine antwort und den tipp. im moment ist mein kopf zu müde, aber ich seh es mir morgen nochmal genauer an.

            bei dem oben genannten problem hilft es glaube ich weniger (nur meinem ersten blick nach, bitte nicht festnageln), da ich zu jeder nummer genau einen namen habe (ähnlich wie bei einer ID) und somit nur diesen einen namen angezeigt haben möchte - quasi als kontrolle, daß man die richtige nummer hat und tatsächlich diesen menschen meint.

            werde morgen auf jeden fall nochmal danach sehen - bin um jeden tipp froh.
            ___

            inzwischen habe ich etwas weitergemacht und bin bei den nächsten problemen gelandet :

            1) wenn ich eine art buchung eingebe, von -> an, dann hätte ich natürlich gerne, daß sich die betreffenden kontostände entsprechend der buchung ändern.
            noch hoffe ich, daß ich es selbst austüffteln kann, aber merke schon, daß es evtl eine nummer zu groß für mich ist - obwohl sicher nicht schwierig

            2) die darstellung einer abfrage verschiedener db-tabellenfelder in einer (html-)tabelle plus sortiermöglichkeit (php) oder wenigstens fürs erste einer vorgegebenen sortierung.
            -> mich eben gerade daran verkünstelt habe und leider nicht hinbekommen.

            3) über eine art verifizierung einer eingabe nachgedacht habe.
            angenommen 3 personen geben daten ein :
            a) daß jede person einen anderen link nutzt und dies in der db irgendwie vermerkt wird
            b) oder daß jede person bei jeder eingabe eines datensatzes auch ein nur ihr bekanntes kennwort eingeben muß (größerer aufwand für die eingebende person)

            puh, also noch viel zu tun in anbetracht der tatsache, daß ich kaum ahnung habe.

            falls jemandem tipps einfallen, zb wo man etwas gut nachlesen kann oder beispiele findet, von denen ich auf mein problem schließen könnte, würde ich mich sehr freuen !

            vielen dank und eine gute nacht, skys

            Kommentar


            • #7
              Original geschrieben von skys
              noch eine frage : ist es mit reinem php wirklich so viel schwerer oder gar nicht umsetzbar oder nicht empfehlenswert ?
              Es ist gar nicht umsetzbar, eben aus dem Grund, dass PHP vom Server interpretiert wird und du in deinem Fall (reinen) HTML-Code zur Darstellung angezeigt bekommst. Möchtest Du jetzt on-the-fly Daten anzeigen lassen, während der User das Formular ausfüllt, die sich nur mit einer bestimmten Eingabe verknüpfen lassen (z.B. Kto-Nr.), dann wirst Du um Ajax nicht drum herum kommen. Ich kann Dir dafür auch gerne ein Beispiel Script zur Verfügung stellen, soll jetzt nicht das Problem darstellen.
              Ich meld mich später nochmal...

              Kommentar


              • #8
                hi reallife,

                danke für deine antwort/erklärung.

                und vielen dank auch für dein angebot mit dem beispielscript. das ist sehr nett.
                bevor du dir aber die mühe machst, noch 2 sätze dazu :
                ich habe mich in ajax jetzt wirklich noch nicht eingearbeitet, dh evtl müßte ich trotzdem noch etwas nachfragen.

                nun mal sehen, wie ich heute weiterkomme...

                viele grüße, skys

                Kommentar


                • #9
                  Soo...

                  Bin da gestern leider nicht mehr zu gekommen, ich hab jetzt leider keine Zeit das großartig zu erklären, da ich noch Sachen packen muss...

                  Aber du kannst dir ja gerne schon mal ein paar Fragen notieren und dann gehen wir die am Montag, wenn ich wieder zurück bin, durch.

                  Entpack das ganze mal, verschieb es in dein "htdocs" Verzeichnis oder auf dein Webserver und öffne die "index.html".

                  EDIT:
                  Gib bei der Kto-Nr. einfach mal "100" ein und spiel mit den Pfeiltasten ein wenig rum... mit Enter bestätigtst du deine Auswahl...
                  Angehängte Dateien
                  Zuletzt geändert von reallife; 14.02.2008, 22:02.

                  Kommentar


                  • #10
                    hallo reallife,

                    vielen dank für deine mühe und die zip-datei.
                    ich nummeriere die fragen schon mal durch ;-)
                    dir ein schönes wochenende.

                    nun habe ich etwas zu dem buchungsvorgang an sich ausprobiert.
                    ich stelle es mir so vor, daß beim absenden des formulars eine andere php-datei aufgerufen wird, die für den buchungsvorgang verantwortlich ist (obwohl - eigentlich müßte man das ja auch in die gleiche datei packen können wie das formular).

                    jedenfalls folgende frage : bin ich mit folgendem code annähernd auf der richtigen spur ?

                    PHP-Code:
                    <?php
                    include("inc.php");

                    $abfragevon "SELECT ktostand FROM tabelle 
                    WHERE ktonr = '
                    $vonkto'";
                    $abfragean "SELECT ktostand FROM tabelle 
                    WHERE ktonr = '
                    $ankto'";

                    $ergebvon mysql_query($abfragevon);
                    $ergeban mysql_query($abfragean);

                    $vonktostandneu $ergebvon $betrag;
                    $anktostandneu $ergeban $betrag;

                    $aendernvon UPDATE tabelle SET ktostand '$vonktostandneu' 
                    WHERE ktonr LIKE vonkto;
                    $aendernan UPDATE tabelle SET ktostand '$anktostandneu' 
                    WHERE ktonr LIKE ankto;

                    $update mysql_query($aendernvon$aendernan);


                    if (
                    $update == true)
                    {
                    header("Location: buchentest.php");
                    }
                    else
                    {
                    echo 
                    "Kontrolle nötig.";
                    }

                    @
                    mysql_close($connect);
                    ?>
                    wenn ganz verkehrt, bitte ruhig auch sagen.

                    viele grüße, skys
                    Zuletzt geändert von skys; 14.02.2008, 23:14.

                    Kommentar


                    • #11
                      bin ich mit folgendem code annähernd auf der richtigen spur ?
                      Einmal ein Anfang. Jetzt musst du das Form noch an diese Datei senden, um die Daten entgegenzunehmen. Bei einem Formular meist via $_POST-Array. Verwende mysql_real_escape_string auf alle Variabeln die von aussen kommen und in DB-Abfragen verwendet werden. Beim header() sollte man mit kompletten Pfadangaben arbeiten:
                      PHP-Code:
                      header('Location: http://deineDomain.de/pfad/zur/datei.php'); 
                      Die mysql Verbindung musst du nicht explizit schliessen, das passiert am Ende des Scripts automatisch. Und so als Tipp für weitere Projekte mit mysql: Fang die möglichen Fehler ab
                      PHP-Code:
                      $sql 'SELECT id,daten FROM table';
                      mysql_query($sql) OR die(mysql_error().'<br />'.$sql); 
                      Gruss

                      tobi
                      Zuletzt geändert von jahlives; 14.02.2008, 23:23.
                      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                      Kommentar


                      • #12
                        hallo tobi,

                        vielen dank für deine korrekturen !

                        komplette pfadangabe ist kein problem.

                        eventuelle sql-fehler abfangen würde dann wohl auf folgende ergänzungen im code hinauslaufen :

                        PHP-Code:
                        $ergebvon mysql_query($abfragevon);
                        mysql_query($ergebvon) OR die(mysql_error().'<br />'.$ergebvon);

                        $ergeban mysql_query($abfragean);
                        mysql_query($ergeban) OR die(mysql_error().'<br />'.$ergeban);

                        $update mysql_query($aendernvon$aendernan);
                        mysql_query($update) OR die(mysql_error().'<br />'.$update); 
                        was den $_POST-array betrifft, bin ich mir unsicher, ob du das meintest :
                        PHP-Code:
                        mysql_query("insert into tabelle (`buchid` ,
                         `vonkto`, `ankto` , `datum` , `ort` , `leistung` ,
                         `punktebetrag` , `kennwort` , `zeit`) 
                        values ('', '" 
                        .  $_POST['vonkto'] . "', '" .  $_POST['ankto'] . "', 
                        '" 
                        .  $_POST['datum'] . "', '" .  $_POST['ort'] . "',
                         '" 
                        .  $_POST['leistung'] . "', '" .  $_POST['punktebetrag'] . "',
                         '" 
                        .  $_POST['kennwort'] . "', '" time() . "')"); 
                        dies steht schon im eigentlichen formular.
                        vermutlich meintest du das plus den noch fehlenden hinweis im eigentlichen formular, daß diese daten an datei xy übergeben werden sollen ? - wie ich das korrigieren kann, muß ich erst noch etwas brüten.
                        verwendung von mysql_real_escape_string bin ich auch noch am lesen.

                        was ist eigentlich korrekter/sicherer (außer, daß $ eine variable ist) :
                        WHERE ktonr = '$ankto' oder WHERE ktonr LIKE ankto ?
                        das kommt mir auch noch nicht 100% richtig vor.

                        viele grüße, skys

                        edit:
                        bin gerade etwas irritiert, da ich bisher nirgends einen array für nötig hielt geschweige denn angelegt habe. (vor längerer zeit mich mal mit den diversen arrayarten befaßt hatte)
                        bin am googeln, aber falls du noch etwas zu dem $_POST-array sagen könntest, in welchem bezug du das meintest ?
                        kann/muß/sollte ich solche daten nur mittels array übergeben ?
                        also zb : $daten = array("vonkto","ankto","punktebetrag"); ? *url fehlt noch*
                        Zuletzt geändert von skys; 15.02.2008, 00:45.

                        Kommentar


                        • #13
                          Hallo skys
                          dies steht schon im eigentlichen formular.
                          Genau diese Variabeln solltest du mit mysql_real... "behandeln" bevor du sie an die DB übergibst d.h. die POST Werte an diese Funktion übergeben
                          was ist eigentlich korrekter/sicherer (außer, daß $ eine variable ist) :
                          kontonr = wert würde ich in jedem Fall bevorzugen
                          da ich bisher nirgends einen array für nötig hielt geschweige denn angelegt habe
                          Ohne Arrays wirst du nicht weit kommen

                          Gruss

                          tobi
                          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                          Kommentar


                          • #14
                            hallo tobi,

                            Ohne Arrays wirst du nicht weit kommen
                            hm - schon mal gut zu wissen...

                            ich versuche mal mit ein paar fragen etwas einzukreisen, in welche richtung ich weitergehen muß :

                            sind sessions zur datenübergabe nötig ? (ich dachte nein)

                            besteht ein wirklicher unterschied zwischen :

                            $vonkto = $_POST['vonkto'];
                            $ankto = $_POST['ankto'];
                            $betrag = $_POST['betrag'];

                            und

                            $_POST['vonkto'] = $vonkto
                            $_POST['ankto'] = $ankto
                            $_POST['betrag'] = $betrag

                            liest php also zb von links nach rechts und macht es daher einen unterschied ?

                            mir schwant, daß ich folgendes brauchen kann :

                            $daten = array("vonkto", "ankto", "betrag");

                            echo $daten[0];
                            echo $daten[1];
                            echo $daten[2];

                            oder

                            echo "Geberkonto ist : ".$daten[0]."<br />\n";
                            echo "Empfängerkonto ist : ".$daten[1]."<br />\n";
                            echo "Betrag ist : ".$daten[2]."<br />\n";

                            allerdings brauche ich ja eigentlich keine echo-ausgabe, oder ?
                            ich muß nicht unbedingt viel lesen (als luxus evtl gerne), aber in erster linie sollte der rechnerische buchungsvorgang funktionieren.

                            auch eine frage : die eingaben, die für den (rechnerischen) buchungsvorgang nicht nötig sind (also zb ort, datum, leistung) muß ich doch nicht übergeben - die werden einfach so in die buchungstagelle eingetragen ?

                            hm, wie das mit der datenübergabe funktionieren soll oder auch mit mysql_real_escape_string - da komme ich irgendwie gar nicht weiter.

                            mysql_real_escape_string($vonkto);
                            mysql_real_escape_string($ankto);
                            mysql_real_escape_string($betrag);

                            aber wo einfügen ?

                            *hängenbleib*

                            etwas ratlose grüße gerade, skys
                            Zuletzt geändert von skys; 15.02.2008, 05:24.

                            Kommentar


                            • #15
                              liest php also zb von links nach rechts und macht es daher einen unterschied ?
                              Der Variable links von = wird der Wert rechts von = zugewiesen. Also von dem her ist das schon ein Unterschied.
                              auch eine frage : die eingaben, die für den (rechnerischen) buchungsvorgang nicht nötig sind (also zb ort, datum, leistung) muß ich doch nicht übergeben - die werden einfach so in die buchungstagelle eingetragen ?
                              Wenn du diese Daten in der DB haben willst, dann musst du sie irgendwie übergeben. Wenn der Kunde diese Werte im Formular ändern kann, dann müssen diese Werte ja vom Form an das verarbeitende PHP-Script gegeben werden.
                              aber wo einfügen ?
                              mysql_real_escape_string() funzt nur im Kontext von mysql. Also muss diese Funktion direkt in die Query eingebaut werden
                              PHP-Code:
                              $sql "INSERT INTO table (row,tow) VALUES('".
                              mysql_real_escape_string($_POST['wert'])."','".mysql_real_escape_string($_POST['wert1'])."')"
                              Gruss

                              tobi
                              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                              Kommentar

                              Lädt...
                              X