Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zmienne do nowego okna?
qubec26
post 16.07.2010, 12:15:13
Post #1





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 25.06.2008

Ostrzeżenie: (0%)
-----


Witam, chciałbym zrobić coś takiego, że gdy mam tablicę z sql-a wyświetloną w php.

To po kliknięciu w przycisk "print" przy każdym rekordzie przenosiło do nowego okna (to już mam) i tam wyświetliło dane tego konkretnego rekordu.

Czyli na przykladzie:
TABELKA
  1. |ID| IMIE | NAZWISKO | PRINT |
  2. |1 | Jan | Mazurski | "Print" |
  3. |2 | Adam | Piotrowski | "Print" |


Klikam "Print" i przy użyciu funkcji popup() otwiera mi się nowe okno.

Ale jak przekazać zmienne do tego okna?

Skoro są to wartości z SQL wyświetlane za pomocą:
  1. echo "<td>".$r['KOD_DOSTAWCY']."</td>";


Ten post edytował qubec26 16.07.2010, 12:18:31
Go to the top of the page
+Quote Post
thomson89
post 16.07.2010, 13:09:14
Post #2





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Zrób sobie osobny plik PHP i jako get zapodaj mu id rekordu który ma wyświetlić.

Wtedy już tylko:
  1. <a href="#" onclick="window.open('rekord.php?idrekordu=234534', 'Drukuj', 'height=150,width=200');">PRINT</a>


--EDIT
Albo na tym pliku zrób, że gdy $_GET równe np. all to wyświetlasz wszystkie rekordy, a jak nie jest równe all to pobierasz tylko jeden rekord.

Ten post edytował thomson89 16.07.2010, 13:10:58


--------------------
Sklep 70%
Go to the top of the page
+Quote Post
qubec26
post 16.07.2010, 14:30:58
Post #3





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 25.06.2008

Ostrzeżenie: (0%)
-----


Tylko, że chodzi o to żeby przycisk miał jedną formułę a drukował każdą linię (uniwersalny).
Z tego co ty piszesz wynika, że trzeba mu wpisać numer linii.
Go to the top of the page
+Quote Post
thomson89
post 16.07.2010, 14:33:33
Post #4





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Numer linii możesz wypisać bardzo łatwo przy generowaniu tabelki za pomocą PHP.

Podaj kod, którym generujesz tą tabelkę.

Ten post edytował thomson89 16.07.2010, 14:34:05


--------------------
Sklep 70%
Go to the top of the page
+Quote Post
qubec26
post 19.07.2010, 07:56:10
Post #5





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 25.06.2008

Ostrzeżenie: (0%)
-----


Oto kod:
  1. echo "<form name='form1' method='post' action=''>";
  2. echo "<strong>".$_SESSION['nazwa1']."</strong>";
  3. echo "<tr>";
  4. echo "<td><strong>ID</strong></td>";
  5. echo "<td><strong>Part number</strong></td>";
  6. echo "<td><strong>Quantity</strong></td>";
  7. echo "<td><strong>Planned date of delivery</strong></td>";
  8. echo "<td><strong>Supplier code</strong></td>";
  9. echo "<td><strong>Supplier name</strong></td>";
  10. echo "<td><strong>Order number</strong></td>";
  11. echo "<td><strong>Line number</strong></td>";
  12. echo "<td><strong>Date of delivery</strong></td>";
  13. echo "<td><strong>Quantity delivered</strong></td>";
  14. echo "<td><strong>PRINT</strong></td>";
  15. echo "</tr>";
  16.  
  17. while($r = mssql_fetch_assoc($result)) {
  18. include('kolor.php');
  19. echo "<tr bgcolor='$kolor'>";
  20.  
  21. echo "<td>".$id[]=$r['ID']; $r['ID']."</td>";
  22. echo "<td>".$nrdet[] = $r['NR_DET']; $r['NR_DET']."</td>";
  23. echo "<td>".$r['ILOSC']."</td>";
  24. echo "<td>".$r['PLAN_DATA_DOST']."</td>";
  25. echo "<td>".$r['KOD_DOSTAWCY']."</td>";
  26. echo "<td>".$r['NAZ_DOSTAWCY']."</td>";
  27. echo "<td>".$nrzam[] = $r['NR_ZAMOWIENIA']; $r['NR_ZAMOWIENIA']."</td>";
  28. echo "<td>".$nrlin[] = $r['NR_LINII']; $r['NR_LINII']."</td>";
  29. echo "<td><input type=text name=date_of_deliv[] value='".$r['DATA_DOST']."'/></td>";
  30. echo "<td><input type=text name=quan_of_deliv[] value='".$r['ILOSC_DOSTAWY']."'/></td>";
  31. if($r['DADI']<=14 and $r['DADI']>=0){
  32. echo "<td><input type='button' name='PRINT' value='Print' onClick='popup();'></td>";
  33. }
  34. echo "</tr>";
  35. }
  36. echo "<tr><td colspan='4' align='center'><input type='submit' name='Submit' value='Submit'></td></tr>";
  37. echo "</form>";
  38. echo "</table>";
Go to the top of the page
+Quote Post
thomson89
post 19.07.2010, 09:53:26
Post #6





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


32. linijkę zamień na:
  1. echo '<a href="#" onclick="window.open(\'rekord.php?id='.$id.'\', \'Drukuj\', \'height=150,width=200\');">PRINT</a>';


Dodatkowo, utwórz kod który będzie pobierał pojedynczy rekord. Np. takim zapytaniem:

  1. $query = 'SELECT * FROM `dostawcy` WHERE `id` = '.$_GET['id'];



--------------------
Sklep 70%
Go to the top of the page
+Quote Post
Pawel16
post 20.07.2010, 02:35:13
Post #7





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 20.07.2010

Ostrzeżenie: (0%)
-----


Wy tu kombinujecie, a z mojego rozumowania wychodzi, że wystarczy użyć prostego zapytania MySQL lub użyć SESJI.

Zapytanie:
wystarczy przekazać w url na nastepną strone zmienną z id danego wiersza albo cos takiego, a nastepnie z bazy danych wczytać daną linijkę z danym id.

Sesje:
Wystarczy utworzyć sesje, w których potem przekaże sie dane tego wiersza - linijki, który chcemy wyświetlić

Jeżeli dobrze zrozumiałem ten post to odp. jest poprawna biggrin.gif
;P
Go to the top of the page
+Quote Post
thomson89
post 20.07.2010, 09:34:35
Post #8





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Dobrze zrozumiałeś, i ja także dobrze zrozumiałem. Obydwoje dążymy do tego samego.


--------------------
Sklep 70%
Go to the top of the page
+Quote Post
qubec26
post 20.07.2010, 16:25:08
Post #9





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 25.06.2008

Ostrzeżenie: (0%)
-----


Chwilowo mam małe problemy z tym.
  1. $query16 = "SELECT [IT_TEST].DADI, [IT_TEST].NR_DET, [IT_TEST].ILOSC, convert(varchar(10),[IT_TEST].PLAN_DATA_DOST,120) as PLAN_DATA_DOST, [IT_TEST].KOD_DOSTAWCY, ";
  2. $query16 .= "[IT_TEST].NAZ_DOSTAWCY, [IT_TEST].NR_ZAMOWIENIA, [IT_TEST].NR_LINII, convert(varchar(10),[IT_TEST].DATA_DOSTAWY,120) as DATA_DOST, ";
  3. $query16 .= "[IT_TEST].ILOSC_DOSTAWY ";
  4. $query16 .= "FROM [PORTAL].[dbo].[IT_TEST] ";
  5. $query16 .= "WHERE [IT_TEST].ID = .$get";
  6. $result16 = mssql_query($query16);


To zapytanie wywala mi błąd.

Sorki. Już poszło. Zapomniałem dodać:
  1. include ('query.php');

blinksmiley.gif


Tylko jak zrobić tak, aby ta zmienna przekazywana do nowego okna nie była przekazywana jawnie.

Czyli, żeby w linku nie było widać liczby.
Bo w ten sposób każdy może ją zmienić i wywołać nowe okno z inną zmienną.

Ten post edytował qubec26 20.07.2010, 14:23:35
Go to the top of the page
+Quote Post
thomson89
post 20.07.2010, 20:59:23
Post #10





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Zobacz tu.


--------------------
Sklep 70%
Go to the top of the page
+Quote Post
qubec26
post 23.07.2010, 06:50:51
Post #11





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 25.06.2008

Ostrzeżenie: (0%)
-----


Super. Dzięki za linka.

Mam jeszcze problem taki, że po ustawieniu kodu:
  1. while($r = mssql_fetch_assoc($result)) {
  2. include('kolor.php');
  3. echo "<tr bgcolor='$kolor'>";
  4.  
  5. echo "<td>".$id[]=$r['ID']; $r['ID']."</td>";
  6. echo "<td>".$nrdet[] = $r['NR_DET']; $r['NR_DET']."</td>";
  7. echo "<td>".$r['ILOSC']."</td>";
  8. echo "<td>".$r['PLAN_DATA_DOST']."</td>";
  9. echo "<td>".$r['KOD_DOSTAWCY']."</td>";
  10. echo "<td>".$r['NAZ_DOSTAWCY']."</td>";
  11. echo "<td>".$nrzam[] = $r['NR_ZAMOWIENIA']; $r['NR_ZAMOWIENIA']."</td>";
  12. echo "<td>".$nrlin[] = $r['NR_LINII']; $r['NR_LINII']."</td>";
  13. echo "<td><input type=text name=date_of_deliv[] value='".$r['DATA_DOST']."'/></td>";
  14. echo "<td><input type=text name=quan_of_deliv[] value='".$r['ILOSC_DOSTAWY']."'/></td>";
  15. if($r['DADI']<=14 and $r['DADI']>=0){
  16. $_SESSION['url'] = $r['ID'];
  17. echo '<td><a href="#" onclick="window.open(\'printstick.php?'.session_id().'\', \'Drukuj\', \'height=350,width=500\');">PRINT</a></td>';
  18. }
  19. echo "</tr>";
  20. }


Zawsze zmiennna $_SESSION['url'] jest równa id ostatniego pola z Print.

Jak to zrobić, żeby każde to pole miało swoje id?

Czy da się zrobić tak, aby zmienna $_SESSION['url'] była zmienną wielokrotną jak url[$i]?

Jak mogę to przerobić, tak aby każdy wiersz miał osobną wartość w zmiennej sesyjnej url dla guzika print?
Go to the top of the page
+Quote Post
muk4
post 23.07.2010, 10:04:02
Post #12





Grupa: Zarejestrowani
Postów: 309
Pomógł: 56
Dołączył: 3.11.2006
Skąd: Gliwice

Ostrzeżenie: (0%)
-----


@UP
$_SESSION to tablica więc można zrobić z niej tablicę dwuwymiarową np.
  1. $_SESSION['url'][1]
  2. $_SESSION['url'][2]
  3. $_SESSION['url'][3]

itd.

Ten post edytował muk4 23.07.2010, 10:04:34
Go to the top of the page
+Quote Post
qubec26
post 23.07.2010, 11:04:49
Post #13





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 25.06.2008

Ostrzeżenie: (0%)
-----


Próbowałem właśnie tego użyć, ale wywala błąd:
Cannot use a scalar value as an array in
  1. $_SESSION['url'][$i] = $r['ID'];


Ten post edytował qubec26 23.07.2010, 11:05:16
Go to the top of the page
+Quote Post
muk4
post 23.07.2010, 11:24:19
Post #14





Grupa: Zarejestrowani
Postów: 309
Pomógł: 56
Dołączył: 3.11.2006
Skąd: Gliwice

Ostrzeżenie: (0%)
-----


Cytat(qubec26 @ 23.07.2010, 12:04:49 ) *
Próbowałem właśnie tego użyć, ale wywala błąd:
Cannot use a scalar value as an array in
  1. $_SESSION['url'][$i] = $r['ID'];


Przed tym daj:
  1. $_SESSION['url'] = array();
Go to the top of the page
+Quote Post
qubec26
post 23.07.2010, 11:50:27
Post #15





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 25.06.2008

Ostrzeżenie: (0%)
-----


Ok, pomogło. Ale nie bardzo wiem jak zapisać tą zmienną do tego.
  1. $_SESSION['url'] = array();
  2. while($r = mssql_fetch_assoc($result)) {
  3. include('kolor.php');
  4. echo "<tr bgcolor='$kolor'>";
  5.  
  6. echo "<td>".$id[]=$r['ID']; $r['ID']."</td>";
  7. echo "<td>".$nrdet[] = $r['NR_DET']; $r['NR_DET']."</td>";
  8. echo "<td>".$r['ILOSC']."</td>";
  9. echo "<td>".$r['PLAN_DATA_DOST']."</td>";
  10. echo "<td>".$r['KOD_DOSTAWCY']."</td>";
  11. echo "<td>".$r['NAZ_DOSTAWCY']."</td>";
  12. echo "<td>".$nrzam[] = $r['NR_ZAMOWIENIA']; $r['NR_ZAMOWIENIA']."</td>";
  13. echo "<td>".$nrlin[] = $r['NR_LINII']; $r['NR_LINII']."</td>";
  14. echo "<td><input type=text name=date_of_deliv[] value='".$r['DATA_DOST']."'/></td>";
  15. echo "<td><input type=text name=quan_of_deliv[] value='".$r['ILOSC_DOSTAWY']."'/></td>";
  16. if($r['DADI']<=14 and $r['DADI']>=0){
  17. $_SESSION['url']['$i'] = $r['ID'];
  18. echo '<td><a href="#" onclick="window.open(\'printstick.php?'.session_id().'\', \'Drukuj\', \'height=350,width=500\');">PRINT</a></td>';
  19. }
  20. echo "</tr>";
  21. }
  22. echo "<tr><td colspan='4' align='center'><input type='submit' name='Submit' value='Submit'></td></tr>";
  23. echo "</form>";
  24. echo "</table>";
  25. $count=mssql_num_rows($result);
  26.  
  27. $_SESSION['i']=$i;
  28.  
  29.  
  30. if($Submit){
  31. for($i=0;$i<$count;$i++){
  32. echo "<P>$date_of_deliv[$i]";
  33. if($date_of_deliv[$i]==""){
  34. $date_of_deliv[$i]=NULL;
  35. echo "<P>$date_of_deliv[$i]";
  36. }
  37. $query22="UPDATE [PORTAL].[dbo].[IT_TEST] SET data_dostawy = '$date_of_deliv[$i]' ,ilosc_dostawy = '$quan_of_deliv[$i]' WHERE ID = '$id[$i]'";
  38. $result22=mssql_query($query22);
  39. echo "$i";
  40.  
  41. }
  42.  
  43. echo "<p>$i";
  44. }


W ten sposób znowu wszystkie guziki mają zmienną ostatniego.

Ten post edytował qubec26 23.07.2010, 11:58:05
Go to the top of the page
+Quote Post
muk4
post 23.07.2010, 14:37:34
Post #16





Grupa: Zarejestrowani
Postów: 309
Pomógł: 56
Dołączył: 3.11.2006
Skąd: Gliwice

Ostrzeżenie: (0%)
-----


Podmień swój kod od początku do $_SESSION['i']=$i; na to:
  1. $_SESSION['url'] = array();
  2. $i = 0; //ustawienie licznika na 0
  3. while($r = mssql_fetch_assoc($result)) {
  4. include('kolor.php');
  5. echo "<tr bgcolor='$kolor'>";
  6.  
  7. echo "<td>".$id[]=$r['ID']; $r['ID']."</td>";
  8. echo "<td>".$nrdet[] = $r['NR_DET']; $r['NR_DET']."</td>";
  9. echo "<td>".$r['ILOSC']."</td>";
  10. echo "<td>".$r['PLAN_DATA_DOST']."</td>";
  11. echo "<td>".$r['KOD_DOSTAWCY']."</td>";
  12. echo "<td>".$r['NAZ_DOSTAWCY']."</td>";
  13. echo "<td>".$nrzam[] = $r['NR_ZAMOWIENIA']; $r['NR_ZAMOWIENIA']."</td>";
  14. echo "<td>".$nrlin[] = $r['NR_LINII']; $r['NR_LINII']."</td>";
  15. echo "<td><input type=text name=date_of_deliv[] value='".$r['DATA_DOST']."'/></td>";
  16. echo "<td><input type=text name=quan_of_deliv[] value='".$r['ILOSC_DOSTAWY']."'/></td>";
  17. if($r['DADI']<=14 and $r['DADI']>=0){
  18. $_SESSION['url'][$i] = $r['ID']; //
  19. $i++; //licznik + 1
  20. echo '<td><a href="#" onclick="window.open(\'printstick.php?'.session_id().'\', \'Drukuj\', \'height=350,width=500\');">PRINT</a></td>';
  21. }
  22. echo "</tr>";
  23. }
  24. echo "<tr><td colspan='4' align='center'><input type='submit' name='Submit' value='Submit'></td></tr>";
  25. echo "</form>";
  26. echo "</table>";
  27. $count=mssql_num_rows($result);


Ten post edytował muk4 23.07.2010, 14:38:27
Go to the top of the page
+Quote Post
qubec26
post 26.07.2010, 14:20:27
Post #17





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 25.06.2008

Ostrzeżenie: (0%)
-----


Po kodzie:
  1. $i++; //licznik + 1


dodałem:
  1. echo "<td>".$_SESSION['url'][$i]."</td>";

w celu sprawdzenia czy zwraca dobre wartości.

Nie wyświetla się nic.

Czy może źle wywołuję tą zmienną?
Go to the top of the page
+Quote Post
muk4
post 26.07.2010, 18:48:56
Post #18





Grupa: Zarejestrowani
Postów: 309
Pomógł: 56
Dołączył: 3.11.2006
Skąd: Gliwice

Ostrzeżenie: (0%)
-----


Przeanalizuj kod który TY napisałeś:
  1. $_SESSION['url'][$i] = $r['ID']; // |1
  2. $i++; //licznik + 1 // |2
  3. echo "<td>".$_SESSION['url'][$i]."</td>"; // |3

Załóżmy że $i = 1
1. zapisujemy wartość do zmiennej sesji ['url'][$i] czyli ['url'][1]
2. zwiększamy licznik $i. Teraz $i=2
3. Odczytujemy ['url'][$i] czyli ['url'][2] - UPS. Tutaj jeszcze nic nie zapisywaliśmy, więc zmienna jest pusta!

Wrzuć sprawdzanie po ustawieniu zmiennej, ale przed inkrementacją licznika.

Ten post edytował muk4 26.07.2010, 18:51:36
Go to the top of the page
+Quote Post
qubec26
post 29.07.2010, 11:48:28
Post #19





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 25.06.2008

Ostrzeżenie: (0%)
-----


No fakt.
Masz rację.
Tylko jeszcze mam pytanie odnośnie zmiennej $i.
Jak ją przenieść do pliku, który wywołuje przycisk PRINT?

Bo wywołuję sobie w pliku printstick.php $_SESSION['url'][$i]
Ale tam nie ma $i. Jak ją tam prznieść tak aby nie miała wartości ostatniego wiersza?

Ma ktoś jakiś pomysł?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 08:32