dbm editieren

Krypthonas

Erfahrenes Mitglied
Hallo.

Ich komme bei einen Problem nicht weiter. Und zwar habe ich hier einen Code mit dem man Produkte in eine Datenbank einfügen kann. So!
Mann kann sie auch wunderbar verändern und löschen.

Doch wie kann ich z.B. ein einzelnes Produkt in einen neuen Fenster editieren.

Also ich mach erstmal den Quelltext Startklar:
PHP:
<?php
$dbh = dbmopen( "news", "c" ) 
       or die("Konnte DBM nicht öffnen");

if ( isset ( $loeschen ) )
    {
    while ( list ( $schluessel, $wert ) = each ( $loeschen ) )
        {
        unset( $preise[$wert]);
        dbmdelete( $dbh, $wert );
        }
    }

if ( isset ( $preise ) )
    {
    while ( list ( $schluessel, $wert ) = each ( $preise ) )
        dbmreplace( $dbh, $schluessel, $wert );
    }

if ( ! empty( $name_add ) && ! empty( $preis_add ) )
    dbminsert( $dbh, "$name_add", "$preis_add" );

?>


<form action="<? print $PHP_SELF; ?>" action="POST">

<table border="1">
  <tr> 
    <td width="51">Löschen</td>
    <td width="144">Produkt</td>
    <td width="169">Preis</td>
    <td width="169">&nbsp;</td>
  </tr>
  <?php
$schluessel = dbmfirstkey( $dbh );
while ( $schluessel != "" )
    {
    $preis = dbmfetch( $dbh, $schluessel );
    print "<tr><td><input type='checkbox' name=\"loeschen[]\" ";
    print "value=\"$schluessel\"></td>";
    print "<td>$schluessel</td>";
    print "<td> <input type=\"text\" name=\"preise[$schluessel]\" ";
    print "value=\"$preis\"> </td></tr>";
    print "<td><a href=\"edit.php?site=edit\">Editieren</a></td>";
    $schluessel = dbmnextkey( $dbh, $schluessel );
    }

dbmclose( $dbh );
?>
  <tr> 
    <td>&nbsp;</td>
    <td><input type="text" name="name_add"></td>
    <td><input type="text" name="preis_add"></td>
    <td>&nbsp;</td>
  </tr>
  <tr> 
    <td colspan=4 align="right"> <input type="submit" value="Ändern"> </td>
  </tr>
</table>
</form>

So und wenn wir nun auf Editieren klicken dann so für das einzelne Produkt eine neue Seite gezeigt werden um den Inhalt besser zu ändern.

Also ich habe so daran gedacht das man das vielleicht so machen könnte:

PHP:
if (isset ($site) && $site=="edit")

Also das beutze ich als Rohrleitung. Also wenn ich jetzt auf editieren klicke dann erschein dbm.php?site=edit dann soll das Script aufgerufen werden.

So und dann gehen mir die PHP Ressourcen aus ^^

Weis jemand Rat?

MfG
 
Code:
dbm.php?site=edit&id=id

du gibts einfach die ID des datensatzes an die seite dbm.php
weiter die du bearbeiten willst.

mit der id kannst du ne neue sql abfrage starten in der du genau
den datensatz einließt.

einfach ein formular vorbereiten und die textfelder value mit
den werten der abfrage füttern -> fertig!

PHP:
$sql = "select name from tabelle where id = '$id'";
$result = mysql_query($sql);
$data = mysql_fetch_array($result, MYSQL_ASSOC);

echo $data["name"];

// echo gibt den namen der id aus, die du bearbeiten willst
// jetzt muss du nur noch die daten in die Textfelder einfügen.


Code:
<input name="name" type="text" id="name" value="<? echo $data["name"] ?>" size="35">

hoffe konnte helfen ...

mfg
 
PHP emuliert keine Datenbank. DBM ist eine eigene Datenbankart ;)

Leider kann ich Dir nicht weiterhelfen :( habe noch nicht viel mit DBM gemacht
 
Zuletzt bearbeitet:
Hi,

ich habe die ganze Sache anders gelöst. Trotzdem danke.
Also wie ich gemerkt habe gibt es mit verlaub so gut wie keine Tutorials im Web bzw. keine deutschen Tutorials zu DBM Funktionen. Klar sie sind veraltet aber man kann sie genauso auf die neuen Datenbanken übertragen. Deswegen denke ich das ich ein Tutorial auf Tutorials.de schreiben werde.

Genug des vielen Spams.
 
Zurück