Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z $_GET i odzyskiwaniem danch
Forum PHP.pl > Forum > Przedszkole
geetzeq
Witam. Mam problem i nie mam pojęcia jak go ugryźć. Wywołuję stronę w URLu z parametrem id tzn http://....../addkom.php?id=20 i w pliku addkom.php chcę ją pobrać
CODE
function pobierz($komunikat='') {

echo "";
# pobieranie tytul,tresc,ocena
echo "";
echo "";
}

if ($_POST["idz"]==1) {
if ((!empty($_POST["tytul"])) && (!empty($_POST["tresc"])) && (!empty($_POST["ocena"]))) {
$data=date('Y-m-d');
$log=$_SESSION['log'];
$id=$_GET['id'];
mysql_query("INSERT INTO opinie (op_autor,op_ocena,op_sluga,op_tytul,op_tresc,op_data) VALUES ( '$log', '".htmlspecialchars($_POST["ocena"])."','$id', '".htmlspecialchars($_POST["tytul"])."','".htmlspecialchars($_POST["tresc"])."','$data' )") or die(mysql_error());
header('Location: wyniki.php?id='.$id);

}
else pobierz('Musisz wypelni´c wszystkie pola!');
}
else pobierz();
?>


ale zmienna $id pozostaje pusta. Co może to powodować? Czy są komendy które wpływają na GET'a? Tym bardziej nie rozumiem jak powstał ten problem że w innych przypadkach ten sposób przekazywania wartości działa mi bez problemu. Pozdrowionka
Marr
w zasadzie to ja nie wiem co może być tego przyczyną, ale mi w tego typu przypadkach zawsze pomaga wyswietlenie sobie całej tablicy $_GET tak więc polecam:

  1. <?php
  2. echo '<pre>';
  3. print_r($_GET);
  4. echo '</pre>';
  5. ?>


i zobacz co Ci wypluje...
elmozaur
dokladnie.
Albo przed pierwszym ifem daj echo $_GET['id'];
blooregard
$id = $_GET['id'] jest zamknięty w jakimś if-ie (nawet w dwóch), gdzie sprawdzasz inne warunki, m.in. zmienne z POST-a. A są one spełnione?
Bo jak nie, za cholerę Ci tego $_GET['id'] nie odczyta.
geetzeq
Ify są spełnione bo zapisuje mi wartości do bazy poza $id. A $_GETa wciskałem już wszędzie tzn przed ifami, przed funkcją i pobiera dane tylko jak był wewnątrz funkcji ale jest wtedy dostępny lokalnie.
A po wstawieniu
echo '<pre>';
print_r($_GET);
echo '</pre>';
wyrzuca
Array
(
)
Spawnm
ok posty są z forma, a get? dałeś w action='web.php?id=20' questionmark.gif
geetzeq
Jeśli pytasz czy wywołuje w urlu stronę z nadaniem id wartości to dokładnie tak robię.

Już kumam że chodzi Ci o action w funkcji podczas pobierania danych, to nie. wpisalem action='addop.php' ale chyba nie tutaj problem bo dlaczego nie chodzi GET poza funkcja?

No i jak będzie z pomysłami. Przychodzi Wam coś do głowy? Strasznie mnie to blokuje więc spróbujcie coś podpowiedzieć. Próbowałem trochę pokombinować i we wszystkich miejscach pliku wywołanie GET nie zwraca wartości poza funkcją. Może sama funkcja Wam coś podpowie:
CODE

function pobierz($komunikat='') {
echo "<table><form action='dodajopis.php' method=post><tr><td colspan='2' align='center'><h2>$komunikat</h2></td></tr>";
echo "<tr><td><h1>Tytuł</h1></td></tr>";
echo "<tr><td colspan='2'><input type=text name=tytul maxlenght='30' style='font-size: 12pt; width: 400px; height: 20px; border-style: solid; border-color: #000000; border-width: 1px'/></td></tr>";
echo "<tr><td><h1>Treść:</h1></td></tr>";
echo "<tr><td colspan='2'><textarea name=tresc cols='60' rows='7' style='font-size: 12pt; border-style: solid; border-color: #000000; border-width: 1px'></textarea></td></tr>";
echo "<tr><td><h1>Wystaw ocenę ogólną :</h1></td><td><table><tr><td><input type='radio' name='ocena' value='1'>1 </td><td><input type='radio' name='ocena' value='2'>2 </td><td><input type='radio' name='ocena' value='3'>3 </td><td><input type='radio' name='ocena' value='4'>4 </td>";
echo "<td><input type='radio' name='ocena' value='5'>5 </td><td><input type='radio' name='ocena' value='6'>6 </td><td><input type='radio' name='ocena' value='7'>7 </td><td><input type='radio' name='ocena' value='8'>8 </td><td><input type='radio' name='ocena' value='9'>9 </td><td><input type='radio' name='ocena' value='10'>10</td></tr></table></td></tr>";
echo "<tr><td colspan='2' align='center'><input type=submit name=idz value='Dodaj'><input type=hidden value='1' name=idz></td></tr>";
echo "</form></table>";
$komunikat
";
echo "
Tytuł
";
echo "";
echo "
Treść:
";
echo "";
echo "
Wystaw ocenę ogólną :
1 2 3 4 ";
echo "5 6 7 8 9 10";
echo "";
echo "";}
if ($_POST["idz"]==1) {
if ((!empty($_POST["tytul"])) && (!empty($_POST["tresc"])) && (!empty($_POST["ocena"]))) {
$data=date('Y-m-d');
$log=$_SESSION['log'];
mysql_query("INSERT INTO opinie (op_autor,op_ocena,op_sluga,op_tytul,op_tresc,op_data) VALUES ( '$log', '".htmlspecialchars($_POST["ocena"])."','$id', '".htmlspecialchars($_POST["tytul"])."','".htmlspecialchars($_POST["tresc"])."','$data' )") or die(mysql_error());
header('Location: wyniki.php?id='.$id);
}
else pobierz('Musisz wypełnić wszystkie pola!');
}
else pobierz();
Spawnm
Albo niedowidzę , albo nie deklarujesz nigdzie $id ,
daj tagi phpowe bo łatwiej się czyta .
A jeśli chodzi o get i post na 1 stronie to ci pisałem,
w fomie deklarujesz post więc wszystko leci jako post i dajesz w action='strona.php?mojget=cos';
albo daj input type='hidden' i w nim ukryj id , dzięki czemu bez kombinowania wszystko będzie post.
geetzeq
Nie ma nigdzie deklaracji id bo wszędzie wciskałem i działa tylko wewnątrz funkcji co mnie nie urządza więc ostatecznie zniknęło smile.gif
Spawnm poproszę trochę jaśniej dla laika. Czyli jak na stronie deklaruje posta to z get'ow już nie mogę skorzystać?
Jak uzyć action? "action='strona.php?id='".$_GET['id']? I wtedy id będę wyciągać ['id']?
Spawnm
tak jeśli chcesz mieć i post get na 1 stronie to daj w formie
action='plik.php?mojget=wartosc' method='post'

wtedy to co w action odbierasz przez $_GET a resztę przez $_POST.
choć chyba lepiej dać po prostu input type='hidden' i w nim dać to id ;]
wtedy wszystko będzie post smile.gif

a i jeśli w funkcji ma działać $id które jest w kodzie strony to musisz je przekazać tak jak $komunikat.
geetzeq
dzięki Spawnm!!!! Próbowałem z action i nie mam pojęcia jak to zrobić ale udało się z hidden'em smile.gif
Pozdrowionka

Witam Mam nowy problem ale z podobnej dziedziny tzn znowu te POSTY i GETY a wygląda on tak:
pobieram dane w <action method=post>
CODE
}
<?php
if (($_POST["add"]==1) and (!empty($_POST['nazwa'])or !empty($_POST['adres'])or !empty($_POST['miasto'])or !empty($_POST['rejon'])or !empty($_POST['branza']))){
$html='wybor.php?';
if (!empty($_POST['nazwa'])) {$html.='n='.$_POST['nazwa'].'&';}
if (!empty($_POST['miasto'])) {$html.='m='.$_POST['miasto'].'&';}
if (!empty($_POST['adres'])) {$html.='a='.$_POST['adres'].'&';}
if (!empty($_POST['branza'])) {$html.='b='.$_POST['branza'].'&';}
if (!empty($_POST['rejon'])) {$html.='r='.$_POST['rejon'];}
header("'Location: ".$html."';");
}
else Showform();

?>


a po wpisaniu danych i uruchomieniu wyrzuca błąd:
"Warning: Cannot mod in /virtual/s/l/slug.ugu.pl/proba/wyszukiwarka.php on line 56" czyli w linijce 'header'. DLLLLLLAAAAAAACCCZXZZZEEEGGGOOOO!!!!!!!!?questionmark.gif? smile.gif
Pozdrowionka
Fifi209
Ponieważ, nagłówki muszą być wysłane jako pierwsze.

Temat: PHPHeader

Zapraszam do tematu. winksmiley.jpg
Spawnm
po co w header("'Location: ".$html."';");
dałeś ."';" questionmark.gif i po co w header dałeś i ' i " ?
geetzeq
Faktycznie wystarczyło ob_start. Dzięki Fifi209!
A średnik i podwójny cudzysłów był wynikiem moich bezowocnych kombinacji. Wiem że nie powinno ich tam być ale tonący brzytwy się chwyta smile.gif
Pozdrowionka

No i długo nie trzeba było czekać na kolejny problem. Strona ma wysyłać informację w postaci maila. I wysyłała dopóki strona była w formacie utf-8, ale nie było polskich znaków. Przekonwertowałem ją na iso-są polskie znaki ale nie wysyła maili i co lepsze nie moge wrócić do poprzedniego ustawienia tzn bez ogonków z mailami. Stroa wygląda tak:
CODE

<?php
$headers="MIME-Version: 1.0\r\n";
$headers.="Content-type: text/html; charset=iso-8859-2\r\n";
$headers.="From: Nazwa Strony \r\n";
$content="Aktywacja Konta

Aby aktywować konto na stronie xxxxxx.pl musisz kliknąć poniższy link aktywujący:

http://xxxxx.pl/aktywacja.php?active="...;actCode."

Dziękuje admin strony xxxxx.pl";
mail($_POST["mail"], "Link Aktywacyjny", $content, $headers) or die("

Błąd");
?>
DREEMus
a BBCode Cie gryzie questionmark.gif

na przyszłość pisz sobie KOD jakoś czyściej ...

  1. <?php
  2. $headers = 'MIME-Version: 1.0' . "r\n";
  3. $headers .= 'Content-type: text/html; charset=iso-8859-2' . "r\n";
  4. $headers .= 'From: Nazwa Strony' . "r\n";
  5. $content = "Aktywacja Konta
  6.  
  7. Aby aktywować konto na stronie xxxxxx.pl musisz kliknąć poniższy link aktywujący:
  8.  
  9. <a href=\"http://xxxxx.pl/aktywacja.php?active=&quot...;actCode\" target=\"_blank\">http://xxxxx.pl/aktywacja.php?active=&quot...;actCode</a>
  10.  
  11. Dziękuje admin strony xxxxx.pl";
  12.  
  13. mail ($_POST['mail'], "Link Aktywacyjny", $content, $headers) or die ('Błąd ...');
  14. ?>


PS.1
http://pl.php.net/manual/pl/function.mail.php
Poczytaj sobie o parametrze "treść" ...

PS.2 - prosto z manuala smile.gif
  1. <?php
  2. // Aby wysłać e-mail HTML, musi być ustawiony nagłówek Content-type
  3. $headers  = 'MIME-Version: 1.0' . "r\n";
  4. $headers .= 'Content-type: text/html; charset=iso-8859-1' . "r\n";
  5. ?>
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.