kuba_pilach
27.01.2011, 15:26:31
Witam, mam wyszukiwarkę, która wyszukuje z danej tabeli mssql
I chciałbym, by przy każdym rekordzie było pole radio:
<input type="radio" name="niewiem" value="niewiem" />
I chciałbym potem za pomocą "zapisz" wtedy przenosiło się do kolejnej strony, wziąć zaznaczone rekordy i jakoś je zapisać (chyba do sesji), by potem je wykorzystać... naprzykład dla upewnienia użykownika
wypisać mu te rekordy
Wie ktoś jak to zrobić? Dzięki z góry
lobopol
27.01.2011, 16:44:44
to dodaj sobie przy każdym ten checkbox name="id[]" value="id rekordu" i po wysłaniu zapisujesz id rekordów, bądź wczytujesz znowu z bazy rekordy o tych id i zapisujesz do sesji. A i nie radio buttony, a checkboxy.
kuba_pilach
27.01.2011, 20:07:22
Ale z checkbox da się robić wielokrotne?
Bo chyba nie
lobopol
27.01.2011, 20:53:33
co to znaczy wielokrotnie? checkboxy są do zaznaczania wielu opcji, radiobuttony do zaznaczenia 1
kuba_pilach
28.01.2011, 15:39:14
Sorki, ale nie jestem za bardzo doświadczony w tym
Mam takie coś:
echo '<input name="$r['Twr_TwrId
']" value="$r['Twr_TwrId
']" type="checkbox" />';
I te zaznaczone $r['Twr_TwrId'] chcę wykorzystać do zapytania mssql... czyli jak to będzie wyglądało w drugim pliku, bo nie jestem zakumaty w tych sprawach... bardzo proszę i z góry dziękuję
Odświeżam, no weś pomóż ktoś ...
lobopol
28.01.2011, 16:17:41
Nie
echo '<input name="$r['Twr_TwrId
']" value="$r['Twr_TwrId
']" type="checkbox" />';
a:
echo '<input name="cokolwiek[]" value="$r['Twr_TwrId
']" type="checkbox" />';
Po przesłaniu w tablicy post a dokładniej w tablicy
$_POST['cokolwiek']
będziesz miał wszystkie id przy których zaznaczono checkboxa.
a co z tym zrobisz po stronie drugiego pliku to już nie powinno ci sprawić problemu. W sesji najlepiej zapisz sobie id przesłąne czyli np. $_SESSION['id'] = $_POST['cokolwiek']
kuba_pilach
28.01.2011, 16:48:35
Zrobiłem to co napisałeś i wyskakuje mi błąd:
Kod
Parse error: syntax error, unexpected T_STRING, expecting ',' ot ';' in C:\xampp\htdocs\nauka\step1_2.php on line 87
A mój kawałek kodu:
linia 87
: echo '<input name="iduslugi[]" value="$r['Twr_TwrId
']" type="checkbox" /><br />';
lobopol
28.01.2011, 16:53:15
echo '<input name="iduslugi[]" value="$r['Twr_TwrId
']" type="checkbox" /><br />';
zamień na
echo '<input name="iduslugi[]" value="'.$r['Twr_TwrId'].'" type="checkbox" /><br />';
kuba_pilach
28.01.2011, 17:26:45
Dobra, udało mi się to wyświetlić, ale mam problem z zapisaniem do sesji i pokazanie tego jako sesji
<html>
<head>
<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=iso-8859-2">
<title>Wybieranie usług</title>
<link rel="stylesheet" type="text/css" href="css/styles.css" />
</head>
<body>
<?php
$usluga = $_POST['usluga'];
include 'connection.php';
if ($_POST['iduslugi']) {
?>
<table class="z" border="1" frame="void" rules="none">
<?php
foreach ($_POST['iduslugi'] as $idu) {
$wypytanie = mssql_query("select * from CDN.Towary where Twr_TwrId='$idu' ");
while ($wyp = mssql_fetch_assoc($wypytanie)) {
echo "<td>".$wyp['Twr_Nazwa']."</td>";
}
}
?>
</table>
<?php
}
?>
</body>
</html>
lobopol
28.01.2011, 19:16:59
Zastanów się co do sesji zapisałeś masz teraz tablicę (jeżeli zrobiłeś tak jak ja ci powiedziałem) (mam nadzieje, że nie zapomniałeś wstawić session_start()

, jeżeli chcesz teraz wyciągnąć wszystko to znacznie sensowniej zrobisz to tak:
$query="SELECT * from Towary WHERE Twr_TwrId IN(".implode(',',$_SESSION['iduslugi']).")"
tylko sprawdź sobie wcześniej czy przypadkiem $_SESSION['iduslugi'] nie jest puste
kuba_pilach
28.01.2011, 21:00:27
Mam problem z sesjami... czyli jak w jednym pliku robię:
foreach ($_POST['iduslugi'] as $idu) {
$_SESSION['iduslugi'] = $_POST['iduslugi'];
}
to potem w następnym pliku mam napisać:
[php]
<?php
echo $_SESSION['iduslugi'];

?
Bo jak tak pisałem, to wyświetlał mi się błąd:
Warning
: session_start() [function.session
-start
]: Cannot send session cache limiter
- headers already sent
(output started at C
:\xampp\htdocs\nauka\step3
.php
:9) in C
:\xampp\htdocs\nauka\step3
.php on line
10
lobopol
28.01.2011, 21:04:11
session_start ma być na samym początku strony przed wyświetleniem jakiegokolwiek tekstu
kuba_pilach
28.01.2011, 21:33:21
mam plik step1.php:
<html>
<head>
<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=iso-8859-2">
<title>Wybieranie opcji</title>
<link rel="stylesheet" type="text/css" href="css/styles.css" />
</head>
<body>
<?php
if ($a != dod) {
?>
<h1>Wyszukiwanie</h1>
<form action="step1.php" method="post">
<select name="metoda_szukania">
<option value="KnT_Kod">Kod</option>
<option value="Knt_Nazwa1" value="Knt_Nazwa2">Nazwa</option>
</select>
<br />
Wprowadź poszukiwane wyrażenie:<br />
<input name="wyrazenie" type="text" size="40">
<br />
<input type="submit" name="submit" value="Szukaj">
</form>
<?php
}
if ($_POST['submit']) {
// utworzenie krótkich nazw zmiennych
$metoda_szukania=$_POST['metoda_szukania'];
$wybor=$_POST['wybor'];
$wyrazenie=trim($_POST['wyrazenie']);
$wyrazenie = trim($wyrazenie);
if (!$metoda_szukania || !$wyrazenie) {
echo 'Brak parametrów wyszukiwania. Wróć do poprzedniej strony i spróbuj ponownie.'; }
}
include 'connection.php';
$zapytanie = "select * from CDN.Kontrahenci where ".$metoda_szukania." like '%".$wyrazenie."%'";
$wynik = mssql_query($zapytanie);
$ile_znalezionych = mssql_num_rows($wynik);
echo "<p>Ilość znalezionych pozycji: ".$ile_znalezionych."</p>"; ?>
<table class="z" border="1" frame="void" rules="none">
<?php
for ($i=0; $i <$ile_znalezionych; $i++) {
?>
<?php
$wiersz = mssql_fetch_assoc($wynik);
echo "<td><p><strong>".($i+1).". </td>"; echo stripslashes("<td>".$wiersz['Knt_Nazwa1']." ".$wiersz['Knt_Nazwa2']."</td>"); echo "<td><a href=\"step1_2.php?a=dod&id={$wiersz['Knt_KntId']}\"><img src=images/ikona.png></a></td>"; }
?>
</table>
<?php
}
?>
<?php
$a = trim($_REQUEST['a']); if ($a==dod) {
?>
Rezultaty:
<?php
include 'connection.php';
$wybieranieklienta = mssql_query("SELECT * FROM CDN.Kontrahenci WHERE Knt_KntId = '$id' ")
$klient = mssql_fetch_assoc($wybieranieklienta);
echo "Klient:".$klient['Knt_Nazwa1'].$klient['Knt_Nazwa2']; echo "Kod klienta:".$klient['Knt_Kod'];
}
?>
</body>
</html>
Przetwarzanie mam takie:
<?php
$a = trim($_REQUEST['a']);
if ($a = dod) {
$id = $_SESSION['id'];
}
include 'connection.php';
?>
I potem chcę napisać tą sesję później:
<?php
?>
I nic mi nie pisze...
Wiesz może o co chodzi?
lobopol
28.01.2011, 21:42:11
a w przetwarzaniu masz session_start na początku?
$id = $_SESSION['id']; odwrotnie
kuba_pilach
28.01.2011, 21:51:39
nic nie zmieniło się
lobopol
28.01.2011, 22:00:15
Kurde patrzę w twój kod i to jest straszne, formularz ma np. <option value="Knt_Nazwa1" value="Knt_Nazwa2">Nazwa</option> czyli dwa value
w drugim pliku na końcu wyświetl print_r($_GET) i print_r($_SESSION)
kuba_pilach
28.01.2011, 22:12:07
Wiem, że straszne... ludzie się uczą zazwyczaj na błędach... czyli co zrobić, by sesje działały.
Wyjaśnię ci po co to: chcę brać kontrahenta, usługi, towary i opis do tabel mssql
I by potem jeszcze miał możliwość wydruku zlecenia... Może masz jakiś pomysł co do zrobienia tego projektu?
lobopol
28.01.2011, 22:15:39
najpierw zobaczmy czy wszystko dobrze przesyłasz dlatego pokaż wyniki printów, projekt jest bardzo prosty tylko trzeba poświęcić z tydzień dwa na zakodowanie i zabezpieczenie.
kuba_pilach
28.01.2011, 22:24:36
Dobra, oto wynik:
Kod
Array ( ) Array ( [kontrahent] => 243 [iduslugi] => Array ( [0] => 3 [1] => 13 ) )
A i nie lepiej przez gg? 2223312
lobopol
28.01.2011, 22:38:17
czyli masz nieustawionego geta z sesji możesz sobie id wyciągnąć.
Właściwie co ty chciałeś tu wyświetlić?
Dobra ja dziś już lecę jutro popatrzę na odpowiedzi
kuba_pilach
29.01.2011, 14:38:13
Po prostu chciałem zobaczyć, czy działa ;]
Wogule nie zapisuje do sesji... niech ktoś dopomoże
lobopol
29.01.2011, 15:14:02
No jak to nie zapisuje, a to: Array ( [kontrahent] => 243 [iduslugi] => Array ( [0] => 3 [1] => 13 ) )?
kuba_pilach
29.01.2011, 15:24:04
Problem tkwi w tym, że po kolejnym wyszukiwaniu kasuje mi się sesja... bo jak napiszę przed wyszukaniem to mi pisze dobrze
Wiesz jak rozwiązać problema?
lobopol
29.01.2011, 17:01:37
Bo po ponownym wyszukaniu nadpisujesz sobie sesje
kuba_pilach
29.01.2011, 20:09:38
Ale mi chodzi po kolejnym wyszukaniu wykorzystując inne zapytania i zupełnie inną wyszukiwarkę...
pierwszy plik -> wyszukiwanie kontrahenta
drugi plik -> wyszukiwanie usług
Masz jakiś pomysł, by tą sesję mimo tego zachować?
Odpowiadajcie dobrzy ludzie

Proszę...
lobopol
29.01.2011, 21:29:11
Zapisuj do innej zmiennej sesyjnej i tyle. Ale sądząc po tej tablicy to dobrze zapisujesz wszystko.
kuba_pilach
2.02.2011, 19:40:34
Tzn.?
Oto wynik wynik po drugim wyszukiwaniu: Array ( [a] => dodawanieuslugi [id] => ) Array ( [iddosesji] => [id] => [iduslugi] => Array ( [0] => 3 ) )
Chyba coś tu nie gra? POMOCY!
proszę o pomoc i dzięki z góry!
Dużo próbowałem, ale nie wychodziło...
Jeszcze raz proszę za chęci !
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.