daten aus mysql db in formular lesen

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • daten aus mysql db in formular lesen

    Hallo,

    ich fange gerade an mir PHP und MySQL anzulesen und habe mein erstes Script geschrieben.

    Aus einer Datenbank, die ich mit phpMyAdmin fülle, werden die einzelnen Felder in ein Formular gelesen.

    Das passiert hier:
    Code:
    <?php require("connect.php");?>
    <table border="1" cellpadding="0" cellspacing="0" width="98%">
      <form method="POST" action="userinfo.php">
      <tr>
        <td width="50%">&nbsp;</td>
        <td width="50%"><input type="text" name="anrede" size="20" value="<?php printf(mysql_result($result,0,"knr"));?>" DISABLED></td>
      </tr>
      <tr>
        <td width="50%">&nbsp;</td>
        <td width="50%"><input type="text" name="anrede" size="20" value="<?php printf(mysql_result($result,0,"anrede"));?>"></td>
      </tr>
      <tr>
        <td width="50%">&nbsp;</td>
        <td width="50%"><input type="text" name="name" size="20" value="<?php printf(mysql_result($result,0,"name"));?>"></td>
      </tr>
      <tr>
        <td width="50%">&nbsp;</td>
        <td width="50%"><input type="text" name="vorname" size="20"  value="<?php printf(mysql_result($result,0,"vorname"));?>"></td>  </tr>
      <tr>
        <td width="50%">&nbsp;</td>
        <td width="50%"><input type="text" name="strasse" size="20" value="<?php printf(mysql_result($result,0,"strasse"));?>"></td>
      </tr>
      <tr>
        <td width="50%">&nbsp;</td>
        <td width="50%"><input type="text" name="hsnr" size="20" value="<?php printf(mysql_result($result,0,"hsnr"));?>"></td>
      </tr>
      <tr>
        <td width="50%">&nbsp;</td>
        <td width="50%"><input type="text" name="plz" size="20" value="<?php printf(mysql_result($result,0,"plz"));?>"></td>
      </tr>
      <tr>
        <td width="50%">&nbsp;</td>
        <td width="50%"><input type="text" name="ort" size="20" value="<?php printf(mysql_result($result,0,"ort"));?>"></td>
      </tr>
      <tr>
        <td width="50%">&nbsp;</td>
        <td width="50%"><input type="text" name="land" size="20" value="<?php printf(mysql_result($result,0,"land"));?>"></td>
      </tr>
      <tr>
        <td width="50%">&nbsp;</td>
        <td width="50%"><input type="text" name="tel" size="20" value="<?php printf(mysql_result($result,0,"tel"));?>"></td>
      </tr>
      <tr>
        <td width="50%">&nbsp;</td>
        <td width="50%"><input type="text" name="email" size="20" value="<?php printf(mysql_result($result,0,"email"));?>"></td>
      </tr>
      <tr>
        <td width="50%">&nbsp;</td>
        <td width="50%"><input type="password" name="pw" size="20" value="<?php printf(mysql_result($result,0,"pw"));?>"></td>
      </tr>
      <tr>
        <td width="50%">&nbsp;</td>
        <td width="50%"><input type="submit" name"b1" value="Ändern"></td>
      </tr>
      </form>
    </table>
    Leider wird durch
    Code:
    <?php printf(mysql_result($result,0,"pw"));?>">
    immer nur der erste eintrag der tabelle ausgelesen. Nun möchte ich aber nicht für jeden User eine eigene Formular-Datei erstellen. Kann man die richtigen Daten nicht anhand der Log-In Daten auslesen?

    Daher loggt sich z.b. der User mit der Kundennummer 123456 ein. Das Script überprüft, welche id der tabelle (sprich, welche "row") den Eintrag Kundennummer 123456 enthält und gibt diese id zurück an das Formular?

    Hoffe das war verständlich

    Ich bin für jede Hilfe dankbar!

    Gruß

    p.s. hier noch der code der userinfo.php und der connect.php

    userinfo.php
    Code:
    <?php require("connect.php");?>
    <?php
    $anr = $HTTP_POST_VARS["anrede"];
    $vn = $HTTP_POST_VARS["vorname"];
    $nn = $HTTP_POST_VARS["name"];
    $str = $HTTP_POST_VARS["strasse"];
    $hsnr = $HTTP_POST_VARS["hsnr"];
    $plz = $HTTP_POST_VARS["plz"];
    $ort = $HTTP_POST_VARS["ort"];
    $land = $HTTP_POST_VARS["land"];
    $tel = $HTTP_POST_VARS["tel"];
    $email = $HTTP_POST_VARS["email"];
    $pw = $HTTP_POST_VARS["pw"];
    
    $eintrag = "UPDATE users SET anrede = '$anr', vorname = '$vn', name = '$nn', strasse = '$str', hsnr = '$hsnr', plz = '$plz', ort = '$ort', email = '$email', land = '$land', pw = '$pw', tel = '$tel'";
    $doit = mysql_query($eintrag);
    echo mysql_error();
    ?>
    conenct.php
    Code:
    <?php
    $db = mysql_connect("", "", "");
    mysql_select_db("db01",$db);
    $result = mysql_query("SELECT * FROM users",$db);
    ?>

  • #2
    Ich hoff ich hab dich richtig verstanden.

    Du liest die eingegebene Kundennummer aus und speicherst sie z.B. in die Variable $kdnr.

    Dann machst du du ne Abfrage mit

    Code:
    SELECT id FROM users WHERE kdnr = $kdnr
    d.h. du hast einen einzigen Wert in deiner "Ergebnistabelle". Für die ganze Zeile nimmst du anstatt id einfach ne Wildcard (*).

    Ich hab in deiner Tabelle "users" allerdings weder ne "id" noch ne Kundennummer gesehen - werden die Werte mit AUTO_INCREMENT erstellt ?

    Comment


    • #3
      Hi, danke für Deine Antwort, aber so wars net gemeint

      Ich lese bisher die ganze Tabelle aus mit
      Code:
      mysql_select_db("db01",$db);
      $result = mysql_query("SELECT * FROM users",$db);
      Dann nehme ich mit:
      Code:
      <?php printf(mysql_result($result,0,"name"));?>">
      aus der Spalte "name" den ersten Eintrag "0" heraus. 0= erster Eintrag oder irre ich?!

      Der User hat nun ein Formularfeld vor sich in dem sein Name eingetragen ist. Wenn er diesen nun ändert, klickt auf absenden, kommt userinfo.php zur Hilfe und updatet die Datenbank.

      Leider, wie mir nun aufgefallen ist, werden alle Zeilen der Tabelle in der Spalte "name" nun mit dem neuen Namen überschrieben. ahhh

      Es muss also angegeben werden, welche Zeile er überschreiben soll.
      Dies soll daraus relustieren, wer der Benutzer ist. Da ich aber nicht für jeden Benutzer eine eigene form.php, userinfo.php und connect.php schreiben will, muss es doch ne Möglichkeit geben, zu erkennen, wer derjenige ist, der das Formular aufgerufen hat, damit auch wirklich nur diese eine Zeile geändert wird, die dementsprechend geändert werden soll.
      Z.B. anhand der Kundennummer (Spaltenname "knr"). Ich weiß jedoch nicht, wie das zu realisieren ist.

      Danke und viele Grüße

      Comment


      • #4
        OK, zweiter Versuch:

        Ich gehe davon aus, dass du nach dem Login des Kunden die Kundennummer aus der Datenbank auslesen und in ner Variablen abspeichern kannst.

        Du musst dein UPDATE-Statement mit "WHERE knr = $knr" ergänzen, so dass eine eindeutig identifizierbare Reihe geändert wird. (ich bin nicht sehr fest in der SQL-Syntax, aber du hast bestimmt Möglichkeiten, die genaue UPDATE-Syntax nachzusehen)

        Die Variable $knr musst du entweder ans zweite Script übergeben oder durch Session-Verwaltung erhalten, do dass sie dir im SQL-Statement zur Verfgung steht.

        Wenns die Sache noch net trifft dann solltest mal deinen SQL-UPDATE-clause posten, das würde mir eher weiterhelfen.

        Comment

        Working...
        X