Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]przesyłanie danych z select
Forum PHP.pl > Forum > Przedszkole
bluebird
witam stworzyłem rozwijaną listę która pobiera nazwę plików i nadane tytuły z bazy danych - po kliknięciu pobierz ma pobierać plik z katalogu abc na dysk używając gotowego skryptu force-download.php - niestety zmienna $_POST['dok'] jest pusta, jaki popełniłem błąd w kodzie?

CODE
<form action="force-download.php?file=dokumenty/abc/".$_POST['dok']."" method="post" class="">
<select style="width:105px;" name="dok">
<option value="">Dokumenty</option>
<?php include("polaczenie.php");
$query = "SELECT tytul,nazwa FROM dokumenty WHERE miasto='abc'";
$result = mysql_query ($query);
if ($result!=''){while ($row = mysql_fetch_array($result)) {
echo ("<option value=\"".$row[1]."\">".$row[0]."</option>");}}
include("rozlaczenie.php");?>
</select>
<input type="submit" value="Pobierz"/></form>


z góry dzieki za pomoc
thek
Apostrofy przy POST to już widzę pierwszy błąd. Nie można wrzucać "na chama" zmiennej post tak:
  1. <form action="force-download.php?file=dokumenty/abc/".$_POST['dok']."" method="post" class="">

tylko jak już co:
  1. <form action="force-download.php?file=dokumenty/abc/<?php echo $_POST['dok'] ?>" method="post" class="">

Poza tym jak masz mieć ją pełną, skoro ona dopiero PO naciśnięciu submit się uzupełnia. A Twoim zdarzeniem po naciśnięciu submit jest wywołanie innego pliku. To w nim masz przechwycić jaki plik wywołano i robisz to odczytując dane z select wewnątrz pliku force-download. To w nim się do tej zmiennej dobierasz.
bluebird
czyli jak ostatecznie powinien wyglądać kod żeby działał?
thek
Na pewno nie tak jak napisałeś smile.gif Powinien w pliku force_download.php pobierać zmienną $_POST['doc'] i w zalezności od niej wysyłać do przegladarki własciwy plik. Nie podam gotowca bo nie na tym to polega. Poza tym mogę się tylko domyślać ścieżek na Twoim serwerze na podstawie tego co wrzuciłeś do action, ale też nie mogę mieć pewności.
bluebird
plik force-download.php jest gotową funkcją w phpie który zmusza do ściągnięcia pliku na dysk i wywołuje sie to właśnie za pomocą "force-download.php?file=ściezka_do_pliku" czy rozwiązaniem bedzie dodanie do form
CODE
onchange="this.value=<?php echo $_POST['dok']; ?>"
questionmark.gif

proszę o gotowca bo tylko wtedy sie nauczę...

pomóżcie prosze... :|
Rookie
Gotowce to nie w tym dziale, nauczysz się najlepiej na własnych próbach i błędach, a nie oczekując na rozwiązanie na tacy...
Largo
Cytat(bluebird @ 16.09.2009, 14:14:01 ) *
plik force-download.php jest gotową funkcją w phpie który zmusza do ściągnięcia pliku na dysk i wywołuje sie to właśnie za pomocą "force-download.php?file=ściezka_do_pliku" czy rozwiązaniem bedzie dodanie do form
CODE
onchange="this.value=<?php echo $_POST['dok']; ?>"
questionmark.gif

proszę o gotowca bo tylko wtedy sie nauczę...

pomóżcie prosze... :|


Witaj,

Ten tekst mnie powalił... Jakby za Ciebie ktoś odwalał pracę to też by powiedział, że jak on pracuje to Ty się męczysz? ^^ Ciekawa teoria, muszę ją chyba zapisać do humoru miesiąca :-)

A rozwiązanie w sumie jest proste. Musisz w pliku force-download.php pobrać zmienną, wiesz chyba jak? I następnie wybrać plik z folderu i użyć funkcji readfile(). Z tym chyba sobie poradzisz? Mniej więcej przykład działania.

  1. <?php
  2.  
  3. $file = $_POST['doc'];
  4.  
  5. if ( file_exists( $file ) )
  6. {
  7. readfile( $file );
  8. }
  9.  
  10. ?>


Oczywiście weż pod uwagę ścieżkę.

Pozdrawiam,
Largo
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.