PHP und OnClick
Christian
- php
Hallo,
ich habe ein Problem wo ich jetzt den ganzen Abend schon dran verzweifel und nach Suche, wie ich das lösen könnte.
Folgendes ist meine Idee:
Ich will aus einer Datenbank entsprechend einer Suchvorgabe Daten in ein Formular eingeben und anderem auch einen Download-Link, denn ich hinter einen Button definiert mit
<button value="download" name="downloads" type="button" onClick="Linkstart()">Download</button>
(innerhalb einer Echo-Anweisung)
Nun soll das OnClick aber nicht nur den Download starten, was weiter auch kein Problem für mich wäre zu schreiben, sondern auch gleich noch die Downloads-Anzahl erhöhen und in die Datenbank zurückschreiben. Irgendwie habe ich dazu aber bis jetzt keine sinnvolle Möglichkeit gefunden, da die JavaScript-Funktion bzw. das OnClick-Event mit entsprechenden PHP-Anweisungen zu verbinden, die beim Klicken auf den Button ausgeführt werden sollen, also in etwa das hier:
$anzahldl ++;
$query = "UPDATE media SET anzahldl = '$anzahldl' WHERE id='$nid'";
$sql = mysql_query($query);
Das Problem ist halt auch, dass sowohl die Daten, die vorher ausgelesen wurden mit PHP/MySQL in die Funktion rein müssen als auch wieder raus müssen.
Hmmmm, kann mir hier irgendwer weiterhelfen? Ich wäre wirklich sehr dankbar, weil das so das letzte Problem ist, was ich noch zu lösen habe.
Kleine Ergänzung:
Das ganze sollte auch noch so funktionieren, dass, wenn als Ergebnis der vorherigen Suche, mehrere Datensätze ausgegeben wurden und dann ein bestimmter ausgesucht und dort auf den "Download"-Button geklickt wird, genau nur bei diesem einen bestimmten Datensatz die Download-Anzahl erhöht wird.
Hello,
schau dir mal das Download-Skript Beispiel in der PHP-FAQ an. Dort kannst du selbstverständlich auch noch ein Update das Zählers unterbringen. Dieses Skript sprichst du dann gezielt mit dem Button an.
MfG
Rouven
Hi Christian,
$anzahldl ++;
$query = "UPDATE media SET anzahldl = '$anzahldl' WHERE id='$nid'";
$sql = mysql_query($query);
Unabhängig von deinem eigentlichen Problem (dazu hat dir Rouven ja schon einen Tip gegeben) noch eine Anmerkung, du willst vermutlich lieber folgendes schreiben:
$sql = "UPDATE media SET anzahldl = anzahldl + 1 WHERE id = '" . mysql_real_escape_string($nid) . "'";
$result = mysql_query($sql);
if ($result === false) {
// Fehlerbehandlung!
}
Was hieran anders ist? Zunächst lese ich die Downloadzahl nicht erst aus, inkrementiere sie in PHP und lasse sie dann wieder in die Datenbank schreiben, sondern ich inkrementiere direkt in der Datenbank. Das hat u.a. auch den Vorteil, dass es nicht zu Problemen kommt, wenn mehrere Benutzer den Download gleichzeitig anfordern. Desweiteren sorge ich dafür, dass (vermutlich) vom Besucher kommende Parameter korrekt escaped werden, damit es nicht zu SQL Injections kommen kann. Letzendlich habe ich auch noch eine Fehlerbehandlung angedeutet für den Fall, dass mysql_query() aus irgendeinem Grund einen Fehler zurückliefert.
Viele Grüße,
~ Dennis.