Datenbank-Ausgaben | Ändern, Löschen, Speichern

Eurocid

Mitglied
Hallo wiedermal

Ich bräuchte wiedermal einen denk anstoss, ich bastle schon länger daran herum, habe aber noch keinen richtigen erfolg gehabt.

Das habe ich:
Ich habe eine größere Datenbank (ca. 100 - 200 Einträge), jeder Eintrag gibt eine Zeile mit 6 Spalten aus, die verschieden Einträge haben. Jetzt habe ich rechts dazu (in jeder Zeile) 3 Icons eingebaut für --> Ändern , Löschen , Speichern. (die natürlich die ID mitnehmen)

Das fehlt mir:
Wenn ich auf Ändern drücke, sollen die Felder in den Änderungsmodus springen.
Wenn ich dann auf Speichern drücke sollen die geänderten Felder gespeichert werden.


Ich habe schon versucht das mit input tags zu lösen, war aber nicht so der erfolg. :rolleyes:

Hat da wer einen Tipp für mich oder etwas ähnliches wie ich das machen könnte?

Mfg
Cid
 
Hallo Eurocid,

zeig doch mal deinen bisherigen Code her, was hat denn nicht funktioniert?

Genau wie yaslaw sagte (in Beitrag #3) brauchst du JavaScript und AJAX. Mit JavaScript verwandelst du die (Tabellen)Zeile in Input-Felder und blendest einen Absende-Knopf ein. Beim Klick sendest du die Daten per AJAX an dein PHP-Skript.
Statt AJAX könntest du auch einen normalen Form-Tag benutzen. Aber wenn man schon JavaScript benutzt, wieso dann nicht auch AJAX?
 
Das Stichwort ist Ajax. Kombination von PHP und Javascript.
Mit Javascript kannst du die Felder einblenden.
 
Also wenn die Daten zum Anzeigen als Text in die (HTML-)Tabelle geschrieben werden, würde ich als erstes das Speichern Icon rausnehmen da Speichern ja an der Stelle gar nicht möglich ist.

Dann würde ich eine zusätzliche Seite erstellen die für jedes Feld der Datenbank ein enstprechendes Text-/Input-Feld hat. Diese Seite wird mit der jeweiligen ID des Datensatzes zum Bearbeiten/Speichern aufgerufen.

Nur das Icon fürs Löschen kannst du lassen wie es ist. Hier auch die jeweilige ID dranhängen und beim Anklicken dann die entsprechende SQL-Anweisung ausführen.
 
Nicht übel, gleich soviele antworten, RESPEKT ;)

Also, ich bin jetzt gerade nicht vor meinen Code, aber was ich gleich mal vorweg sagen möchte, ich arbeite "bis jetzt" nur mit HTML / CSS / PHP.

Ist das auch rein so möglich oder brauche ich unbedingt Java Script?

Grüße Cid
 
Also Meinung nach brauchst du es nicht. PHP reicht dafür vollkommen aus und da weißt du auch das es funktioniert weil man es nicht abschalten kann. So wie es bei Javascript möglich wäre.

Mit Javascript/Ajax ist es halt schneller oder aktiver oder wie man es auch immer bezeichnen will.
 
Super, genau das wollte ich hören. :D

Also hier mal meine Datenbankausgabe:

PHP:
$result = mysql_query("SELECT * FROM tabelle ORDER BY name");
while ($gebaeude = mysql_fetch_array($result))
{

...

// ------ Text ausgeben ------ //

    echo "<tr>";
        echo "<td>$gebaeude[1]</td>";
        echo "<td>$gebaeude[2]</td>";
        echo "<td>Stufe $gebaeude[3]</td>";
        echo "<td>$gebaeude[4] min</td>";
        echo "<td>$gebaeude[5] min</td>";
        echo "<td>$gesamt_zeit min</td>";
        echo "<td>";
        echo "<a href=datei.php?aktion=aendern&id=$gebaeude[0]'>";
        echo "<img src='icons/cog.png' width='12' height='12' alt='&Auml;ndern' /></a>&nbsp;";
        echo "<a href=datei.php?aktion=loeschen&id=$gebaeude[0]'>";
        echo "<img src='icons/delete.png' width='12' height='12' alt='L&ouml;schen' /></a>&nbsp;";
        echo "<a href=datei.php?aktion=speichern&id=$gebaeude[0]'>";
        echo "<img src='icons/save.png' width='12' height='12' alt='Speichern' /></a>";
        echo "</td>";
    echo "</tr>";

}

...

Im obigen Code werden mal die Zeilen ausgegeben, mit den drei Icons.

Hier jetzt die drei Code Schnipsel die ich mir mal zusammen gestoppeld habe, fürs Ändern, Löschen und Speichern.

PHP:
if ($_GET["aktion"] == "aendern")
    {
    $id = $_GET["id"];
    $query1 = mysql_query("SELECT * FROM tabelle WHERE id='$id'");
    while ($query = mysql_fetch_array($query1))
    {
        $a_stufe = addslashes("<input type='text' name='a_stufe' size='1' maxlenght='1' value='$query[3]' />");
        //$a_weg_zeit = addslashes("<input type='text' name='a_weg_zeit' size='2' maxlenght='5' value='$query[5]' />");
    }
    $aendern1 = "UPDATE tabelle SET stufe='$a_stufe' WHERE id='$id'";
    $aendern = mysql_query($aendern1) or die (mysql_error());

    header ("Location: datei.php");
    }
if ($_GET["aktion"] == "loeschen")
    {
    $id = $_GET["id"];
    $query1 = "DELETE FROM tabelle WHERE id='$id'";
    $loeschen = mysql_query($query1) or die (mysql_error());
    }
if ($_GET["aktion"] == "speichern")
    {
    $id = $_GET["id"];
    $query1 = mysql_query("SELECT * FROM tabelle WHERE id='$id'");
    while ($query = mysql_fetch_array($query1))
        {
            $value = $query[3];
            $array = explode(' ',$value);
            $array = explode('=',$array[5]);
            $new_stufe = str_replace('\'','',$array[1]);
            // Hier wurde aus dem input tag, der Value geholt

        }
    $speichern1 = "UPDATE dso_ws SET stufe='$new_stufe' WHERE id='$id'";
    $speichern = mysql_query($speichern1) or die (mysql_error());

    header ("Location: datei.php");
    }

Das würde eigentlich alles garnicht schlecht funktionieren, wenn ich den Value im <input> tag, beim klicken auf den Link, aktuallisieren würde. :(
Und genau da weis ich nicht, wie ich daran vorbei komme?

Grüße Cid
 
Hallo und Guten Morgen

Ich habe dieses Problem inzwischen anders gelöst, da ich auf keine Lösung gekommen bin.

Jetzt nur mal so Informativ, soll ich das Thema jetzt als "Erledigt" kennzeichen, oder einfach so lassen?
Und wenn ich wiedermal weider daran arbeite hier wieder weiter machen?


Grüße Cid
 
Na wenn diese Frage hier erledigt ist, dann kannst du das Thema auch als erledigt markieren.

Solltest du mal wieder eine Frage haben, erstelle einfach einen neuen Beitrag. Wenn es hilft, kannst du ja dann einen Link zu diesem Beitrag mit einstellen damit man weiß worum es ging.
 
Alles klar, mach ich. :)

Da ich selbst will das meine ganzen Themen als "Erledigt" abgeschlossen werden.

Schade das ich bei meinen Profil, wo ich meine ganzen erstellten Themen einsehen kann, nicht sehe ob es als erledigt markiert wurde oder nicht. :(

Grüße und bis zur nächsten Frage
Cid
 
Zurück