PhP script um eintrag um 1 erhöhen

  • geschlossen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • PhP script um eintrag um 1 erhöhen

    Hmm ich bin hier noch am durchdrehen. ich hatte ja vor kurzem dieses Problem das ich downloads mit einre php datei steuern möchte.

    siehe hier


    Das hat nun wunderbar geklappt und auchdas die link dynamisch erzeugt werden funktioniert.
    Das einzige was nicht geht ist der download counter den ich für die datei egdacht habe.

    Kurz zusammenfassung:

    Wenn jemand eine datei hochläd, wird dieser datei ein willkürlicher name zugewiesen bestehend aus datei_ und einer zufälligene zahlen kombination.

    So wenn nun jemand die datei downloaden will macht er das über das script das ich im letzten thread gelesen habe:

    PHP-Quellcode

    1. <?php
    2. include('../inc/config.php');
    3. $fname = "../daten/".$_REQUEST['file'];
    4. if(file_exists($fname)) {
    5. header("Pragma: public");
    6. header("Expires: 0");
    7. header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    8. header("Cache-Control: private",false);
    9. header("Content-Type: ".filetype($fname));
    10. header("Content-Disposition: attachment; filename=\"".$_REQUEST['file']."\";");
    11. header("Content-Transfer-Encoding: binary");
    12. header("Content-Length: ".filesize($fname));
    13. readfile($fname);
    14. exit;
    15. }
    16. ?>
    Alles anzeigen


    Die gesammten informationen von der datei wird aus einer datenbank gezogen in der beim upload alles nötige erstellt wird unter anderem auf der name der datei in der spalte name.

    SO nun habe ich auch eine spalte count., und wollte das jedensmal wenn jemand eine datei runterläd dieser wert um 1 erhöht wird. also ein stinknormaler counter...

    leidr funktioniert das nicht so wie ich mir das vorstelle... also im prinzip gar nicht. leider wird auch ken fehler ausgegeben von daher weiß ich nicht was ich falsc gemacht habe.

    Hier mal der komplette code:

    PHP-Quellcode

    1. <?php
    2. include('../inc/config.php');
    3. $fname = "../daten/".$_REQUEST['file'];
    4. if(file_exists($fname)) {
    5. $zahl=1;
    6. $nam=$_REQUEST['file'];
    7. $sqlll = 'UPDATE folder SET geladen = geladen + 1 WHERE name = '.$nam;
    8. $sqllll = mysql_query($sqlll);
    9. header("Pragma: public");
    10. header("Expires: 0");
    11. header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    12. header("Cache-Control: private",false);
    13. header("Content-Type: ".filetype($fname));
    14. header("Content-Disposition: attachment; filename=\"".$_REQUEST['file']."\";");
    15. header("Content-Transfer-Encoding: binary");
    16. header("Content-Length: ".filesize($fname));
    17. readfile($fname);
    18. exit;
    19. }
    20. ?>
    Alles anzeigen


    Sorry für die städigen posts, aber die bringen beiträge und da ich grad am php lernen bin gibt es ja häufig genug probleme..

    hoffe mir kann wer helfen..

    gruß theawak3r
  • Moin,
    also es liegt an deinem SQL-Befehl, soweit ich das erkennen kann.
    Ersetze "$sqllll = mysql_query($sqlll);" mit "$sqllll = mysql_query($sqlll) OR die('Fehler: '.mysql_error());" So werden dir SQL-Fehlermeldungen ausgegeben.
    Name scheint ein String (bzw. VARCHAR/TEXT, etc.) zu sein und daher müssen die Angaben in Anführungsstrichen gegeben werden.
    Also am Besten nimmst du als Abfrage mal

    Quellcode

    1. $sqlll = "UPDATE `folder` SET `geladen` = (`geladen`+1) WHERE `name` = '".$nam."'";

    Mit diesen ` verhinderst du, dass bei der Abfrage missgeschicke passieren und kennzeichnest Namen der Spalten. Damit niemand durcheinander kommt. (Weiß nicht, ob "name" ein reserviertes Wort ist, darum fährst du so immer sicherer.)


    Gruß
    Broken Sword

    P.S.
    In der config.php wird doch schon zur Datenbank verbunden, oder?