Autor | Zpráva | ||
---|---|---|---|
danhill Profil |
#1 · Zasláno: 27. 9. 2016, 22:21:49
Chjooo ... myslím,že buď už bych měl jít spát a nebo to zase bude pekelný oříšek ... :)
Prosím o pomoc jak na to ... Pomocí foreach si na stránce vykreslím tabulku z dat v databázi: $select = $mysqli->query("SELECT * FROM `test`"); echo '<table>'; echo '<tr>'; echo '<th>ID</th>'; echo '<th>Old value</th>'; echo '<th>New value</th>'; echo '<th>Check</th>'; echo '</tr>'; foreach ($select AS $row) { echo '<form name="action_defect" method="POST">'; echo '<tr>'; echo '<td>'.$row['ID'].'</td>'; echo '<td>'.$row['old_value'].'</td>'; echo '<td>'.$row['new_value'].'</td>'; echo '<td><input type="checkbox" name="check_id[]" value="'.$row['ID'].'" /></td>'; echo '<tr>'; echo '</form>'; } echo'</table>'; Až do teď v pohodě - tohle samozřejmě není problém ... ale nyní někde nad nebo pod tabulku potřebuji umístit dva submity Něco jako: echo '<input type="submit" name="delete" value="Delete selected" />'; echo '<input type="submit" name="repair" value="Repair selected" />'; a následně na základě stisku jedno z tlačítek provést akci ve smyslu: if (isset($_POST['delete'])) { foreach ($_POST['check_id'] AS $check_id){ echo 'Vymažu id: '.$check_id.'<br>; } } else if (isset($_POST['repair'])) { foreach ($_POST['check_id'] AS $check_id){ echo 'Opravím id: '.$check_id.'<br>; } } Ale to mi nechodí, protože mám submit zcela mimo form, jenže já nemůžu přeci dát form z toho foreache,jinak bych nezískal potřebné array s id ... Tak jako vůbec nevím a nemůžu najít jak tohle se řeší ... Jde o to, že chci prostě vymazat nebo opravit pouze vybrané řádky a ne všechny. Jo, to mi připomíná,že další problém je, jak udělat něco jako select all třeba kliknutím na th Check... Už se s tím trápím asi 3 hodiny a už prostě nevím, takže děkuji za jakoukoli radu. |
||
Alphard Profil |
#2 · Zasláno: 28. 9. 2016, 01:44:33
danhill:
„jenže já nemůžu přeci dát form z toho foreache“ Musíš, jinak nikdy neodešleš víc checkboxů (bez js). „jinak bych nezískal potřebné array s id“ Mělo by to být snadné, prohlížeč dá vybrané checkboxy za sebe, odešle něco jako check_id[]=2&check_id[]=3&check_id[]=5 .
|
||
CZechBoY Profil |
#3 · Zasláno: 28. 9. 2016, 12:19:58
echo '<table>'; echo '<tr>'; echo '<th>ID</th>'; echo '<th>Old value</th>'; echo '<th>New value</th>'; echo '<th>Check</th>'; echo '</tr>'; echo '<form name="action_defect" method="POST">'; foreach ($select AS $row) { echo '<tr>'; echo '<td>'.$row['ID'].'</td>'; echo '<td>'.$row['old_value'].'</td>'; echo '<td>'.$row['new_value'].'</td>'; echo '<td><input type="checkbox" name="check_id[]" value="'.$row['ID'].'" /></td>'; echo '<tr>'; } echo '<input type="submit" name="delete" value="Delete selected" />'; echo '<input type="submit" name="repair" value="Repair selected" />'; echo '</form>'; echo'</table>'; btw v takhle vypisovat html je pěkně na ***, nedá se v tom vůbec vyznat. Mně osobně vyhovuje obrácený způsob (vypisovat html a kde je něco z php tak začít php <?php echo $abc; ?> jako to dělají šablonovací systémy) |
||
danhill Profil |
#4 · Zasláno: 28. 9. 2016, 15:28:36
Supeeer - jak snadné - už to valíííí :)
Moc děkuji za pomoc. Varianta CZechBoYe mě včera fakt nenapadla a je to tak geniální a prosté :) Ještě jednou díky moc! A omlouvám se, jak html vypisuji ... Nějak jsem si na to zvykl a mě se to naopak zdá přehlednější ... Ale tak na funkci to myslím žádný vliv nemá ... Ono taky asi bude záležet na tom jaký má člověk editor a jaké má nastavené barvičky atd... samozřejmě chápu, že to asi úpně správné není... Ještě někdy, když se mi jako hodně nechce, nebo spěchám, tak si to zapíšu : echo ' <tr> <td>'.$row['ID'].'</td> <td>'.$row['old_value'].'</td> <td>'.$row['new_value'].'</td> <td><input type="checkbox" name="check_id[]" value="'.$row['ID'].'" /></td> <tr> '; :D |
||
Časová prodleva: 7 let
|
0