Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: przekazywanie checkbxow
Forum PHP.pl > Forum > PHP
szymono
mam taki problem
na jednej stroie tworzy sie lista osob jest to robione petla i wyciagane z bazy danych sql
wyglada to tak
[php:1:9af2f9b989]<?php
$link_id=db_connect();
if(!$link_id) die(sql_error());
$query = "select * from student";
$result = mysql_query($query) or die ("invalid query: " . mysql_error());

echo " <form method="post" action="usunstudenta.php"";


while ($query_data = mysql_fetch_array($result)){
$imie=$query_data['stud_imie'];
$studid = $query_data['studid'];
echo "<tr><td width="2%"><input name="del[]" value="i" type="checkbox" ></td>";
"<input type="hidden">".$studid." ";
echo "<td width="12%">".$studid."</td>";
echo "<td width="10 %">".$query_data['stud_nazwisko']."</td>";
echo "<td width="10 %">".$query_data['nr_indeksu']."</td>";
echo "<td width="10 %">".$query_data['rok_studiow']."</td>";
echo "<td width="10 %">".$query_data['semestr']."</td>";
echo "<td width="5%"><a href="index.php?file=listastudentow.php&action=edytuj&studid=$studid "> wyswietl</a></td></tr>";
}

?>[/php:1:9af2f9b989]

i teraz na dole strony znajduje sie link ktory ma przekazac do tej samej strony tylko te pola przy ktorych zaznaczono checkboxa
link wyglada tak
Kod
<a href="index.php?file=listastudentow.php&action=del&studid=<? $del[studid] ?>">Usun zaznaczonych</a></td>

przy czym del to funkcja ktora ma wyswietlic ta tabelke z osobami przy ktorych zaznaczono checkboxy.
i wszystko sie dzieje na jednej stronie tej listastudentow
ale to nie chce dzialac? czy zle skonstruowalem linka questionmark.gif czy cos innego ?
kossa
Tego nie mozesz zrobic linkiem tylko to musi byc formularz.
Zamknij wszystko w znaczniki <form action...>...</form> i zamiast linku musisz umiescic button submit wowczas zadziala

a tam gdzie poprowadzi akcja z formularza kod

checkboxy - name np "del[]" a value to np id usuwanego studenta.
teraz po przeslaniu dalej formularza bedziesz mial dostep do tablicy $_POST['del'] a kolejne elementy to wartosci z zaznaczonych checkboxow winksmiley.jpg

[list] as $usuwany_student){
//twoja akcja
echo "Chcesz usunac newsa: ";
echo $usuwany_news;
}[list]

pokombinuj smile.gif

Kossa

----------------------------------------------------------

albo jeszcze tak smile.gif

robisz checkboxy z nazwa np. multi_field[] czyli tablicowe, a value dajesz jakies id studenta potem petla:


[php:1:7892b1fe17]<?php
for($i=0;$i<=count($multi_field);$i++)
{
if(isset($multi_field[$i]))
{
// tu masz zaznaczone id
}
}
?>[/php:1:7892b1fe17]


w ifie będziesz mial te ktore sa zaznaczone a wartosc multi_field[$] to id zaznaczonego studenta, teraz mozesz zrobic juz co chcesz...

jeszcze raz Kossa smile.gif
szymono
Kossa dzieki za odpowiedz ale chyba nadal robie cos nie tak.

[php:1:0c36f1bfa6]<?php
function pokaz_rekordy(){
global $php_self;
global $default_dbname;
?>
<!--DWLayoutTable-->
<form method="post" onSubmit="index.php?file=listastudentow.php&action=del">
<tr>
<td height="21" colspan="7" valign="top" id="log">Lista studentow</td>
</tr>
<tr>
<td width="2%" height="26" id="kolor2">zaznacz</td>
<td width="10%" height="26" id="kolor2">imie</td>
<td width="10%" height="26" id="kolor2">nazwisko</td>
<td width="8%" height="26" id="kolor2">nr indeksu</td>
<td width="5%" height="26" id="kolor2">rok studiow</td>
<td width="5%" height="26" id="kolor2">semestr</td>
<td width="5%" height="26" id="kolor2">edytuj</td>
</tr>
<br>
<?
html_header();
$link_id=db_connect();
if(!$link_id) die(sql_error());
$query = "select * from student";
$result = mysql_query($query) or die ("invalid query: " . mysql_error());

echo " <form method="post" action="usunstudenta.php"";

while ($query_data = mysql_fetch_array($result)){
$imie=$query_data['stud_imie'];
$studid = $query_data['studid'];
echo "<tr><td width="2%"><input name="multi_field[]" value=".$studid." type="checkbox" ></td>";
echo "<td width="12%">".$studid."</td>";
echo "<td width="10 %">".$query_data['stud_nazwisko']."</td>";
echo "<td width="10 %">".$query_data['nr_indeksu']."</td>";
echo "<td width="10 %">".$query_data['rok_studiow']."</td>";
echo "<td width="10 %">".$query_data['semestr']."</td>";
echo "<td width="5%"><a href="index.php?file=listastudentow.php&action=edytuj&studid=$studid "> wyswietl</a></td></tr>";
}?>
</form>
<table>
<tr>
<td height="26" colspan="2" valign="top"> <input type="submit" name="Submit" value="Wystaw oceny zaznaczonym">
</td>

<td colspan="2" valign="top"><input type="button" value="Nowy" onClick="java script:winopen('nowystudent.php')"></td>
<td width="134" valign="top"><input type="submit" value="usun zaznaczonych"></td>
<td colspan="3" valign="top"><input type="button" name="Submit4" value="Wystaw obecnosci zaznaczonym"></td>
</tr>
</form>
</table><?
footer();
}

?>[/php:1:0c36f1bfa6]

To jest kod funkcji ktora wyswietla to co jest w bazie

[php:1:0c36f1bfa6]<?php
function del() {

?>
<!--DWLayoutTable-->
<form method="post" action="index.php?file=listastudentow.php">
<input type="hidden" name="action" value="do_usuniecia">
<tr>
<td height="21" colspan="7" valign="top" id="log">Lista studentow</td>
</tr>
<tr>
<td width="2%" height="26" id="kolor2">zaznaczony</td>
<td width="10%" height="26" id="kolor2">id</td>
<td width="10%" height="26" id="kolor2">imie</td>
<td width="10%" height="26" id="kolor2">nazwisko</td>
<td width="8%" height="26" id="kolor2">nr indeksu</td>

</tr>



<br>
<?
html_header();
$link_id=db_connect();
if(!$link_id) die(sql_error());

for($i = 0; $i < count($multi_field); $i++)
{
if (isset ($multi_field[$i]))
{
$query = "select * from student where studid = $studid ";
$result = mysql_query($query) or die ("invalid query: " . mysql_error());

while ($query_data = mysql_fetch_array($result)){
$studid=$query_data['studid'];
$imie=$query_data['stud_imie'];
$nazwisko=$query_data['stud_nazwisko'];
$nr_indeksu=$query_data['nr_indeksu'];
echo "<tr><td width="2%"><input name="multi_field[]" type="checkbox" checked></td>";
echo "<td width="12%">".$studid."</td>";
echo "<td width="12%">".$imie."</td>";
echo "<td width="10 %">".$nazwisko."</td>";
echo "<td width="10 %">".$nr_indeksu."</td>";
}
}
}
echo "<input type="submit" value="usun"></form>";
}


?>[/php:1:0c36f1bfa6]

a to tej ktora ma wyswietlic te rekordy przy ktorych jest zaznaczony checkbox ale nie dziala
przelaczane jest wszystko za pomoca case pozniej

przy czym sam mam watpliwosci co do linijki 8 w pierwszej funkcji i 33 w drugiej przy studid=$studid
acha i jeszcze wystaw oceny i wystaw obecnosci jeszcze nie dzialaja bo to chyba bedize tak samo jak usun zaznaczonych

Bede wdzieczny za wskazowke taka dokladnijsza
kossa
cos mieszasz i utrudniasz sobie zycie smile.gif

dlaczego masz zagniezdzone formularze? wydaje mi sie to niepotrzebne

jaki blad wyskakuje albo co sie dzieje po kliku usun? uruchamia skrypt ?
szymono
w tym momencie jak w pierwszej funkcji w form action jest:

index.php?file=listastudentow.php&action=del

i klikne usun zaznaczonych nic sie nie dzieje natomiast samo usun z drugiej funkcji wogole nie dziala

bo jak moge jeszcze inaczej uruchomic ta funkcje del?? uzywajac submita ? przy linku bylo to w ten sposob <a href="index.php?file=listastudentow.php&action=del">usun</a>


a zagniezdzone formularze bo kazdy rekord ma pole edytuj i wna tej samej stronie wyswietla sie rekord do edytowania, od tego jest inna funkcja, wiec jest osobnym formularzem i to mi dziala, nie wiem czy to ok ale tak wykombinowalem
kossa
ten pierwszy form jest na 100% niepotrzebny, w drugim jest tylko zrob np.: tak: action=index.php?file=listastudentow.php

i w skrypcie pobieraj wartosc submit - czy usun, czy edytuj

i wtedy wykonuj odpowiednia akcje

Kossa

ten pierwszy form jest na 100% niepotrzebny, w drugim jest tylko zrob np.: tak: action=index.php?file=listastudentow.php

i w skrypcie pobieraj wartosc submit - czy usun, czy edytuj

i wtedy wykonuj odpowiednia akcje

Kossa


-----------------------------------------------------------------

rozumiem ze ta funkcja to potwierdzenie usuwania bo jesli nie to naknociles smile.gif

[quote="szymono"]
//-----------------------------------
to chyba tu nie potrzebne jest:
html_header();
$link_id=db_connect();

//-------------------------------------
for($i = 0; $i < count($multi_field); $i++)
{
if (isset ($multi_field[$i]))
{
$query = "select * from student where studid = $studid ";
$result = mysql_query($query) or die ("invalid query: " . mysql_error());

while ($query_data = mysql_fetch_array($result)){
$studid=$query_data['studid'];
$imie=$query_data['stud_imie'];
$nazwisko=$query_data['stud_nazwisko'];
$nr_indeksu=$query_data['nr_indeksu'];
echo "<tr><td width="2%"><input name="multi_field[]" type="checkbox" checked></td>";
echo "<td width="12%">".$studid."</td>";
echo "<td width="12%">".$imie."</td>";
echo "<td width="10 %">".$nazwisko."</td>";
echo "<td width="10 %">".$nr_indeksu."</td>";
}
}
}
echo "<input type="submit" value="usun"></form>";
}


?>[/php]

majac teraz zanazczone wszystkie pola i wyswietlone tylko te wczesniej zaznaczone powinienesz jeszcze raz zrobic taka petle for i usunac wybrane rekordy

namieszales z tymi formami

powalcz z tym!

Kossa

-----------------------------------------------------------------

[php:1:e56c5d184d]<?php
$res=mysql_query("select * from $table ");
echo "<form method="post" action="index.php?section=newsletter&action=delete">
<input TYPE="submit" value="usuń zaznaczonych">";
while($row = mysql_fetch_array($res))
{
$adres_id = $row["id"];
$e_mail = $row["adres"];
echo "<input type="checkbox" value='$adres_id' name="del[]">$e_mail<br>";
}
echo "</form>

if (action=="delete")
{
for ($x=0;$x<count($del);$x++)
{
$usun_id = $del[$x];
$Query = "DELETE FROM $table WHERE id=$usun_id";
$res = ExecSQL($Query);
}
}
?>[/php:1:e56c5d184d]

mysle ze jest wszystko jasne smile.gif
ExecSQL - to funkcja wykonujaca zapytanie SQL qale to wiesz jak zrobic smile.gif

kod dziala - szybko sobie newslettera przerobilem na jednym ze starych serwisow

najpierw wyciagasz z bazy studentow i jest jeden form
potem jesli akcja == delete to jest wykonywany kod usuwajacy
to wszystko smile.gif

mozesz sie pobawic z submit dodajac mu name i akcje wykonywac w zaleznosci od name



powodzenia!
Kossa


----------------------------------------------------------------
@kossa:
NABIJANIU POSTOW MOWIMY STANOWCZO NIE ! angrysmiley.gif

(Za lamanie regulaminu jest ban !)

Seth
kossa
nie zrobilem tego w celu nabijania postow - sorki - zapedzilem sie z przemysleniami

Kossa
szymono
Kossa chyba jednak cos nie tak robie albo moze pole chcekbox musi byc w tabeli questionmark.gif

teraz wyglada to tak:
[php:1:a5fe3192be]<?php
function pokaz_rekordy(){
global $php_self;
global $default_dbname;
?> <!--$szerokosc, $ramka, $odleglosc1=1, $odleglosc2=1-->

<!--DWLayoutTable-->

<tr>
<td height="21" colspan="7" valign="top" id="log">Lista studentow</td>
</tr>
<tr>
<td width="2%" height="26" id="kolor2">zaznacz</td>
<td width="10%" height="26" id="kolor2">imie</td>
<td width="10%" height="26" id="kolor2">nazwisko</td>
<td width="8%" height="26" id="kolor2">nr indeksu</td>
<td width="5%" height="26" id="kolor2">rok studiow</td>
<td width="5%" height="26" id="kolor2">semestr</td>
<td width="5%" height="26" id="kolor2">edytuj</td>
</tr>
<br>
<?
html_header();
$link_id=db_connect();
if(!$link_id) die(sql_error());
$query = "select * from student";
$result = mysql_query($query) or die ("invalid query: " . mysql_error());
echo " <form method="post" action="index.php?file=listastudentow.php&action=delete">";
echo " <input type="submit" value = "usun zaznaczonych">";

while ($query_data = mysql_fetch_array($result)){
$studid = $query_data["studid"];
$imie=$query_data['stud_imie'];
$nazwisko=$query_data['stud_nazwisko'];
$indeks=$query_data['nr_indeksu'];
$rok=$query_data['rok_studiow'];
$semestr=$query_data['semestr'];
echo "<tr><td width="2%"><input type="checkbox" value='$studid' name="del[]"></td>";
echo "<td width="12%">".$imie."</td>";
echo "<td width="10 %">".$nazwisko."</td>";
echo "<td width="10 %">".$indeks."</td>";
echo "<td width="10 %">".$rok."</td>";
echo "<td width="10 %">".$semestr."</td>";
echo "<td width="5%"><a href="index.php?file=listastudentow.php&action=edytuj&studid=$studid "> wyswietl</a></td></tr></form>";
}
if (action=="delete")
{
for ($i=0; $i<count($del); $i++)
{
$usun_id = $del[$i];
$query = "delete from student where studid = $usun_id";
$result = mysql_query ($query);

}
}

?>

<table>
<tr>
<td height="26" colspan="2" valign="top"> <input type="submit" name="Submit" value="Wystaw oceny zaznaczonym">
</td>

<td colspan="2" valign="top"><input type="button" value="Nowy" onClick="java script:winopen('nowystudent.php')"></td>
<td width="134" valign="top"><input type="submit" value="usun zaznaczonych"></td>
<td colspan="3" valign="top"><input type="button" name="Submit4" value="Wystaw obecnosci zaznaczonym"></td>
</tr>

</table>

<?

footer();
}
?>[/php:1:a5fe3192be]

it o jest ta funkcja pierwsza ktora pokazuje rekordy z tabeli
wciskam submit (dodalem sobie jeszcze jeden na gorze ) i nic sie nie dzieje. Gdzie mam blad juz kombinuje troche czasu i nic. Natomiast ta druga funkcje wywalilem
kossa
co robi ta funkcja?

Kod
html_header();


zaraz przeanalizuje kod
masz balagan w kodzie - niedomknieta tabela, oj brzydko, brzydko...

Kossa

mam juz, poza balaganem w kodzie bo brzydko piszesz, form zamknales zaraz po pierwszym studencie! przy if ($action...) nie bylo $!, pomiedzy </tr> a nastepnym <tr> wstawiasz <br> ?! i takie tam bledy...

tu masz kod dzialajacy, dostosuj go do swoich potrzeb:

Kod
<table>

<tr><td height="21"  colspan="7" valign="top" id="log">Lista studentow</td></tr>

<tr><td height="21"  colspan="7" valign="top" id="log"><form method="post"  action="index.php?file=istastudentow.php&action=delete"></td></tr>

<tr><td height="21"  colspan="7" valign="top" id="log"><input type="submit" value = "usun zaznaczonych"></td></tr>

</tr>

    <tr>

      <td width="2%" height="26" id="kolor2">zaznacz</td>

      <td width="10%" height="26"  id="kolor2">imie</td>

      <td width="10%" height="26"  id="kolor2">nazwisko</td>

      <td width="8%" height="26"  id="kolor2">nr indeksu</td>

      <td width="5%" height="26"  id="kolor2">rok studiow</td>

      <td width="5%" height="26"  id="kolor2">semestr</td>

      <td width="5%" height="26"  id="kolor2">edytuj</td>    

    </tr>

<?php

global $action;



function PokazStudentow()

{

global $action;

$table = "student";

$query = "select * from $table";

$result = mysql_query($query) or die ("invalid query: " . mysql_error());

    

while ($query_data = mysql_fetch_array($result))

{

    $studid = $query_data["studid"];

    $imie=$query_data['stud_imie'];

    $nazwisko=$query_data['stud_nazwisko'];

    $indeks=$query_data['nr_indeksu'];

    $rok=$query_data['rok_studiow'];

    $semestr=$query_data['semestr'];

echo "<tr><td width="2%"><input type="checkbox" value="$studid" name="del[]"></td>";

echo "<td width="12%">".$imie."</td>";

echo "<td width="10 %">".$nazwisko."</td>";

echo "<td width="10 %">".$indeks."</td>";

echo "<td width="10 %">".$rok."</td>";

echo "<td width="10 %">".$semestr."</td>";

echo "<td width="5%">

<a href="index.php?file=listastudentow.php&action=edytuj&studid=$studid">wyswietl</a></td></tr>";

}



echo "</form></TABLE>";



};



if ($action=="delete")

{

  for ($i=0; $i<count($del); $i++)

  {

    $usun_id = $del[$i];

    $query = "delete from student where id = $usun_id";

    $result = mysql_query ($query);

  }

}



PokazStudentow();



?>


Kossa
slaug
Szkoda, że osoby nie bedące autorami wątków nie mogą klikać pomógł.

Niemniej jednak wielkie dzięki Kossa. Twoje rady okazały się bardzo pomocne dla mnie. THX
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.