DB über Form einlesen und in Form schreiben

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

  • DB über Form einlesen und in Form schreiben

    Hallo Leute,

    gibt es eigentlich eine bessere Methode als, wenn man aus einer DB infos auslesen möchte und diese in ein bestehendes Formular einfügen möchte, das komplette Formular doppelt bzw. mehrfach auf die Seite zu packen ( einmal für Eingabe und einmal für Ausgabe ) ?

    Im Beispiel wird -> $firma ins Forumlar ausgegeben, jedoch sollen alle Felder später gefüllt werden.

    PHP-Code:
    <?
    include "./head.php";
    include("./inc/config.inc.php");
    include("./inc/db_connect.inc.php");
    ?>
    <br>
    <tr>
     <td width="100%">
    <?
    if ($nummer == 'suchen') {
    $sql = "SELECT * FROM kunden WHERE kunde = '$kunde_neu'";
    $res = mysql_query($sql) or die(mysql_error());
    $zeile =mysql_fetch_array($res);
    $firma=$zeile["firma"];
    $vorname=$zeile["vorname"];
    $nachname=$zeile["nachname"];
    $strasse=$zeile["strasse"];
    $plz=$zeile["plz"];
    $ort=$zeile["ort"];
    $tel=$zeile["tel"];
    $fax=$zeile["fax"];
    $email=$zeile["email"];
    ?>

    <br><br>
       <form name="kundennr" method="post">
      <div align="left">
       <table border="0" width="605">
        <tr>
          <td width="70" align="right">Knd.-Nr.</td>
          <td width="170"><input type="text" name="kunde_neu" size="26">
        </td>
          <td width="117"align="right">Rep.-Status.</td>
          <td width="188"><input type="text" name="T1" size="24"></td>
        </tr>
        <tr>
          <td width="70" align="right">Anrede</td>
          <td width="170"><input type="text" name="T1" size="29"></td>
          <td width="117" align="right">Interne Auftr. Nr.</td>
          <td width="188"><input type="text" name="T1" size="24"></td>
        </tr>
        <tr>
          <td width="70" align="right">Firma</td>
          <td width="170"><input type="text" name="T1" size="29" value="<? echo $firma; ?>"></td>
          <td width="117" align="right">Externe Auftr.-Nr.</td>
          <td width="188"><input type="text" name="T1" size="24"></td>
        </tr>
        <tr>
          <td width="70" align="right">Vorname</td>
          <td width="170"><input type="text" name="T1" size="29"></td>
          <td width="117" align="right">Rep.-Art</td>
          <td width="188"><input type="text" name="T1" size="24"></td>
        </tr>
        <tr>
          <td width="70" align="right">Nachname</td>
          <td width="170"><input type="text" name="T1" size="29"></td>
          <td width="117" align="right">Kaufdatum</td>
          <td width="188"><input type="text" name="T1" size="24"></td>
        </tr>
      (...)
    <?
    } else {
    ?>

      <br><br>
       <form name="kundennr" method="post">
      <div align="left">
       <table border="0" width="605">
        <tr>
          <td width="70" align="right">Knd.-Nr.</td>
          <td width="170"><input type="text" name="kunde_neu" size="26">
          <input type="hidden" name="nummer" value="suchen">
          <input type="submit" class="submit" name="absenden" value="?"></td>
          <td width="117"align="right">Rep.-Status.</td>
          <td width="188"><input type="text" name="T1" size="24"></td>
        </tr>
        <tr>
          <td width="70" align="right">Anrede</td>
          <td width="170"><input type="text" name="T1" size="29"></td>
          <td width="117" align="right">Interne Auftr. Nr.</td>
          <td width="188"><input type="text" name="T1" size="24"></td>
        </tr>
        <tr>
          <td width="70" align="right">Firma</td>
          <td width="170"><input type="text" name="T1" size="29" value="<? echo $firma; ?>"></td>
          <td width="117" align="right">Externe Auftr.-Nr.</td>
          <td width="188"><input type="text" name="T1" size="24"></td>
        </tr>
        <tr>
          <td width="70" align="right">Vorname</td>
          <td width="170"><input type="text" name="T1" size="29"></td>
          <td width="117" align="right">Rep.-Art</td>
          <td width="188"><input type="text" name="T1" size="24"></td>
        </tr>
        <tr>
          <td width="70" align="right">Nachname</td>
          <td width="170"><input type="text" name="T1" size="29"></td>
          <td width="117" align="right">Kaufdatum</td>
          <td width="188"><input type="text" name="T1" size="24"></td>
        </tr>
        (...)
    <?} ?>
    und eine andere Frage, wenn ich eine Session für User über mehrere Seiten machen möchte, müsste ich eigentlich nur Passwort und Kundennummer ( als ID ) als Session registrieren
    PHP-Code:
    session_register("$kunde"); und session_register("$passwort"
    und auf allen anderen Seiten -> session_start(); und eine DB-Abfrage
    in einer IF/ELSE Schleife ob die Session-Daten mit denen in der DB übereinstimmt.

    Liege ich da richtig ?

    Danke und Gruss Ela

  • #2
    ein und auslesen der daten aus ner db

    falls es dir hilft, ich verwende:
    PHP-Code:
    //gehe mal davon aus das hier ein Resultat da ist
    if (resultat)
    {
    echo 
    "<table border=1><tr>";
    // zum einlesen in array
    $row my_sql_fetch_array(resultatMYSQL_ASSOC);
    while (
    $field key($row))
    {
    echo 
    '<th>' ucwords($field) . '</th>';
    next($row);
    }
    echo
    "</tr><tr><td>";
    echo 
    implode (</td><td>",$row);
    echo"
    </td></tr>";
    // auslesen und ausgeben des arrays
    while (
    $row = mysql_fetch_array(resutat, MYSQL_ASSOC))
    {
    echo"
    <tr><td>";
    echo implode("
    </td></tr>", $row);
    echo"
    </td></tr>";
    }
    echo "
    </table>";
    } else {
    hier habe ich eine fehlerausgabe wenn kein resultat da is!
    }
    //schliesse dbverbindung 

    Ich hoffe es hilft weiter

    Kommentar


    • #3
      mhhh das versteh ich nicht, vielleicht habe ich mich auch falsch ausgedrückt, hier mal ein kleines Beispiel.

      Tabellenabfrage für den Eintrag Firma :
      PHP-Code:
      <?
      if ($nummer == 'suchen') {
      $sql = "SELECT * FROM kunden WHERE kunde = '$kunde_neu'";
      $res = mysql_query($sql) or die(mysql_error());
      $zeile =mysql_fetch_array($res);
      $firma=$zeile["firma"];
      ?>
      // Hier wird nach der DB-Abfrage der Inhalt '$firma' in die Eingabebox geschrieben
      <table><tr>
       <td width="70" align="right">Firma</td>
       <td width="170"><input type="text" name="T1" size="29" value="<? echo $firma; ?>"></td>
      </tr></table>
      <? } ?>
      // Hier wird durch die Eingabe der Kundennummer die Firmendaten aus der DB gelesen und soll dann ausgegeben werden.
      <form name="kundennr" method="post">
      <table><tr>
            <td width="70" align="right">Knd.-Nr.</td>
            <td width="170"><input type="text" name="kunde_neu" size="26">
            <input type="hidden" name="nummer" value="suchen">
            <input type="submit" class="submit" name="absenden" value="?"></td>
      </tr>
      <tr>
        <td width="70" align="right">Firma</td>
        <td width="170"><input type="text" name="T1" size="29" value=""></td>
      </tr></table>
      (...)
      </form>
      Bsp. http://www.ebayauktionshaus.de/platen/eingabe.php
      Bitte mal in die Kundennummer 123 eingeben und auf das Fragezeichen klicken, dann sollen die Kundendaten ausgelesen werden und die Rep.-Daten können dann eingegeben werden, ohne dass ich die ganzen Eingabefelder doppelt ausgeben muss einmal für die Eingabe und Einmal für die Ausgabe. Klar es ginge auch ,dass nur nach der Knd.-Nr. gefragt würde und dann erst diese Seite aufgerufen wird, aber das wäre nicht im Sinne des Erfinders. Ich hatte auch schon versucht eine Maske zu erstellen die dann individuell aufgerufen wird, hatte aber auch nicht geklappt.

      Ich hoffe auf eine Hilfestellung auch was die Session angeht, ich habe gestern die ganze Nacht verbracht und dieses Froum durchsucht jedoch nichts wirklich brauchbares gefunden auch im Codeschnippsel das Usermanagment mir mal angeschaut und einige TUT's aber es klappt nicht.

      In der Loginmaske müsste ja folgendes stehen :
      PHP-Code:

       session_start
      ();
       
      $username=$_SESSION["name"];
       
      session_register('$username');
       
      $password=$_SESSION["password"];
       
      session_register('$password');
       echo
      "<meta http-equiv=\"Refresh\" content=\"0 url=admin.php\">"
      Wenn ich nun -> session_start(); in der Datei admin.php eingebe müsste ich doch mit
      PHP-Code:
      echo $username
      und
      PHP-Code:
      echo $password 
      die Ausgaben bekommen, jedoch wird nichts angezeigt, was mache ich falsch ?????

      Gruss und Danke Ela

      Kommentar


      • #4
        zu deiner $_SESSION['...'] frage: -> tausche mal die doppelten mit einfachen anführungszeichen aus.

        zu deiner ebay-seite:

        wenn ich das script richtig interpretier hast du dort zwei "submit" möglichkeiten: einmal suchen und das andere mal auftrag absenden.

        dies kann man mit selbstreferenzierende scripte umsetzen und muss entsprechende kontrollstrukturen einbauen.

        z.b. www.link.de?kontrollstruktur=wert

        und entsprechnde dieser kontrollstruktur kannst du dann dein formular afbauen bzw. steueren ob daten ausgelesen und angezeigt werden oder in der datenbank abgeändert.

        hoffe das hat dir weitergeholfen
        Zuletzt geändert von jochenj; 16.05.2004, 10:28.

        Kommentar


        • #5
          Danke für Deine Hilfe, bezüglich den Cookies bekomme ich folgende
          Fehlermeldung :
          Warning: session_start(): Cannot send session cookie - headers already sent by (output started at http://www.ebayauktionshaus.de/platen/head.php:5) in /home/www/web157/html/platen/admin/admin2.php on line 13
          In der Zeile 13 steht : session_star(); .
          Muss ich eigentlich noch irgendwas anderes machen wie z.B. mit dem Link eine ID übertragen ( habe ich gelesen ) ?

          Mit dem anderen ist es im Prizip wie ich es mir mit einer Maske gedacht hatte und ich mit allen Funktionen darauf zugreifen könnte - Oder ?

          Aber wie mache ich das ? Denn ich kann ja mit einem Link auf diese Datei nicht alle Info's übertragen und noch dazu sagen was ich mit der Maske machen will ?

          Danke gruss Ela

          Kommentar


          • #6
            vor session start darf keine ausgabe an den browser erfolgen.

            ausgaebn wären z.b. echo oder printbefehle, html etc. so wie es aussieht rufst du die funktion session-start() erst in zeile 13 auf. kontrolliere mal die ersten 12 zeilen und eventuell "include" dateien die zuvor stehen, ob eine ausgabe erzeugt wird.

            die session id wird im regelfall automatisch an den link angehängt, brauchst ud somit nicht seperat zu machen.

            wenn ich dich richtig verstanden haben, dann hast du ein leeres formular. der benutzer hat die möglichkeit, neue daten einzutrag bzw. vrhanden daten zu ändern -> in dem fall musst du deinem script eine gewisse art von inteligenz mitgeben, damit es selbst entscheidet was wann zu machen ist.

            erster aufruff -> leere felder
            eingaeb der id und betätigen des fragezeichens -> hohle daten aus der datenbank
            benutzer hat diese daten geändert -> update
            benutzer hat nue daten ohne fragezeichen eingetragen -> insert

            momentan weis ich noch nicht, was du wirklich erreichen willst mit deinem script bzw. ob ich dich richtig verstehe, deshalb bin ich mir nicht sicher ob es richtig ist, was ich dir vorschlage

            Kommentar


            • #7
              Hallo jochenj,

              danke für Deine Bemühungen mir zu helfen.
              Das mit der Sessionklappt nicht wirklich, nun habe ich den session_start() in die erste Zeile gesetzt, jedoch wird mir der Inhalt der Variabel in der session nicht angezeigt.

              index.php (loginmaske)
              PHP-Code:
              <?
              session_start();
              include("../inc/config.inc.php");
              include("../inc/db_connect.inc.php");
              include($url."head.php");
              ?>
              <br>
              <tr>
               <td width="100%">
              <?
              if ($admin == 'login') {
              $result = mysql_query("SELECT * FROM admin");
              $logindat = mysql_fetch_array($result);
              if ($logindat[user]=="$name" && $logindat[passwort]=="$password") {


               $username=$_SESSION['name'];
               session_register('$username');
               $password=$_SESSION['password'];
               session_register('$password');
               echo"<meta http-equiv=\"Refresh\" content=\"0 url=admin2.php\">";
              (...)
              ?>
              admin2.php [Adminmaske]
              PHP-Code:
              <?
              session_start();
              include("../inc/config.inc.php");
              include("../inc/db_connect.inc.php");
              include($url."head.php");
              ?>
              <br>
              <tr>
               <td width="100%">
               <table border="0" class="text" cellspacing="4" align="center" width="250">
              <tr>
               <td width="471" colspan="4">
              <?
              echo $username;
              echo $password;
              ?>
              </td>
              </tr>
              </table>
              Eigentlich müsste doch nun über die session der username und das passwort ausgegeben werden !

              Zur zweiten Sache :
              erster aufruff -> leere felder
              eingaeb der id und betätigen des fragezeichens -> hohle daten aus der datenbank
              benutzer hat diese daten geändert -> update
              benutzer hat nue daten ohne fragezeichen eingetragen -> insert
              ... richtig genau so möchte ich es machen und das geben der Inteligenz ( wie soll eine Frau einem Script inteligenz geben ? **grins**) gebe ich mit IF/ELSE Schleifen, dass heist ich sage wenn das Fragezeichen geklickt wurde und das Script soll mir die Daten aus der DB holen dann ist diese Schleife dafür verantwortlich.
              PHP-Code:
              if ($nummer == 'suchen') { (...) 
              und nun kommen wir zum Problem ich müsste das Formular ja einmal im Script haben, wenn er mir das leere anzeigt und ich müsste es einmal haben mit dem Befehl
              PHP-Code:
               value="<? echo $tel; ?>"
              hinter jedem Eingabefeld aber diesmal innerhalb der if-Schleife. Wenn ich es nur innerhalb der Schleife einsetze, dann würde mir das Script beim ersten Aufruf nichts anzeigen. D.h. ich müsste die komplette Formularzeilen einmal für Datenausgabe, Dateneingabe und leeraufruf reinpacken. Ist kein Problem ob das Script nun 50 oder 250 Zeilen hat, jedoch versuche ich ja zu lernen und dachte mir es gäbe eine bessere Mehode.

              Gruss und Danke Ela

              Kommentar


              • #8
                Kuckmal ob du register_globals drin hast, ist nähmlich ab PHP4.. ausgestellt

                dann musst du die Sessionvariablen so deklarieren

                $_SESSION['userame'] = 'username'


                und so auch wieder abrufen

                $username = $_SESSION['username'];

                Kommentar

                Lädt...
                X