Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php + SQL] Prosty download
Forum PHP.pl > Forum > Przedszkole
matyskiewicz
Przeszukując internet znalazłem oto taki prosty skrypt downloadu, lecz niestety go nie uruchomiłem proszę, o pomoc w uruchomieniu:
  1. <?
  2. $polacz = mysql_connect ("host", "login", "haslo") or die (mysql_error());
  3. mysql_select_db ("baza", $polacz) or die (mysql_error());
  4. $pliki = mysql_query("SELECT * FROM download");
  5. while ($dane = mysql_fetch_array($pliki)) {
  6. $nazwa = $dane[nazwa];
  7. $licznik = $dane[licznik];
  8. $plik = $dane[plik];
  9. print "Nazwa pliku: $nazwa";
  10. print "<A HREF=index.php?id=download&plik=$plik>Sciagnij</A>";
  11. print "Pobrano: $licznik";
  12.  }
  13. if($plik > 0) {
  14. $polacz = mysql_connect ("host", "login", "haslo") or die (mysql_error());
  15. mysql_select_db ("baza", $polacz) or die (mysql_error()); 
  16. $query = "SELECT * FROM download WHERE plik = '$plik';";
  17. $wynik = mysql_query ($query); 
  18.  $dane = mysql_fetch_array ($wynik);
  19.  $licznik = $dane[licznik];
  20.  $url = $dane[url];
  21. header("location: $url");
  22. $query = "UPDATE download SET licznik = licznik+1 WHERE plik='$plik';"; 
  23. $wynik = mysql_query ($query); // wykonuje powyższa linijkę kodu
  24.  return $licznik+1;
  25. } else { 
  26. echo "Błędny link lub brak pliku!";
  27. }
  28. ?>

  1. CREATE TABLE `download` (
  2. `plik` TINYINT NOT NULL AUTO_INCREMENT,
  3. `url` TEXT NOT NULL ,
  4. `nazwa` TEXT NOT NULL ,
  5. `licznik` TEXT NOT NULL ,
  6. UNIQUE (
  7. `plik`
  8. )
  9. );

Rodzaj blędu: część tabeli po ktorej następuje ten skrypt nie otwiera się
erix
Jaka tabela się nie otwiera?
Sorry, ale po tym kawałku kodu niewiele można wywnioskować (mam na myśli te zmienne pod koniec if)...
matyskiewicz
Cytat(erix @ 12.10.2006, 20:13:20 ) *
Jaka tabela się nie otwiera?
Sorry, ale po tym kawałku kodu niewiele można wywnioskować (mam na myśli te zmienne pod koniec if)...

Moja strona
  1. <?php
  2. if($plik > 0) {
  3. $polacz = mysql_connect ("host", "login", "haslo") or die (mysql_error());
  4. mysql_select_db ("baza", $polacz) or die (mysql_error()); 
  5. $query = "SELECT * FROM download WHERE plik = '$plik';";
  6. $wynik = mysql_query ($query); 
  7.  $dane = mysql_fetch_array ($wynik);
  8.  $licznik = $dane[licznik];
  9.  $url = $dane[url];
  10. header("location: $url");
  11. $query = "UPDATE download SET licznik = licznik+1 WHERE plik='$plik';"; 
  12. $wynik = mysql_query ($query); // wykonuje powyższa linijkę kodu
  13.  return $licznik+1;
  14. } else { 
  15. echo "Błędny link lub brak pliku!";
  16. }
  17. ?>
ma zliczać kliknięcia
  1. <?php
  2. if (($_GET['id'] == '') || ($id == "index")) {
  3.  include 'news.php';  
  4.  } elseif ($_GET['id'] == 'archiwumi') {
  5.  include 'archiwum.php';
  6.  }
  7. ?>
a tym, wywołuje strony
erix
Cytat
  1. <?php
  2. header("location: $url");
  3. $query = "UPDATE download SET licznik = licznik+1 WHERE plik='$plik';"; 
  4. $wynik = mysql_query ($query); // wykonuje powyższa linijkę kodu
  5. ?>

Może dobrze zrozumiałem.

Umieść header(... po mysql_query.
uli
Cytat(matyskiewicz @ 12.10.2006, 18:41:45 ) *
  1. <?php
  2. ...
  3.  $dane = mysql_fetch_array ($wynik);
  4.  $licznik = $dane[licznik];
  5. ...
  6. $query = "UPDATE download SET licznik = licznik+1 WHERE plik='$plik';"; 
  7. ...
  8. ?>


A nie powinno być tak?

  1. <?php
  2. $licznik = $dane[licznik];
  3. ...
  4. $query = "UPDATE download SET licznik = $licznik+1 WHERE plik='$plik'";
  5. ?>


Nie jestem pewien czy do pola można dodać pole+1 tym bardziej że masz zdefiniowane pole licznik jako text.
matyskiewicz
Niestety nie ma zmiany. uli wydaje mni się ze
  1. <?php
  2. $licznik+1
  3. ?>
ta zmenna wczytuje obecny stan licznika, a nast ępnie dodaje do niego 1 i zapisuje w bazie.
  1. <?php
  2. plik='$plik';";
  3. ?>
zastanawia mnie ten zapis: czy nie powinien byc tylko ten ostatni srednik?
ULI:
<?php
$licznik = $dane[licznik];
...
$query = "UPDATE download SET licznik = $licznik+1 WHERE plik='$plik'";
?>To w takim razie gdzie mam umiescic zmienna dane?

A co powiecie na to:
  1. <?php
  2. $query = "SELECT * FROM download WHERE plik = '$plik'";
  3. $wynik = mysql_query ($query); 
  4. $dane = mysql_fetch_array ($wynik);
  5. $licznik = $dane[licznik];
  6. $url = $dane[url];
  7. ?>

  1. <?php
  2. $query = "UPDATE download SET licznik = licznik+1 WHERE plik='$plik'"; 
  3. $wynik = mysql_query ($query);
  4. header("location: $url");
  5.  return $licznik+1;
  6. } else { 
  7. echo "Błędny link lub brak pliku!";
  8. }
  9. ?>
W jednej funkcji są 2 takie same zmienen o róznych wartosciasch

Chętnie przyjme modyfikacje powyższego skryptu wg Waszych sugesti
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.