Ankündigung

Einklappen
Keine Ankündigung bisher.

Datenbankeintrag per Button

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • BudaSven
    hat ein Thema erstellt Datenbankeintrag per Button.

    Datenbankeintrag per Button

    Hallo Ihr lieben,

    meine php Kenntnisse sind bisher leider recht Bescheiden.
    Jetzt stellt sich mir ein Problem, bei dem ich Hilfe gebrauchen könnte.

    Ich betreibe für meine kleine Firma ein Intranet mit Joomla.
    Hier möchte ich jetzt unterhalb des Artikels einen Button einfügen, mit dem der User bestätigen kann, dass er diesen Beitrag gelesen hat.

    Im Endeffekt soll nach dem Klicken des Buttons "nur" der Username in die Spalte "Username" in der tabelle "jos_content_readconf" eingetragen werden.

    mit folgendem codeschnipsel funktioniert das:

    PHP-Code:
    <?php $result mysql_query("INSERT INTO jos_content_readconf (username) VALUES ('$user->name')"); ?>
    Allerdings wird das ja nun sofort in die Datenbank geschrieben, sobald der User den Artikel aufruft.

    Wie kann ich das ganze denn jetzt in ein Formular packen, bei dem diese Daten erst in die Datenbank geschrieben werden, wenn der User den "Senden" Button drückt?

    Vielen lieben Dank im voraus für die Hilfe

    Sven

  • ChristianK
    antwortet
    Unique Constraint Index

    Einen Kommentar schreiben:


  • BudaSven
    antwortet
    Super, vielen Dank für die schnelle Antwort und Hilfe Werde das ganze jetzt wirklich mit der UserID verbinden. Sollte es mal 2 user mit dem gleichen Namen geben, gucke ich ja Dumm aus der Wäsche

    Einen Kommentar schreiben:


  • Arne Drews
    antwortet
    jos_content_readconf mit den feldern "user_name" und "article_id"
    user_id und article_id wäre sinnvoller.
    Ich weiß zumindest, dass hier wohl eine Abfrage mit LEFT JOIN gemacht werden muss.
    Eben da müssest Du in Deinem Fall über user_name joinen:
    Code:
    SELECT
        tabelle1.spalte_a,
        tabelle1.spalte_b,
        ...
    FROM
        tabelle1
    LEFT JOIN
        tabelle2 ON tabelle1.user_name = tabelle2.user_id
    wie gesagt, user_id ( INDEX oder sogar PRIMARY KEY ) wäre besser.
    Es geht aber auch über WHERE NOT IN ( hier mit user_id als Beispiel ):
    Code:
    SELECT
        tabelle1.spalte_a,
        tabelle1.spalte_b,
        ...
    FROM
        tabelle1
    WHERE
        tabelle1.user_id NOT IN (
            SELECT user_id FROM tabelle2 WHERE article_id = ?
        )

    Einen Kommentar schreiben:


  • BudaSven
    antwortet
    So, jetzt habe ich leider schon wieder ein Problem, bei dem ich nicht weiterkomme.

    Also:

    Ich habe 2 tabellen:

    jos_k2_users mit u.a. dem feld "userName"

    jos_content_readconf mit den feldern "user_name" und "article_id".

    In der tabelle k2_users sind ALLE user im System mit usernamen hinterlegt.
    In der tabelle content_readconf sind nur die User hinterlegt, die einen Artikel als gelesen markiert haben. Hier wurde dann der username sowie die Artikel ID eingetragen.

    Jetzt möchte ich gerne eine Abfrage machen, welche User diesen Artikel noch NICHT gelesen haben, also eben nicht mit dieser Artikel ID in der tabelle content_readconf vertreten sind.

    die Variable $K2Itemid fragt immer die aktuelle ID des Artikels ab.
    Ich weiß zumindest, dass hier wohl eine Abfrage mit LEFT JOIN gemacht werden muss.
    Aber ich weiß leider nicht, wie genau die Abfrage auszusehen hat.
    Kann mir hier bitte jemand weiterhelfen?

    LG

    Sven

    Einen Kommentar schreiben:


  • BudaSven
    antwortet
    Ha, das wars schon! Eine der Variablen war falsch. Nochmal ein bischen gegoogelt, jetzt klappts! Danke

    Und Danke auch für den Buch Tipp

    Einen Kommentar schreiben:


  • VPh
    antwortet
    Hallo,

    so auf dem ersten Blick sieht das nicht verkehrt aus.
    Stehen in deinen Variablen wirklich die Werte, die du erwartest?
    Hast du die Query schon einmal so durch die Datenbank geschickt (per NaviCat oder PHPMyAdmin zB) und das erwartete Ergebnis bekommen?

    Zum Thema Buch:
    http://www.php.de/php-einsteiger/110...tml#post812732


    Standardtext für die Datenbankverbindung:
    Die mysql_* Erweiterung ist veraltet und wird in der nächsten PHP-Version entfernt. Zudem ist deine Query anfällig für SQL-Injections (aktuell nicht, aber falls du Variablen in dein Insert nimmst).
    Durch einen Wechsel auf mysqli_* oder PDO greifst du aufdie modernere API zu und hast die Möglichkeiten Prepared Statements zu benutzen die gegen Injections wirken.
    Ich persönlich bevorzuge PDO, schönes Tutorial: http://www.peterkropff.de/site/php/pdo.htm

    Einen Kommentar schreiben:


  • BudaSven
    antwortet
    So, hier bin ich dann mal wieder

    Ich habe es jetzt mit viel googeln und try&error hinbekommen, dass meine "Lesebestätigungsbutton" den Usernamen und die Artikel ID in die Datenbank einträgt.

    Jetzt versuche ich, die Datenbank nach genau diesen Werten abzufragen.
    Also, beim laden der Seite soll geprüft werden, ob der eingeloggte User diesen Artikel schon als gelesen markiert hat. Wenn ja, soll der Button verschwinden.

    Aber irgendwie bin ich noch zu unwissend, um den Code richtig hinzukriegen.

    Ich versuche es derzeit mit:

    PHP-Code:
    $user_name $user->name;
    $K2Itemid JRequest::getInt('id');

    $einlesen mysql_query("SELECT article_id, user_name FROM jos_content_readconf WHERE user_name='".$user_name."' AND article_id='".$K2Itemid."'" );
    if(
    mysql_num_rows($einlesen)==1) echo "ja";
    else echo 
    "nein"
    Funktioniert aber leider nicht.
    Kann mir hier jemand weiterhelfen?

    LG Sven (Der sich jetzt erst mal ein PHP Buch besorgt)

    Einen Kommentar schreiben:


  • BudaSven
    antwortet
    Ok, Danke soweit erst mal Werde mir das Morgen nochmal anschauen. Heute brummt mir irgendwie der Kopf.

    Einen Kommentar schreiben:


  • bursch
    antwortet
    <a href="http://www.meinedomain.de/meinedatei.php?user=(username)&artikel=(artikelid) ">Mein Link</a>

    Edit: Wobei man prüfen müsste, ob der angegebene User wirklich der eingeloggte ist.

    Einen Kommentar schreiben:


  • BudaSven
    antwortet
    Ups, natürlich muss ja doch die Artikel ID ausgelesen werden. wie würde das denn dann in einem <a>- Tag ausschauen? Parameter wären dann wohl $user->name und $id. . . . Stehe heute irgendwie auf dem Schlauch.

    Einen Kommentar schreiben:


  • Arne Drews
    antwortet
    Zitat von bursch
    Es sei denn, es gibt nur diesen einen Artikel, der bestätigt werden soll.
    Das wäre heavy, dafür ein CMS wie Joomla zu verwenden...

    Einen Kommentar schreiben:


  • bursch
    antwortet
    Zitat von Arne Drews Beitrag anzeigen
    "Wo ist der Bezug zwischen User und Artikel"
    Ja, der müsste da noch mit rein. Es sei denn, es gibt nur diesen einen Artikel, der bestätigt werden soll.

    Einen Kommentar schreiben:


  • Arne Drews
    antwortet
    Es muß kein Formular sein, Du kannst das auch einfach per <a>-Tag lösen mit Übergabe der UserId als Parameter.
    Bei der Abfrage stellt sich mir allerdings die Frage: "Wo ist der Bezug zwischen User und Artikel"

    Einen Kommentar schreiben:


  • bursch
    antwortet
    Du erstellst einfach ein normales Formular (siehe http://de.selfhtml.org/html/formulare/) und packst deinen Code in die Formular-Auswertung. Dann muss das Formular erst gesendet werden, damit der Eintrag gespeichert wird.

    Einen Kommentar schreiben:

Lädt...
X