MySQL – die neusten Beiträge

Like Button implementieren?

Schönen guten Abend allerseits,

Ich arbeite gerade an einer Website.

Auf dieser möchte ich gerne einen Like-Button implementieren und nicht auf irgendein fertiges Produkt zugreifen.

Ich frage mich bloß, wie ich das am geschicktesten anstellen kann.

Meine Herangehensweise:

Ich persönlich habe mir eine MySQL Tabelle namens likes erstellt, mit deren Hilfe ich ein erneutes Liken eines Nutzers (der den Like-Button schon einmal gedrückt hat) verhindern möchte.

Zur Identifizierung des Nutzers würde ich entweder eine Session-ID oder die IP-Adresse des Nutzers in der Tabelle speichern.

Das Problem bei der Session-ID ist, dass das Cookie nach einiger Zeit "verfällt" bzw. bei der nächsten Löschung der Cookies nicht mehr vorhanden ist und erneutes liken wieder möglich ist. Zudem ist das erneute Liken in einem anderen Browser möglich.

Das Problem bei der IP-Adresse ist, dass ich nicht weiß, ob das ganze legal ist und erneutes Liken spätestens bei einer neuen IP-Adresse möglich ist.

Beim Laden der Seite stelle ich dann eine Datenbank-Abfrage mittels PHP an die Tabelle, in dem ich nach der entsprechenden Session-ID bzw. IP-Adresse suche.

Das sieht bei mir dann (mittels PDO) etwa so aus:

$stmt = $database->prepare('SELECT * FROM `likes` WHERE `sessid` = :sessid');
$stmt->execute(['sessid' => session_id()]);
$like = $stmt->fetch();

Im späteren Programmablauf wird dann überprüft, ob $like nicht "leer" ist und dementsprechend der Like-Button ($like ist "leer") oder nur die Likes ($like ist nicht "leer") ausgegeben werden.

Wenn der Like-Button nun schließlich gedrückt wurde soll eine asynchrone Anfrage an ein PHP Skript mittels AJAX gestellt werden. Im PHP Skript selbst werden entsprechende Likes in einer anderen Tabelle um 1 hochgezählt. Das PHP Skript selbst stellt dann noch eine Datenbank-Abfrage, in dem die aktuellen Likes aus der Tabelle geholt werden. Diese werden dann auch vom PHP Skript an den Client weitergegeben und im HTML-Dokument mittels JavaScript aktualisiert.

Die ganze Sache kommt mir nur nicht sonderlich elegant vor. Darunter auch die bei jedem Seitenaufruf überprüfende Abfrage, ob von diesem Nutzer bereits geliked wurde.

Zudem frage ich mich immer noch, ob ich mit der IP-Adresse oder einer Session-ID arbeiten soll - hat ja beides Vor- und Nachteile.

Was haltet ihr von meinem Ansatz? Habt ihr selbst Vorschläge wie oder was man besser machen könnte?

Danke im Voraus!

LG

Webseite, programmieren, AJAX, Informatik, MySQL, implementierung, Likes

MySQL kann keine Verbindung zur Datenbank aufbauen?

Guten Tag,

ich bitte euch vorab den ganzen Text durchzulesen, da ich schon seit Tagen daran sitze das ganze zu beheben, sprich die Lösung zu finden und es mir nicht gelingt, danke!

Ich habe seit einiger Zeit einen VServer auf Debain 9 laufen, auf dem habe ich auch das beliebte "CloudNET" installiert und problemlos eingerichtet.

Ich habe mir auch ein Plugin heruntergeladen, welches MySQL benötigt, damit es funktioniert. Daher habe ich mir auch MySQL unter der Anleitung des folgenden Videos heruntergelden (https://www.youtube.com/watch?v=XP2Kvux4Zug&t=535s) Habe alles genau so gemacht, wie es im Video gezeigt wurde.

Jetzt aber das komische: Ein Kollege von mir hat das ganze ebenfalls ausprobiert, sprich sich das Plugin geholt, einen VServer mit Debain 10 am laufen gehabt und, jedoch kein CloudNet und es ging, er hatte das gleiche Video wie ich zur Installation benutzt.

An CloudNET liegt es übrigens nicht, ich habe es auf einem Server, unabhängig von den anderen mit einem anderen Port versucht und es ging trotzdem nicht. Ebenfalls hat es anscheinend auch nichts mit dem Betriebssystem zu tun, da im Video gezeigt wird, dass es für Debain 9 sowie Debain 10 funktioniert.

Immer wieder die selbe Fehlermeldung: Error: Could not connect to database (com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.)

Liegt es eventuell an dem Hoster, wir beide benutzen einen Unterschiedlichen ich nutze (https://www.opusx.io/). Er nutzt (https://mc-host24.de/)? Kann mir da irgendjemand weiterhelfen, ich wäre wirklich dankbar!

Computer, programmieren, Datenbank, MySQL, PHP, Root Server, vServer, phpMyAdmin, CloudNet

Probleme von Umlauten mit Webserver und Datenbank?

N’Abend! 

Ich habe folgendes Problem, ich schreibe im Moment auf der Arbeit unsere Website komplett neu. Als Grundlage verwende ich Wordpress. Die Website ist relativ komplex gehalten, sprich mit Kundenzugang, der aus selbstgeschriebenen PHP Skripten besteht (Für den Login/Kontos verwendete ich das Plugin Simple WordPress Membership). Soweit so gut, das alles funktioniert auch ohne Probleme. Nachdem ich aber mithilfe des Plugins All-in-one WP Migration den Server wechselte (von einem lokalen System innerhalb unseres Netzwerkes auf einen Host-Europe Webserver, habe ich das Problem das Umlaute falsch angezeigt werden (�). Ich kann mir vorstellen das es daran liegt, dass die Datenbanken 2 Unterschiedliche Typen sind und verschiedene Charsets eingestellt hatten. Den Charset der neuen Datenbank habe ich testweise mal umgestellt, jedoch ohne Ergebnis. Wenn ich jedoch über ein Formular Umlaute in die Datenbank eintrage, erhalte ich in der Datenbank folgende Zeichen: O: Ö   A: Ã„  U: Ãœ    o: ö  a: ä  u: ü  

Frage ich jedoch diese Eintragungen ab, werden die Umlaute korrekt dargestellt. 

Die Importierten Datensätze, sprich die Datensätze die auf der Website so � dargestellt werden, werden in meinem Datenbank Management als korrekte Umlaute angezeigt. 

Server/Datenbank Details:

Ich kann mir vorstellen das der Fehler Server Seitig ist, jedoch fehlt mir die Idee wie ich diesen Fehler beheben kann.  

Vielen Dank für eure Hilfe im Voraus :) 

Viele Grüße 

Miro  

Bild zum Beitrag
Computer, HTML, programmieren, WordPress, Datenbank, MySQL, PHP, Webserver

Pdf Tabelle in MySQL?

Hi,

folgendes Problem. Ich bin gerade dabei für meine Schule einen Vertretungplan neu zu Programmieren. Die Idee war es den Plan in einer MySql Datenbank zu speichern.

Etwa so

und ihn dann mit Php aus der Datenbank zu lesen und in eine HTML mit echo auszugeben. Der Teil funktioniert schonmal.

Sieht dann später ca. so aus. (Design bei weitem noch nicht fest.)

Der weiter Plan wäre dann z.b mit NodeJs Pushnachrichten an eine Vertretungsplan App zu schicken.

Jedenfalls funktionier das jetzige System an der Schule aber so, dass eine Lehrkraft, die für die Erstellung des Vertretungsplans zuständig ist, diesen in einer Anwendung erstellt, die zum einen anscheinend viele Vorteile bei der Erstellung hat (z.b kann man alle normalen Stundenpläne direkt einsehen und mit wenigen klicks den Plan erstellen), aber leider nur in PDF die Tabellen exportieren kann. Zurzeit wird die Pdf dann auf dem Server in eine png umgewandelt und mit php dargestellt. Da der Provider der Schulwebsite (webhosting (kein vServer oder ssh Zugriff)) php5 was z.b beim Login für den Vertretungplan noch benutzt wird einstellen wird und man alles eh auf php7 umschreiben muss, dachte ich diese modernisierung wäre auch gleich eine gute Idee.

Jedenfalls ist jetzt das Problem wie ich die Pdf Tabellen in Mysql schreiben kann.

(Mir ist natürlich bewusst das Tabellen bei PDF nicht mit Zeilen und spalten direkt kopiert werden können.)

Ein Programm mit Verwendung von irgendwelchen einfach librarys wäre auch kein Problem.

Hier nochmal ein Bild von der jetzigen Tabelle als PNG

(Alle verschiedenen Stufen also z.b 5,6,7 usw. müssten in eine Seperate MySQL Tabelle)

Danke für alle Antworten.

Bild zum Beitrag
Lässt sich irgendwie von PDF konvertieren und in MySQL schreiben 100%
Ein neues Programm zur Erstellung mit direktem MySQL sup schreibe 0%
Computer, Technik, PDF, Webseite, Datenbank, MySQL, OCR, PHP, Technologie, Abstimmung, Umfrage

Problem mit MySQL wenn ich Apache2 über anderen Port verbinde?

Hallo,

heute habe ich ein kleines Problem,

und bevor ich eine moralpredigt bekomme das Man apache2 nur auf Port 80 und 443 benutzt:

"Ich weiß jedoch ist es sinnvoll den "Standartserver" (80/443) auf das verzeichnis /darf/jeder/sehen zu leiten und z.B. den "Home-Server" (8080) auf das verzeichnis /streng/geheim zu leiten"

Falls sich jetzt jemand Fragt wie ich das gemacht habe:

Terminal öffnen

cd /etc/apache2

nano ports.conf

hinzufügen von "Listen [DEIN_PORT]"

^X danach Y und ENTER

nano apache2.conf

danach unter den verzeichnisen einen Neuen eintrag beginnend mit "<Directory [/dein/streng/geheimes/verzeichnis]>" und anschließend mit den von dir gewünschten optionen versehen

^X danach Y und ENTER

dann in das Verzeichnis sites-enabled wechseln

cd /sites-enabled

danach entweder eine neue datei mit endung ".conf" erstellen oder die "000-default.conf" erweitern, in meinem Fall:

nano 000-default.conf

hinzufügen eines neuen Virtual host

<Virtualhost *:[DEIN_PORT_DER_IN_DER_PORTS_CONF_STEHT]>
DocumentRoot [DEIN_STRENG_GEHEIMES_VERZEICHNIS] 
ServerName STRENG_GEHEIMER_SERVER 
ServerAdmin SAG_ICH_DIR_NICHT@geheime_email.tld 
</Virtualhost> 

vor dem : muss ein * sein also *:

danach noch ein restart

sudo service apache2 restart

und tada "zweiter" Server läuft (evtl musst du [DEIN_STRENG_GEHEIMES_VERZEICHNIS] noch mit chown etc. modifizieren das Apache die nötigen rechte hat um darauf zugreifen zu können)

Jetzt mein Problem:

Unter dem "Standart" Port von Apache (80) wenn ich mit der datei test.php eine Verbindung zum Mysql - Server herstellen möchte funktioniert dies Prima, sobalt ich die Test.php jedoch auf meinen "zweiten" Server unter Port 8081 schiebe so kommt nur "Verbindung fehlgeschlagen: Connection refused" zum vorschein.

Inhalt von test.php:

<?php
    $db_user = "BENUTZER";
    $db_pw = "PASSWORT";
    $db_place = "DATENBANK";
    $db_server = "192.16x.17x.xxx";
    $mysqli = new mysqli($db_server, $db_user, $db_pw, $db_place);
    $state = true;
    if ($mysqli->connect_errno) {
        return "Verbindung fehlgeschlagen: " . $mysqli->connect_error;
        $state = false;
    }
    echo mysql_get_host_info($mysqli);

Info:

den Verwendeten nutzer habe ich von allen rechten bis hin zu "nur" datenbankspezifische Rechte schon alles durchprobiert. Auch habe ich schon von "localhost" auf "%" auf "192.16x.17x.xxx" etc. umgestellt.

Gehe ich auf 192.16x.17x.xxx/phpmyadmin und verwende den Benutzernamen + Passwort kann ich mich Problemlos einlogen (auch wenn ich über 192.16x.17x.xxx:8081/phpmyadmin einlogen möchte)

Ich sehe mich echt nicht raus als währe es gut wenn jmd den fehler erkennen und finden würde, danke schonmal

Computer, Technik, programmieren, MySQL, PHP, Technologie, Apache2, phpMyAdmin, Spiele und Gaming

Meistgelesene Beiträge zum Thema MySQL