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

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Groovecommander
Mitglied
Beiträge: 119
Registriert: 26.03.2004 16:39

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

Beitrag 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.
Groovecommander
Mitglied
Beiträge: 119
Registriert: 26.03.2004 16:39

Beitrag 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
Benutzeravatar
frieder
Mitglied
Beiträge: 836
Registriert: 06.03.2004 21:36
Wohnort: Gifhorn

Beitrag von frieder »

Welchen Doku-Artikel meinst du jetzt genau?
Wie werden die Inserate aufgegeben?
Mit freundlichen Grüßen
Frieder
Ex-1. April Admin von phpBB.de :D
Groovecommander
Mitglied
Beiträge: 119
Registriert: 26.03.2004 16:39

Beitrag 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.
Benutzeravatar
Leuchte
Ehemaliges Teammitglied
Beiträge: 9179
Registriert: 26.05.2003 14:57
Wohnort: Duisburg
Kontaktdaten:

Beitrag 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.
Groovecommander
Mitglied
Beiträge: 119
Registriert: 26.03.2004 16:39

Beitrag 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
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag 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
Groovecommander
Mitglied
Beiträge: 119
Registriert: 26.03.2004 16:39

Beitrag 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.
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag 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....
Benutzeravatar
MrMind
Mitglied
Beiträge: 464
Registriert: 29.11.2003 17:14
Wohnort: Darmstadt/Odw
Kontaktdaten:

Beitrag 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
Selbst ist der Coder
Coder unter Linux
Antworten

Zurück zu „Coding & Technik“