Seite 1 von 3

editieren/löschen Funktion für eigene HP verwenden

Verfasst: 14.11.2004 17:00
von Groovecommander
Hallo,

ich möchte für meine Site ein kleines "Schwarzes Brett" bauen. Dabei sollen nur die User die angemeldet sind, inserieren können. Das läßt sich ja ganz gut mit der dem Artikel aus der Doku realisieren.
Als zusätzliche Funktion, sollen die User, die inseriert haben, ihr Inserat editieren bzw. auch wieder löschen können. Dazu wollte ich die Funktion des Forums nutzen, wo auch nur der User sein Beitrag editieren kann, der ihn auch geschrieben hat.

Wer kann mir da auf die Sprünge helfen? Ich habe bereits in der viewtopic.php nach dem entsprechenden Code gesucht, aber so richtig schlau bin ich nicht draus geworden.

Verfasst: 15.11.2004 16:20
von Groovecommander
ok nochmal anders ausgedrückt;

Wie kann ich die Funktionen "editieren/löschen" aus dem Forum für meine eigene Seite einbauen? Wie gesagt, die Seite ist nach der Doku in das Forum integriert und die User können Inserate aufgeben. Diese sollen nun durch den entsprechenden User bearbeitet (editiert/gelöscht) werden können.

Vielen Dank und beste Grüße

Verfasst: 15.11.2004 16:30
von frieder
Welchen Doku-Artikel meinst du jetzt genau?
Wie werden die Inserate aufgegeben?

Verfasst: 15.11.2004 16:39
von Groovecommander
Eigentlich meinte ich nur die Vorlage, wie man ne Seite einbaut:
http://www.phpbb.de/doku/kb/artikel.php ... ht=include

Da steht ja auch beschrieben, wie man die Sache regelt, wenn die User eingeloggt sind und wenn nicht.

Die Inserate, werden einfach in ne DB geschrieben, wo auch phpBB drin ist. Ich habe einfach nur ein neues Feld angelegt, wo die Inserate rein geschrieben werden.

Mir geht es eigentlich nur um den php Code, wo die Regelung steht, ob ein User seinen Artikel bearbeiten/löschen kann.

Verfasst: 15.11.2004 18:19
von Leuchte
Du müsstest nur die ID des Users auslesen, dem der Artikel gehört. Diese ID vergleichst du dann mit dem User, der den Artikel betrachtet ($userdata['user_id']). Wenn das der Artikel des User ist, gib ihm einen Edit-Link/Button.

Verfasst: 15.11.2004 20:44
von Groovecommander
Ok, also ich bin in Sachen php noch nicht so fit, deshalb hab ich noch ein paar Fragen.

Ich habe mir jetzt eine Tabelle angelegt, wo ich alle diversen Sachen des Inserats rein schreibe (es geht hier als erstes um "Gesuche", also ich werde das noch weiter ausbauen, aber ich fang halt erst mal mit den Gesuchen an :wink: ). Dort drin steht z.B Beschreibung, Preis von/bis, Zustand und dann halt auch der User. Dafür gibt es im Formular ein Feld, indem, wenn der User angemeldet ist, sein Username erscheint.

Ich muss also die ID des Userers, der das Inserat aufgegeben hat, aus der DB abfragen und mittels $userdata['user_id'] vergleichen ???
$userdata['user_id'] ermittelt also dir ID des User, oder wie?
Wie würde denn die Abfrage der User-ID lauten, die ich dann mit $userdata['user_id'] vergleiche?
Select form phpbb_users where user id = $userdata['user_id'] ???

Beste Grüße

Verfasst: 15.11.2004 23:16
von Blutgerinsel
Groovecommander hat geschrieben: Ich muss also die ID des Userers, der das Inserat aufgegeben hat, aus der DB abfragen und mittels $userdata['user_id'] vergleichen ???
$userdata['user_id'] ermittelt also dir ID des User, oder wie?
Wie würde denn die Abfrage der User-ID lauten, die ich dann mit $userdata['user_id'] vergleiche?
Select form phpbb_users where user id = $userdata['user_id'] ???

Beste Grüße
Keine Ahnung was du bezweckst....
Ich kann Tables verknüpfen z.B.

$userdata['user_id'] -> ist ein Hundsgewöhnliches Array mit einem String-Indize
Und das bekommt im eigentlichen Sinne ja irgendwo seine Daten her sonst wäre es sinnigerweise leer

Verfasst: 16.11.2004 18:29
von Groovecommander
Bei einem Formular schickt man doch die eingegebenen Daten an eine Datei, die dann die Daten verarbeitet und z.B in eine DB schreibt.
Wie kann ich das Array ($userdata[user_id]) an das Script schicken, das die Formulareingaben verarbeitet ? Es soll halt mit dem Formular geschickt werden, wenn das irgendwie möglich ist.

Verfasst: 16.11.2004 18:46
von Blutgerinsel
Groovecommander hat geschrieben:Bei einem Formular schickt man doch die eingegebenen Daten an eine Datei, die dann die Daten verarbeitet und z.B in eine DB schreibt.
Wie kann ich das Array ($userdata[user_id]) an das Script schicken, das die Formulareingaben verarbeitet ? Es soll halt mit dem Formular geschickt werden, wenn das irgendwie möglich ist.
Für solche Fällen werden Sessions verwendet, welche so klein wie möglich sein sollte....

Verfasst: 16.11.2004 22:03
von MrMind
Also bevor dir Blutgerinsel alle Möglichkeiten hier auflistet die dich auf umwegen zum Ziel bringt, möchte ich noch schnell mein Senf dazugeben ;)
Bei einem Formular schickt man doch die eingegebenen Daten an eine Datei, die dann die Daten verarbeitet und z.B in eine DB schreibt.
Wie kann ich das Array ($userdata[user_id]) an das Script schicken, das die Formulareingaben verarbeitet ? Es soll halt mit dem Formular geschickt werden, wenn das irgendwie möglich ist.
das Array brauchste net weiter zu geben, da alle deine Seiten die du erstellst so aussehen sollten. Somit wird das Array $userdata immer wieder ersetllt.

Da du nach dieser Vorlage arbeitest ist es einfach dir eine Hilfestellung zu geben.

Als erstes solltest du eine Seite (z. B. inserate_edit.php) erstellen und nur den Link zu dieser Seite anzeigen lassen, wenn der User auch angemeldet ist. Das kannste wie folgt bewerkstelligen:

Code: Alles auswählen

if( $userdata['user_id'] != ANONYMUS )
{ 
     assign_block_vars('inserat_edit', array('LINK' => '<a href="inserate_edit.php">Inserate bearbeiten</a>'));
}
in der Templates sie das dann so aus:

Code: Alles auswählen

<!-- BEGIN inserat_edit -->
{LINK}
<!-- END inserat_edit -->
So und wenn er nun seine Einträge editieren möchte, wäre eine gute Idee seine eingtragenen Inserate anzeigen zu lassen (und zwar nur seine).
Dies kannste mit so einer SQL-Anweisung machen:

Code: Alles auswählen

$sql = "SELECT * FROM phpbb_inserate WHERE userid = '" . $userdata['user_id'] . "'";
$result = $db->sql_query($sql);
while( $inserate = $db->sql_fetchrow($result) )
{
    //Anweisung
}
So mit haste im Array $inserate alle Daten die du in der Datenbank gesichert hast enthalten. Als Index stehen nun die Feldnamen wie userid, title oder sowas zur Verfügung.
Nun solltest du bei der Stelle wo //Anweisung steht, deinen Code schreiben um die einzelnen Einträge auszugeben.

Nun solltest du bei jedem deiner Inserate einen Link haben der eine Variable mit der GET-Methode (z. B. inserate_edit.php?mode=edit, in diesem Beispiel ist mode die Variable und edit der Inhalt der Variable, mit $HTTP_GET_VARS['mode'] kannste abfragen ob diese gesetzt ist und wenn ja, ob sie edit oder evtl. del beinhaltet) übergibt.

Tipp:
fürs editieren machste am einfachsten mode=edit
und fürs löscehn machst du mode=del
und die ID des Inserates mit übergeben wie zum Beispiel: id=$inserate['id']

Einen GET-String zu Bilden mit den oberen Daten sollte dann so aussehen:

Code: Alles auswählen

inserate_edit.php?mode=edit&id=$inserate['id']
? bedeutet für den Browser, das alles was danach folgt, Daten für das Script sind
zwei Variablen tust du mit einem & (in HTML &) von einander trennen.

Wenn nun der User auf einen der Links klickt, solltest du dafür in der selben PHP-Datei eine if-Abfrage haben wie folgt:

Code: Alles auswählen

if( $HTTP_GET_VARS['mode'] == 'edit' )
{
    /*
        Anweisung: Ein Formular ausgeben um das Inserat zu editieren
    */
}
else if( $HTTP_GET_VARS['mode'] == 'del' )
{
   /*
       Anweisung: Eine Sicherheitsabfrage ob der User das Inserat wirklich löschen möchte
   */
}
else
{
     //Hier die Anweisung um die Liste auszugeben
}
Bei beiden Methoden verwendest du nun Formulare mit der POST Methode und kannst dann deine if - else Anweisung noch erweitern:

Code: Alles auswählen

//Zwischen else if{} und else einfügen:
else if( $HTTP_POST_VARS['mode'] == 'save' )
{
    // Anweisung um den editierten Beitrag in der Datenbank Upzudaten
}
else if( HTTP_POST_VARS['mode'] == 'y_del' )
{
   // Anweisung um den Beitrag nach dem einstimmen des Users zu löschen
}
Um nun diese Variablen nun via HTML zu übergeben verwendest du die hidden-Tags:

Code: Alles auswählen

<input type="hidden" name="mode" value="save" \>
Ich hoffe das hat dir weitergeholfen.
wenn was net klar sein sollte oder auf bestimmte Sachen weiter eingehen möchtest: Frag ;)

Alle Angaben wie MySQL Tabelle phpbb_inserate müsstest du dann eh angleichen.

Mfg
MrMind