![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 9.02.2004 Ostrzeżenie: (0%) ![]() ![]() |
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 ![]() |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 165 Pomógł: 9 Dołączył: 9.04.2002 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
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 ![]() [list] as $usuwany_student){ //twoja akcja echo "Chcesz usunac newsa: "; echo $usuwany_news; }[list] pokombinuj ![]() Kossa ---------------------------------------------------------- albo jeszcze tak ![]() 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 ![]() |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 9.02.2004 Ostrzeżenie: (0%) ![]() ![]() |
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 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 165 Pomógł: 9 Dołączył: 9.04.2002 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
cos mieszasz i utrudniasz sobie zycie
![]() dlaczego masz zagniezdzone formularze? wydaje mi sie to niepotrzebne jaki blad wyskakuje albo co sie dzieje po kliku usun? uruchamia skrypt ? |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 9.02.2004 Ostrzeżenie: (0%) ![]() ![]() |
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 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 165 Pomógł: 9 Dołączył: 9.04.2002 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
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 ![]() [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 ![]() ExecSQL - to funkcja wykonujaca zapytanie SQL qale to wiesz jak zrobic ![]() 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 ![]() mozesz sie pobawic z submit dodajac mu name i akcje wykonywac w zaleznosci od name powodzenia! Kossa ---------------------------------------------------------------- @kossa: NABIJANIU POSTOW MOWIMY STANOWCZO NIE ! ![]() (Za lamanie regulaminu jest ban !) Seth |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 1 165 Pomógł: 9 Dołączył: 9.04.2002 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
nie zrobilem tego w celu nabijania postow - sorki - zapedzilem sie z przemysleniami
Kossa |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 9.02.2004 Ostrzeżenie: (0%) ![]() ![]() |
Kossa chyba jednak cos nie tak robie albo moze pole chcekbox musi byc w tabeli
![]() 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 |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 1 165 Pomógł: 9 Dołączył: 9.04.2002 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
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 |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 92 Pomógł: 0 Dołączył: 2.05.2003 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
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 -------------------- Never underestimate the power of human stupidity!
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 18:12 |