Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MSSQL][PHP]przesyłanie $_GETem kilku wartosci przy porcjowaniu wyników
Forum PHP.pl > Forum > Przedszkole
tom66
witam,

mam taki oto problem.
Jest sobie pole :
  1. <select name="sp[]" style="{width:9em}" multiple='multiple'>
  2. <?
  3. mysql_connect()
  4. i inne "pierdy" do polączenia...
  5. $result = mysql_query("SELECT pw.status
  6. FROM status pw order by pw.status");
  7. while ($row = mysql_fetch_array($result,MYSQL_BOTH) ) {?>
  8. <option value="<?= $row['status'] ?>"><?= $row['status'] ?></option>
  9. <?}?>

po wybraniu kilku wartosci wysylam je $_GETem na inna stronę....

gdzie odbieram dane:
  1. if(isset($_GET['sp']))
  2. {
  3. $a = $_GET['sp'];
  4. $N = count($a);
  5. $array = array();
  6. for($i=0; $i < $N; $i++)
  7. {
  8. $array[$i]=($a[$i]);}
  9.  
  10. $sp=implode("','",$array);
  11. $sp1="status in ('".$sp."')";
  12.  
  13. }
  14. else {
  15. $sp1=1;
  16.  
  17. }


dodając $sp1 do zapytania sql-owego ładnie mi wyświetla wyniki które chciałem,
ale mam porcjowanie wyników na stronie po 50,

teraz gdy będę chciał przejsc na drugą stronę z kolejna porcją wyników
  1. echo "<a href='ss.php?strona=".($i)."&sp=".$sp."' >".($i+1)." </a>


mam błąd. Zauważyłem ze GET wysłając wartosci pola select przy pierwzsym wyslaniu wynikow wyszkuania mam w linku
ss.php?sp=1&sp=2&sp=3

natomiast przechodząc na 2 stronę mam ss.php?strona=2&sp=1

problem jest taki.. jak zrobic aby w kolejnych wynikach stron byly przekazywane wszsyktie wartosci z wybranego pola select
mam nadzieję ze jasno to opisalem smile.gif




Hpsi
1. wysyłałbym w poscie
2. do sessji zapisałbym dane serialize($_POST); dzięki temu miałbym dostęp do tego w każdym kroku
tom66
Cytat(Hpsi+ @ 3.06.2011, 11:56:24 ) *
1. wysyłałbym w poscie
2. do sessji zapisałbym dane serialize($_POST); dzięki temu miałbym dostęp do tego w każdym kroku


co do pierwszego ok, zmieniłem .
Natomist mam problem z drugim....
po zserializowaniu mam:
  1.  
  2. if(isset($_POST['sp']))
  3. {
  4. $a = $_POST['sp'];
  5. $N = count($a);
  6. $array = array();
  7. for($i=0; $i < $N; $i++)
  8. {
  9. $array[$i]=($a[$i]);}
  10. $sp2=serialize($_POST['sp']);
  11. $sp=implode("','",$array);
  12. $sp1="status in ('".$sp."')";
  13.  
  14. } // status projektu
  15. else { $sp1=1;
  16. $sp='';
  17.  
  18. }

wartosc print_r($sp2); -> s:46:"a:2:{i:0;s:7:"Aktywny";i:1;s:10:"Odłożony";}";
w inpucie typu hidden mam
  1. echo "<input type='hidden' name='sp' value=".$sp2." >";


i po przeladowaniu i przejsciu na stonę nr 2 wartosc zmiennej $sp mam a

coś mi nie wychodzi z tym serialized....



Hpsi
serialize
unserialize
zapomniałem ci podać liste potrzebnych funkcji - sorry smile.gif
tom66
Cytat(Hpsi+ @ 3.06.2011, 14:41:19 ) *
serialize
unserialize
zapomniałem ci podać liste potrzebnych funkcji - sorry smile.gif



nie no, w manula już sobie je znalazłem ale jakoś do mnie te przyklady nie trafiają.....

dlaczego

kod :
  1.  
  2. if(isset($_POST['sp']))
  3. {
  4. $a = $_POST['sp'];
  5. $N = count($a);
  6. $array = array();
  7. for($i=0; $i < $N; $i++)
  8. {
  9. $array[$i]=($a[$i]);}
  10. print_r ($a);
  11. $sp2=$a;
  12. $sp=implode("','",$array);
  13. $sp1="status in ('".$sp."')";
  14.  
  15. } // status projektu
  16. else { $sp1=1;
  17. $sp='';
  18.  
  19. }


nie przyjmuje wartości z pola hidden ? gdy przechodzę na stronę drugąquestionmark.gif
jak wykorzystac to serialize i unserialize

Hpsi
hmm jeśli dałeś serialize do inputa type hidden , to sprawdz sobie co sie stanie jak w "value" dasz jakis ciag znaków z cudzysłowiem bez htmlspecialchars...
tom66
Cytat(Hpsi+ @ 3.06.2011, 14:53:41 ) *
hmm jeśli dałeś serialize do inputa type hidden , to sprawdz sobie co sie stanie jak w "value" dasz jakis ciag znaków z cudzysłowiem bez htmlspecialchars...


no dobra a ta sie wyslac array w polu hidden bez serialize?

Hpsi
możesz zawsze sobie ja przefiltrować w odpowiadający Tobie sposób, ale powiem Ci ze ja nigdy bym nie wrzucał tego typu rozwiązania bym nie polecał.
Czemu sie wzbraniasz od zapamiętywania tych danych w sesji ?
tom66
Cytat(Hpsi+ @ 3.06.2011, 15:16:35 ) *
możesz zawsze sobie ja przefiltrować w odpowiadający Tobie sposób, ale powiem Ci ze ja nigdy bym nie wrzucał tego typu rozwiązania bym nie polecał.
Czemu sie wzbraniasz od zapamiętywania tych danych w sesji ?



Nie wzbraniam smile.gif szukam po prostu szybkiego rozwiązania tego problemu smile.gif

a sesją jak to załatwic ?

Hpsi
jak masz już sesje rozpoczętą (a podejrzewam ze masz)
  1. $_SESSION['tmp_dane'] = serialize($_POST['zmiena']);

w dalszej cześci kodu odczytujesz
  1. $dane = $_SESSION['tmp_dane'];
tom66
Cytat(Hpsi+ @ 3.06.2011, 15:27:00 ) *
jak masz już sesje rozpoczętą (a podejrzewam ze masz)
  1. $_SESSION['tmp_dane'] = serialize($_POST['zmiena']);

w dalszej cześci kodu odczytujesz
  1. $dane = $_SESSION['tmp_dane'];


hmm dodałem dane do sesji i mam :
  1. if(isset($_SESSION['sp']))
  2. {
  3. $d=unserialize($_SESSION['sp']);
  4. $N = count($d);
  5. $array = array();
  6. for($i=0; $i < $N; $i++)
  7. {
  8. $array[$i]=($d[$i]);}
  9. $sp=implode("','",$array);
  10. $sp1="status in ('".$sp."')";
  11.  
  12. }
  13. else{
  14. if(isset($_POST['sp']))
  15. {
  16. $a = $_POST['sp'];
  17. $N = count($a);
  18. $array = array();
  19. for($i=0; $i < $N; $i++)
  20. {
  21. $array[$i]=($a[$i]);}
  22. $_SESSION['sp'] = serialize($_POST['sp']);
  23. $sp=implode("','",$array);
  24. $sp1="status in ('".$sp."')";
  25.  
  26. } // status projektu
  27. else { $sp1=1;
  28. $sp='';
  29.  
  30. }}
  31.  


a calośc wygalda tak.... działa... w polowie.
przerzuca mnie na 2 strone z wynikami ( super) ale na trzeciej mam taki komunikat
unserialize() [function.unserialize]: Error at offset 0 of 20 byte w linii-> $d=unserialize($_SESSION['sp']);

dlaczego tak się dzieje...
Hpsi
zrob var_dump $_SESSION['sp'] na każdym kroku
tom66
Cytat(Hpsi+ @ 3.06.2011, 15:55:50 ) *
zrob var_dump $_SESSION['sp'] na każdym kroku



to pokazuje mi dlugosc stringu... a co dalej ?
Hpsi
Co ci pokazuje? jak wyglądają dane? coś wiecej?tongue.gif
tom66
Cytat(Hpsi+ @ 3.06.2011, 16:11:44 ) *
Co ci pokazuje? jak wyglądają dane? coś wiecej?tongue.gif

za pierwszym razem
string(66) "a:3:{i:0;s:7:"Aktywny";i:1;s:10:"Odłożony";i:2;s:9:"Śmietnik";}"

za drugim:

string(32) "Aktywny','Odłożony','Śmietnik"

a za trzecim(błąd):
string(0) ""

smile.gif


ok dodałem w warunku $_SESSION['sp']
aby to unserialize zrobil ponownie
$_SESSION['sp'] = serialize($array);

i działa smile.gif



jednak coś sie pier%$# nadal ten komunkat .. nie zawsze ale jest ;(

przed każdą rezerwają sesji dodaję unset($_SESSION['sp']);
i już sie nie wywala smile.gif

dziękuję za pomoc
Hpsi
Przeanalizuj sobie skrypt dokładnie coś musisz robić nie tak - ja niestety w tej chwili zaczynam weekend tongue.gif wiec więcej ci nie będę w stanie pomóc, bo nie zamierzam na kompie siedzieć smile.gif
A błędu jako tako nie widzę, musiałbym zrobić sobie podobny skrypcik jak ty i testowac...
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.