Stránka: 1 z 1
| [ Príspevkov: 25 ] | |
Autor | Správa |
---|
Registrovaný: 04.08.10 Prihlásený: 27.02.19 Príspevky: 117 Témy: 29 | 29 |
Ahojte. Potreboval by som pomôcť so Updateom viacerých záznamov naraz. Ku každému záznamu sa na začiatok pridá checkbox a potreboval by som aby sa upravila hodnota stĺpca "objednane" u 0 na 1 pri tých, pri ktorých ja zaškrtnutý checkbox. V kóde je to vlastne dva krát, pri jednej sa záznam dá ako objednaný a pri druhom ako dodaný(pri tom sa daný stĺpec zmení z 1 na 2). Samozrejme mi stačí pomôcť s tým jedným(druhé snáď zvládnem sám). Vopred ďakujem.
Kód: <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>STSz</title> <link rel="stylesheet" type="text/css" href="../styl.css" /> <script type="text/javascript" src="../js/hodiny.js"></script> <script type="text/javascript" src="../js/delPC.js"></script> </head> <body onLoad="hodiny();"> <?php $a=$_GET['y'];?> <table><tr><td> <a href="../index.php"><img src="../img/stsz.png" alt="Hlavná stránka"></a> </td><td><form name="hodinky"> <?php echo "Dnes je: ".date("j. n. Y ")."";?>, aktuálny čas je: <input type="text" name="cifernik" size="7" STYLE="background-color: #00CCFF; border: 0px;" ></form><br><a href="index.php">Späť na výber dodávateľa</a></td></table> <?php require "../mysql.php"; $x=mysql_query("select pc,objednane,dodavatel,nazov,kod,pocet,jednotky,obj,poznamka FROM sklad WHERE dodavatel LIKE '$a' AND objednane='0' order by dodavatel ASC"); $z=mysql_query("select pc,objednane,dodavatel,nazov,kod,pocet,jednotky,obj,poznamka FROM sklad WHERE dodavatel LIKE '$a' AND objednane='1' order by dodavatel ASC");
if (!$x): echo "doslo k chybe pri otavarani SQL odkazu !"; else: ?> <table> <tr> <td> <table border="1" cellspacing="0" cellpadding="1"> <tr> <tr><b>Objednané:</b></tr> <td bgcolor="cccccc" width="10" align="center"></td> <td overflow: hidden bgcolor="cccccc" width="38" align="center"><strong>PC:</strong></td> <td overflow: hidden bgcolor="cccccc" width="38" align="center"><strong>Objednané:</strong></td> <td bgcolor="cccccc" width="90" align="center"><strong>Dodávateľ:</strong></td> <td bgcolor="cccccc" width="150" align="center"><strong>Názov:</a></strong></td> <td bgcolor="cccccc" width="80" align="center"><strong>Kód:</a></strong></td> <td bgcolor="cccccc" width="80" align="center"><strong>Počet:</a></strong></td> <td bgcolor="cccccc" width="80" align="center"><strong>Jednotky:</a></strong></td> <td bgcolor="cccccc" width="120" align="center"><strong>Objednané dňa:</a></strong></td> <td bgcolor="cccccc" width="80" align="center"><strong>Poznámka:</a></strong></td> <td bgcolor="cccccc" colspan="2" > </td> </tr> <?php
while ($zaznam=mysql_fetch_row($z)):?> <tr> <td bgcolor="#FFFFFF"width="10" align="center"><input name="objednaj" type="checkbox" value="<?php echo $zaznam[0]?>"></td> <td hidden bgcolor="#FFFFFF"width="50" align="center"><?php echo $zaznam[0]?></td> <td hidden bgcolor="#FFFFFF"width="50" align="center"><?php echo $zaznam[1]?></td> <td bgcolor="#FFFFFF"width="90" align="center"><?php echo $zaznam[2]?></td> <td bgcolor="#FFFFFF"width="150" align="center"><?php echo $zaznam[3]?></td> <td bgcolor="#FFFFFF"width="80" align="center"><?php echo $zaznam[4]?></td> <td bgcolor="#FFFFFF"width="80" align="center"><?php echo $zaznam[5]?></td> <td bgcolor="#FFFFFF"width="80" align="center"><?php echo $zaznam[6]?></td> <td bgcolor="#FFFFFF"width="120" align="center"><?php echo $zaznam[7]?></td> <td bgcolor="#FFFFFF"width="140" align="center"><?php echo $zaznam[8]?></td> <td width="32" align="center" bgcolor="eeeeee"> <a href="edit.php?pc=<?php echo $zaznam[0]?>"><img src="../img/edit.png"></a></td> <td width="32" align="center" bgcolor="eeeeee"> <a href="javascript:confirmBox(<?php echo $zaznam[0];?>)"><img src="../img/delete.png"></a></td> </tr> <?php endwhile;?> </table> </td> </tr> <tr> <td> <p><a href="dodaj.php?a=<?php echo date('Y-m-d', $_SESSION['datum'])?>">Dodané</a></p> </td> <tr> </tr> <td valign=TOP> <table border="1" cellspacing="0" cellpadding="1"> <tr> <tr><b>Čaká na objednanie:</b></tr> <td bgcolor="cccccc" width="10" align="center"></td> <td overflow: hidden bgcolor="cccccc" width="38" align="center"><strong>PC:</strong></td> <td overflow: hidden bgcolor="cccccc" width="38" align="center"><strong>Objednané:</strong></td> <td bgcolor="cccccc" width="90" align="center"><strong>Dodávateľ:</strong></td> <td bgcolor="cccccc" width="150" align="center"><strong>Názov:</a></strong></td> <td bgcolor="cccccc" width="80" align="center"><strong>Kód:</a></strong></td> <td bgcolor="cccccc" width="80" align="center"><strong>Počet:</a></strong></td> <td bgcolor="cccccc" width="80" align="center"><strong>Jednotky:</a></strong></td> <td overflow: hidden bgcolor="cccccc" width="80" align="center"><strong>Objednané dňa:</a></strong></td> <td bgcolor="cccccc" width="80" align="center"><strong>Poznámka:</a></strong></td> <td bgcolor="cccccc" colspan="2" > </td> </tr> <?php
while ($zaznam=mysql_fetch_row($x)):?> <tr> <td bgcolor="#FFFFFF"width="10" align="center"><input type='checkbox' name='objednane[".$row['pc']."]' value="1" /></td> <td hidden bgcolor="#FFFFFF"width="50" align="center"><?php echo $zaznam[0]?></td> <td hidden bgcolor="#FFFFFF"width="50" align="center"><?php echo $zaznam[1]?></td> <td bgcolor="#FFFFFF"width="90" align="center"><?php echo $zaznam[2]?></td> <td bgcolor="#FFFFFF"width="150" align="center"><?php echo $zaznam[3]?></td> <td bgcolor="#FFFFFF"width="80" align="center"><?php echo $zaznam[4]?></td> <td bgcolor="#FFFFFF"width="80" align="center"><?php echo $zaznam[5]?></td> <td bgcolor="#FFFFFF"width="80" align="center"><?php echo $zaznam[6]?></td> <td hidden bgcolor="#FFFFFF"width="140" align="center"><?php echo $zaznam[7]?></td> <td bgcolor="#FFFFFF"width="140" align="center"><?php echo $zaznam[8]?></td> <td width="32" align="center" bgcolor="eeeeee"> <a href="edit.php?pc=<?php echo $zaznam[0]?>"><img src="../img/edit.png"></a></td> <td width="32" align="center" bgcolor="eeeeee"> <a href="javascript:confirmBox(<?php echo $zaznam[0];?>)"><img src="../img/delete.png"></a></td> </tr> <?php endwhile;?> </table> </td> <td valign=TOP> <table border="1" cellspacing="0" cellpadding="1"> <?php endif;?> </table> </td> </tr> </table> <p><a href="objednaj.php?pc=<?php echo $zaznam[0]?>">Objednané</a></p> </body> </html>
|
|
Registrovaný: 04.08.10 Prihlásený: 27.02.19 Príspevky: 117 Témy: 29 | 29 | |
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 | 34 Bydlisko: Brno |
Vsetky tie inputy nech maju name="objednane[]" a ako value jednoznacny identifikator daneho produktu. v $_POST['objednane'] budes mat potom pole s hodnotami zaskrtnutych checkboxov a tie mozes pouzit v SQL dotaze.
|
|
Registrovaný: 04.08.10 Prihlásený: 27.02.19 Príspevky: 117 Témy: 29 | 29 |
Dopracoval som sa k niečomu takémuto:
...
Kód: <?php
while ($zaznam=mysql_fetch_row($x)):?> <tr> <td bgcolor="#FFFFFF"width="10" align="center"><input type="checkbox" name="objednane[]" id="objednane[]" value="<? echo $zaznam[0]?>" /></td> <td hidden bgcolor="#FFFFFF"width="50" align="center"><?php echo $zaznam[0]?></td> <td hidden bgcolor="#FFFFFF"width="50" align="center"><?php echo $zaznam[1]?></td> <td bgcolor="#FFFFFF"width="90" align="center"><?php echo $zaznam[2]?></td> <td bgcolor="#FFFFFF"width="150" align="center"><?php echo $zaznam[3]?></td> <td bgcolor="#FFFFFF"width="80" align="center"><?php echo $zaznam[4]?></td> <td bgcolor="#FFFFFF"width="80" align="center"><?php echo $zaznam[5]?></td> <td bgcolor="#FFFFFF"width="80" align="center"><?php echo $zaznam[6]?></td> <td hidden bgcolor="#FFFFFF"width="140" align="center"><?php echo $zaznam[7]?></td> <td bgcolor="#FFFFFF"width="140" align="center"><?php echo $zaznam[8]?></td> <td width="32" align="center" bgcolor="eeeeee"> <a href="edit.php?pc=<?php echo $zaznam[0]?>"><img src="../img/edit.png"></a></td> <td width="32" align="center" bgcolor="eeeeee"> <a href="javascript:confirmBox(<?php echo $zaznam[0];?>)"><img src="../img/delete.png"></a></td> </tr> <?php endwhile; endif; ?> <td colspan="5" align="center" bgcolor="#FFFFFF"><input name="objednane[]" type="submit" id="objednane[]" value="Objednaj"></td> <? if($objednaj){ for($i=0;$i<$count;$i++){ $obj_id = $checkbox[$i]; $obj = ("UPDATE FROM sklad SET objednane='1' WHERE id='$obj_id'"); $vysledok = mysql_query($obj); } if($vysledok){ echo "<meta http-equiv='refresh' content='0; url=zobrazenie.php'>"; } } ?> </table> <tr> </tr> </td> <td valign=TOP> <table border="1" cellspacing="0" cellpadding="1">
</table> </td> </tr> </table> </body> </html>
Keď ale kliknem na tlačidlo Objednaj, tak sa nič nestane.
|
|
Registrovaný: 21.02.06 Prihlásený: 08.12.14 Príspevky: 5404 Témy: 30 | 30 Bydlisko: Bratislava |
Panebože, prečo tam máš UPDATE v tom cykle?
Hovorí ti niečo podmienka WHERE ... IN? A sorry, ale v tomto otrasnom kóde sa fakt nevyznám.
Netuším, odkiaľ sa ti berie premenná $objednaj, možno to tam je, ale v tom bordeli to neviem nájsť.
_________________ Neradím a nekomunikujem cez SS, ak niečo potrebujete, máte iné možnosti: Ak vám zmizla téma, alebo sa vám niečo nepáči. Ak potrebujete nahlásiť príspevok/človeka, reportujte ho. Ak máte s niečim problém, riešte to v danej téme. |
|
Registrovaný: 04.08.10 Prihlásený: 27.02.19 Príspevky: 117 Témy: 29 | 29 |
Čo mi pomôže WHERE...IN, keď chcem zmeniť hodnoty v zázname?
|
|
Registrovaný: 26.12.06 Prihlásený: 16.11.19 Príspevky: 3971 Témy: 181 | 181 Bydlisko: Nitra / Bra... |
no dost ti to pomoze...
a poslal si skaredy a zrejme aj neuplny kod, takze takto ti nikto nebude vediet pomoct. keby si radsej reagoval na tu shaggyho vetu, ze odkial sa berie premenna $objednaj popripadne $checkbox
_________________ Sorry za prelkepy |
|
Registrovaný: 04.08.10 Prihlásený: 27.02.19 Príspevky: 117 Témy: 29 | 29 |
Tak tu je úplný kód. Všetko funguje, okrem tej úpravy zaškrtnutých:
Kód: <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>STSz</title> <link rel="stylesheet" type="text/css" href="../styl.css" /> <script type="text/javascript" src="../js/hodiny.js"></script> <script type="text/javascript" src="../js/delPC.js"></script> </head> <body onLoad="hodiny();"> <?php $a=$_GET['y'];?> <table><tr><td> <a href="../index.php"><img src="../img/stsz.png" alt="Hlavná stránka"></a> </td><td><form name="hodinky"> <?php echo "Dnes je: ".date("j. n. Y ")."";?>, aktuálny čas je: <input type="text" name="cifernik" size="7" STYLE="background-color: #00CCFF; border: 0px;" ></form><br><a href="index.php">Späť na výber dodávateľa</a></td></table> <?php require "../mysql.php"; $x=mysql_query("select pc,objednane,dodavatel,nazov,kod,pocet,jednotky,obj,poznamka FROM sklad WHERE dodavatel LIKE '$a' AND objednane='0' order by dodavatel ASC"); $z=mysql_query("select pc,objednane,dodavatel,nazov,kod,pocet,jednotky,obj,poznamka FROM sklad WHERE dodavatel LIKE '$a' AND objednane='1' order by dodavatel ASC");
if (!$x): echo "doslo k chybe pri otavarani SQL odkazu !"; else: ?> <table> <tr> <td> <table border="1" cellspacing="0" cellpadding="1"> <tr> <tr><b>Objednané:</b></tr> <td bgcolor="cccccc" width="10" align="center"></td> <td overflow: hidden bgcolor="cccccc" width="38" align="center"><strong>PC:</strong></td> <td overflow: hidden bgcolor="cccccc" width="38" align="center"><strong>Objednané:</strong></td> <td bgcolor="cccccc" width="90" align="center"><strong>Dodávateľ:</strong></td> <td bgcolor="cccccc" width="150" align="center"><strong>Názov:</a></strong></td> <td bgcolor="cccccc" width="80" align="center"><strong>Kód:</a></strong></td> <td bgcolor="cccccc" width="80" align="center"><strong>Počet:</a></strong></td> <td bgcolor="cccccc" width="80" align="center"><strong>Jednotky:</a></strong></td> <td bgcolor="cccccc" width="120" align="center"><strong>Objednané dňa:</a></strong></td> <td bgcolor="cccccc" width="80" align="center"><strong>Poznámka:</a></strong></td> <td bgcolor="cccccc" colspan="2" > </td> </tr> <?php
while ($zaznam=mysql_fetch_row($z)):?> <tr> <td bgcolor="#FFFFFF"width="10" align="center"></td> <td hidden bgcolor="#FFFFFF"width="50" align="center"><?php echo $zaznam[0]?></td> <td hidden bgcolor="#FFFFFF"width="50" align="center"><?php echo $zaznam[1]?></td> <td bgcolor="#FFFFFF"width="90" align="center"><?php echo $zaznam[2]?></td> <td bgcolor="#FFFFFF"width="150" align="center"><?php echo $zaznam[3]?></td> <td bgcolor="#FFFFFF"width="80" align="center"><?php echo $zaznam[4]?></td> <td bgcolor="#FFFFFF"width="80" align="center"><?php echo $zaznam[5]?></td> <td bgcolor="#FFFFFF"width="80" align="center"><?php echo $zaznam[6]?></td> <td bgcolor="#FFFFFF"width="120" align="center"><?php echo $zaznam[7]?></td> <td bgcolor="#FFFFFF"width="140" align="center"><?php echo $zaznam[8]?></td> <td width="32" align="center" bgcolor="eeeeee"> <a href="edit.php?pc=<?php echo $zaznam[0]?>"><img src="../img/edit.png"></a></td> <td width="32" align="center" bgcolor="eeeeee"> <a href="javascript:confirmBox(<?php echo $zaznam[0];?>)"><img src="../img/delete.png"></a></td> </tr> <?php endwhile;?> </table> </td> </tr> <tr> <td> <p><a href="dodaj.php?a=<?php echo date('Y-m-d', $_SESSION['datum'])?>">Dodané</a></p> </td> <tr> </tr> <td valign=TOP> <table border="1" cellspacing="0" cellpadding="1"> <tr> <tr><b>Čaká na objednanie:</b></tr> <td bgcolor="cccccc" width="10" align="center"></td> <td overflow: hidden bgcolor="cccccc" width="38" align="center"><strong>PC:</strong></td> <td overflow: hidden bgcolor="cccccc" width="38" align="center"><strong>Objednané:</strong></td> <td bgcolor="cccccc" width="90" align="center"><strong>Dodávateľ:</strong></td> <td bgcolor="cccccc" width="150" align="center"><strong>Názov:</a></strong></td> <td bgcolor="cccccc" width="80" align="center"><strong>Kód:</a></strong></td> <td bgcolor="cccccc" width="80" align="center"><strong>Počet:</a></strong></td> <td bgcolor="cccccc" width="80" align="center"><strong>Jednotky:</a></strong></td> <td overflow: hidden bgcolor="cccccc" width="80" align="center"><strong>Objednané dňa:</a></strong></td> <td bgcolor="cccccc" width="80" align="center"><strong>Poznámka:</a></strong></td> <td bgcolor="cccccc" colspan="2" > </td> </tr> <?php
while ($zaznam=mysql_fetch_row($x)):?> <tr> <td bgcolor="#FFFFFF"width="10" align="center"><input type="checkbox" name="objednane[]" id="objednane[]" value="<? echo $zaznam[0]?>" /></td> <td hidden bgcolor="#FFFFFF"width="50" align="center"><?php echo $zaznam[0]?></td> <td hidden bgcolor="#FFFFFF"width="50" align="center"><?php echo $zaznam[1]?></td> <td bgcolor="#FFFFFF"width="90" align="center"><?php echo $zaznam[2]?></td> <td bgcolor="#FFFFFF"width="150" align="center"><?php echo $zaznam[3]?></td> <td bgcolor="#FFFFFF"width="80" align="center"><?php echo $zaznam[4]?></td> <td bgcolor="#FFFFFF"width="80" align="center"><?php echo $zaznam[5]?></td> <td bgcolor="#FFFFFF"width="80" align="center"><?php echo $zaznam[6]?></td> <td hidden bgcolor="#FFFFFF"width="140" align="center"><?php echo $zaznam[7]?></td> <td bgcolor="#FFFFFF"width="140" align="center"><?php echo $zaznam[8]?></td> <td width="32" align="center" bgcolor="eeeeee"> <a href="edit.php?pc=<?php echo $zaznam[0]?>"><img src="../img/edit.png"></a></td> <td width="32" align="center" bgcolor="eeeeee"> <a href="javascript:confirmBox(<?php echo $zaznam[0];?>)"><img src="../img/delete.png"></a></td> </tr> <?php endwhile; endif; ?> <td colspan="5" align="center" bgcolor="#FFFFFF"><input name="objednane[]" type="submit" id="objednane[]" value="Objednaj"></td> <? if($objednaj){ for($i=0;$i<$count;$i++){ $obj_id = $checkbox[$i]; $obj = ("UPDATE FROM sklad SET objednane='1' WHERE id='$obj_id'"); $vysledok = mysql_query($obj); } if($vysledok){ echo "<meta http-equiv='refresh' content='0; url=zobrazenie.php'>"; } } ?> </table> <tr> </tr> </td> <td valign=TOP> <table border="1" cellspacing="0" cellpadding="1">
</table> </td> </tr> </table> </body> </html>
Čo sa týka tých premenných, tak tie začínajú vlastne pri tom definovaní checkboxu. Pravdepodobne ani to nie je dobre spravené. Práve preto vás prosím o pomoc, keďže tomu proste nerozumiem. Snažil som sa hľadať aj na internete a upraviť kód čo som tam našiel. Odtiaľ som nabral ten update v cykle.(v pôvodnom kóde bolo Delete: http://www.phpeasystep.com/mysql/8.html)
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 | 34 Bydlisko: Brno |
Pointa je, ze ty vobec cyklus nepotrebujes, lebo SQL dopyt moze vyzerat nejako takto:
Kód: UPDATE tabulka SET objednany = 1 WHERE id_produktu IN (12, 34, 56, 78, 90) takze vies updatnut naraz viacej riadkov jednym dopytom. Uz potrebujes len nejak efektivne zlepit dokopy tie identifikatory produktov do jedneho retazca (ktory je v tych zatvorkach v onom dopyte), k tomu ti pomoze PHPckova fcia implode().
Dufam, ze je to teraz jasnejsie.
|
|
Registrovaný: 04.08.10 Prihlásený: 27.02.19 Príspevky: 117 Témy: 29 | 29 |
Ďuri ďakujem. Niečo s tým skúsim poriešiť. Chcel by som sa ešte opýtať či mám dobre tie chcekboxy. Aby som vedel kde budem mať hľadať chybu. Na to implode plánujem použiť niečo takéto:
Kód: <? $obj = array('objednane[]'); echo implode(" ",$obj); ?>
Je reálne použiť toto? Ďakujem.
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 | 34 Bydlisko: Brno |
Prvy riadok je nezmysel, vytvoril si jednoprvkove pole, ktore obsahuje retazec "objednane[]". V mojom predoslom prispevku som ti napisal, ako mas vytvorit HTMLko; ked si vypises obsah $_POST napriklad pomocou var_export(), bude ti z toho jasne, aku strukturu ma to pole, podla toho s nim pracuj.
Druhy riadok je takisto zly, lebo ak si vsimnes, ja som v SQL dotaze oddeloval polozky v zatvorkach ciarkou, ty pouzivas medzeru.
|
|
Registrovaný: 04.08.10 Prihlásený: 27.02.19 Príspevky: 117 Témy: 29 | 29 |
Toto už je lepšie? Chcem sa spýtať či môže mať ten checkbox value="<? echo $zaznam[0]?>"
<?php
if(isset($_POST['objednane']))
{ $ha = implode(",",$_POST['objednane']); }
?>
|
|
Registrovaný: 04.08.10 Prihlásený: 27.02.19 Príspevky: 117 Témy: 29 | 29 |
Ahojte. Este raz vas porosim o radu v tomto probleme. Mam kod, ktory je nizsie.
Ked pozahackujem a kliknem na activate/deactivate, tak vypise chybu na riadku 20, to je ten, kdtory naplna tabulku udajmi z databazi: <?php while ($zaznam=mysql_fetch_array($x)){?> Ale Dreamweaver nepise ziadnu syntakticku chybu. Za pomoc vopred ďakujem.
Chyba znie: Warning: mysql_fetch_array() expects parameter 1 to be resource, string given in C:\Program Files\XAMPP\xampp\htdocs\pokus\index.php on line 20
Kod je:
Kód: <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>skuska</title> </head><body> <?php require "mysql.php"; $x=mysql_query("select pc,obj,neco FROM ha WHERE obj='0'"); if(isset($_POST['checkbox'])){$checkbox = $_POST['checkbox']; if(isset($_POST['activate'])?$activate = $_POST["activate"]:$deactivate = $_POST["deactivate"]) $pc = "('" . implode( "','", $checkbox ) . "');" ; $x="UPDATE ha SET obj = '".(isset($activate)?'1':'0')."' WHERE pc IN $pc" ;}?> <a href="add.php">novy</a> <table> <form name="frmactive" method="post" action=""> <td colspan="5"><input name="activate" type="submit" id="activate" value="Activate" /> <input name="deactivate" type="submit" id="deactivate" value="Deactivate" /></td><tr> <td></td> <td>PC:</td> <td>obj:</td> <td>Neco:</td> </tr> <?php while ($zaznam=mysql_fetch_array($x)){?> <tr> <td><input name="checkbox[]" type="checkbox" id="checkbox[]" value="<? echo $zaznam[0]; ?>"></td> <td><?php echo $zaznam[0]?></td> <td><?php echo $zaznam[1]?></td> <td><?php echo $zaznam[2]?></td></tr> <?php }?> </form></table> </body> </html>
|
|
Registrovaný: 14.04.09 Prihlásený: 20.09.24 Príspevky: 1188 Témy: 198 | 198 |
Riadok:
Kód: $x="UPDATE ha SET obj = '".(isset($activate)?'1':'0')."' WHERE pc IN $pc" ;}?> zmen na: Kód: $x=mysql_query("UPDATE ha SET obj = '".(isset($activate)?'1':'0')."' WHERE pc IN $pc") ;}?>
Na to si mohol prist aj sam.
_________________ CPU: Intel core i5 3470 GPU: Gigabyte N760OC-2GD MB: MSI B75A-G43 RAM: DDRAM3 8GB (2x4GB) TEAM RAM 1600MHz Elite Zdroj: Seasonic G Series 450W HDD: 500GB vybraty z notebooku Lenovo E531 i5-3230M N4IBPXS SSD:Samsung 840 Evo 250GB Case: Fractal Define R4 black pearl FAN: Cooler Master Hyper 212+ EVO DVD: SAMSUNG DVD±R/±RW/RAM SH-224DB SATA, černá, bulk OS: Ubuntu 12.04 64bit & Windows 7 Ultimate 64bit Monitor: Dell U2412m |
|
Registrovaný: 04.08.10 Prihlásený: 27.02.19 Príspevky: 117 Témy: 29 | 29 |
Zmenil som to, ale stale rovnaka chyba.
|
|
Registrovaný: 14.04.09 Prihlásený: 20.09.24 Príspevky: 1188 Témy: 198 | 198 |
Moc som tvoj kod nekukal, nechaj si vypisat chyby v mysql cez mysql_error.
_________________ CPU: Intel core i5 3470 GPU: Gigabyte N760OC-2GD MB: MSI B75A-G43 RAM: DDRAM3 8GB (2x4GB) TEAM RAM 1600MHz Elite Zdroj: Seasonic G Series 450W HDD: 500GB vybraty z notebooku Lenovo E531 i5-3230M N4IBPXS SSD:Samsung 840 Evo 250GB Case: Fractal Define R4 black pearl FAN: Cooler Master Hyper 212+ EVO DVD: SAMSUNG DVD±R/±RW/RAM SH-224DB SATA, černá, bulk OS: Ubuntu 12.04 64bit & Windows 7 Ultimate 64bit Monitor: Dell U2412m |
|
Registrovaný: 04.08.10 Prihlásený: 27.02.19 Príspevky: 117 Témy: 29 | 29 |
Vypísalo to tieto chyby:
Warning: mysql_errno() expects parameter 1 to be resource, null given in C:\Program Files\XAMPP\xampp\htdocs\pokus\index.php on line 27
Warning: mysql_error() expects parameter 1 to be resource, null given in C:\Program Files\XAMPP\xampp\htdocs\pokus\index.php on line 27
27 riadok je ten, kde som vložil: echo mysql_errno($link) . ": " . mysql_error($link) . "\n";
// pridané po 6 minútach od posledného príspevku
raep keď odstánim tú premennú link, ktorú neviem prečo som tam nechal, tak napíše len chybu:
0:
A nič ďalej a kdeď kliknem na activate/deactivate, tak to vypíše tú chybu, ktorú som už spomínal včera.
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 | 51 Bydlisko: Bratislava |
problem je v prvom rade v tom, ze select aj update ukladas do tej istej premennej - nebolo by od veci, keby si si svoj kod sprehladnil a trebars aj rozdelil na 2 casti - na zaciatku by bol kod, ktory sa vykona, ak sa odosle formular, za nim by siel kod, ktory sa stara o vypis samotneho obsahu...
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 04.08.10 Prihlásený: 27.02.19 Príspevky: 117 Témy: 29 | 29 |
Myslel si nejak takto? Chybu to teraz nepíše žiadnu ani keď dám activate alebo deactivate, ale aj tak to nič nespraví. No a kód som rozdelil. Od začiatku ide to čo sa má vykonať najprv a potom, keď skončí tabuľka, tak by malo ísť to, čo sa vykoná keď sa klikne na activate alebo deactivate.
Kód: <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>skuska</title> </head><body> <?php require "mysql.php"; echo mysql_errno() . ": " . mysql_error() . "\n"; $x=mysql_query("select pc,obj,neco FROM ha"); ?> <a href="add.php">novy</a> <table> <form name="frmactive" method="post" action=""> <td colspan="5"><input name="activate" type="submit" id="activate" value="Activate" /> <input name="deactivate" type="submit" id="deactivate" value="Deactivate" /></td><tr> <td></td> <td>PC:</td> <td>obj:</td> <td>Neco:</td> </tr> <?php while ($zaznam=mysql_fetch_array($x)){?> <tr> <td><input name="checkbox[]" type="checkbox" id="checkbox[]" value="<? echo $zaznam[0]; ?>"></td> <td><?php echo $zaznam[0]?></td> <td><?php echo $zaznam[1]?></td> <td><?php echo $zaznam[2]?></td></tr> <?php } if(isset($_POST['checkbox[]'])){$checkbox = $_POST['checkbox[]']; if(isset($_POST['activate'])?$activate = $_POST["activate"]:$deactivate = $_POST["deactivate"]) $c = "('" . implode( "', '", $checkbox ) . "');" ; $y=mysql_query("UPDATE ha SET obj = '".(isset($activate)?'1':'2')."' WHERE pc IN $c") ;} ?> </form></table> <?php if(isset($_POST['checkbox[]'])){$checkbox = $_POST['checkbox[]']; if(isset($_POST['activate'])?$activate = $_POST["activate"]:$deactivate = $_POST["deactivate"]) $c = "('" . implode( "', '", $checkbox ) . "');" ; $y=mysql_query("UPDATE ha SET obj = '".(isset($activate)?'1':'2')."' WHERE pc IN $c") ;} ?> </body> </html>
|
|
Registrovaný: 14.04.09 Prihlásený: 20.09.24 Príspevky: 1188 Témy: 198 | 198 |
1. Stenley ma pravdu, prva chyba je v tom, ze obydve poziadavky ukladas do $x. Tu druhu poziadavku:
Kód: $x="UPDATE ha SET obj = '".(isset($activate)?'1':'0')."' WHERE pc IN $pc" ; Si ani do premennej ukladat nemusis takze stacit prepisat na: Kód: mysql_query("UPDATE ha SET obj = '".(isset($activate)?'1':'0')."' WHERE pc IN $pc") ; 2. Chybna SQL poziadavka bude ais kvoli tomuto riadku: Kód: $pc = "('" . implode( "','", $checkbox ) . "');"; Mas na konci bodkociarku ktora tam nema byt (pred zatvorkou) cize: Kód: $pc = "('" . implode( "','", $checkbox ) . "')"; 3. Pisal som ti ze mas zapnut vypisovanie chyb. Ten kod si nasiel nete. $link premenna ma obsahovat aktualne mysql pripojenie lenze ty v nej nic nemas, preto ti pise chybu. tam, kde pouzivas mysql_connect() musis pouzit $link = mysql_connect(). Alebo vypisuj chyby takto: Kód: mysql_error( $SQL ) or die( mysql_error() );
Nabuduce si poriadne prestuduj dokumentaciu.
4. Nemas ten kod chraneny. Hodnoty mozes osetrit cez mysql_real_escape_string(). Ale to s tvojou chybou nesuvisi.
// P.S. Moj prispevok som pisal este pred tym, nez si odoslal tvoj posledny.
_________________ CPU: Intel core i5 3470 GPU: Gigabyte N760OC-2GD MB: MSI B75A-G43 RAM: DDRAM3 8GB (2x4GB) TEAM RAM 1600MHz Elite Zdroj: Seasonic G Series 450W HDD: 500GB vybraty z notebooku Lenovo E531 i5-3230M N4IBPXS SSD:Samsung 840 Evo 250GB Case: Fractal Define R4 black pearl FAN: Cooler Master Hyper 212+ EVO DVD: SAMSUNG DVD±R/±RW/RAM SH-224DB SATA, černá, bulk OS: Ubuntu 12.04 64bit & Windows 7 Ultimate 64bit Monitor: Dell U2412m |
|
Registrovaný: 04.08.10 Prihlásený: 27.02.19 Príspevky: 117 Témy: 29 | 29 |
Tak som sa dopracoval k niecomu takemuto:
Kód: <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>skuska</title> </head><body> <?php require "mysql.php"; $x=mysql_query("select pc,obj,neco FROM ha"); ?> <a href="add.php">novy</a> <table> <form name="frmactive" method="post" action=""> <td colspan="5"><input name="activate" type="submit" id="activate" value="Activate" /> <input name="deactivate" type="submit" id="deactivate" value="Deactivate" /></td><tr> <td></td> <td>PC:</td> <td>obj:</td> <td>Neco:</td> </tr> <?php while ($zaznam=mysql_fetch_array($x)){?> <tr> <td><input name="checkbox[]" type="checkbox" id="checkbox[]" value="<? echo $zaznam[0] ?>"></td> <td><?php echo $zaznam[0]?></td> <td><?php echo $zaznam[1]?></td> <td><?php echo $zaznam[2]?></td></tr> <?php }?> </form></table> <?php if(isset($_POST['checkbox'])) {$checkbox = $_POST['checkbox']; if(isset($_POST['activate'])?$activate = $_POST["activate"]:$deactivate = $_POST["deactivate"]) $c = "('" . implode( "','", $checkbox ) . "')" ; mysql_query("UPDATE ha SET obj = '".(isset($activate)?'1':'0')."' WHERE pc IN $c") ;} ?> </body> </html>
Ak by to implode bolo spravne, tak problem bude asi niekde inde, nakoľko keď si zobrazim danu stranku a pozriem si zdrojovy kod, tak checkbox ma value="<? echo $zaznam[0] ?>" , cize nema value toho pc, co by mal mat, ale pc uz zobrazi normalne cislom tak ako ma. // pridané po 2 minútach od posledného príspevkumam to a funguje to...v tom chceckboxe vo value som mal <? namiesto <?php . Ďakujem všetkým za pomoc.
|
|
Registrovaný: 14.04.09 Prihlásený: 20.09.24 Príspevky: 1188 Témy: 198 | 198 |
Najprv pis kod, potom rozmyslaj a ked uz nevies co by si mohol vyhladat/vyskusat, potom napis nam.
Vsade mas znacky <?php ?> len tu:
Kód: <? echo $zaznam[0] ?> spravny zapis: Kód: <?php echo $zaznam[0]; ?>
pretoze tvoj server asi nepodporuje skratenu formu.
Vsetko to mas v dokumentaci http://www.php.net/manual/en/language.b ... hpmode.php .
// Zasa som pisal skor nez si odoslal svoj prispevok.
_________________ CPU: Intel core i5 3470 GPU: Gigabyte N760OC-2GD MB: MSI B75A-G43 RAM: DDRAM3 8GB (2x4GB) TEAM RAM 1600MHz Elite Zdroj: Seasonic G Series 450W HDD: 500GB vybraty z notebooku Lenovo E531 i5-3230M N4IBPXS SSD:Samsung 840 Evo 250GB Case: Fractal Define R4 black pearl FAN: Cooler Master Hyper 212+ EVO DVD: SAMSUNG DVD±R/±RW/RAM SH-224DB SATA, černá, bulk OS: Ubuntu 12.04 64bit & Windows 7 Ultimate 64bit Monitor: Dell U2412m |
|
Registrovaný: 04.08.10 Prihlásený: 27.02.19 Príspevky: 117 Témy: 29 | 29 |
Ďakujem za radu a určite si to radšej nabudúce oveľa lepšie naštudujem najprv. Teraz však s tým mám ešte jeden malinký problém. Keď to zmení to číslo, tak musím ešte raz kliknúť na tlačítko aby sa stránka refreshla a zobrazilo sa to zmenené číslo tak jak potrebujem. Chcel by som ale aby sa to stalo už na prvý krát. Vo form, kde do action dám index.php(meno danej stránky)tak to nejak nepomôže. Musím to najprv presmerovať na inú stránku a z nej späť na túto? Dalo by sa to aj bez toho? Viem, že je to možné stránku refreshnúť pomocou <meta http-equiv="Refresh" content="0; url=index.php"> ale nechcem to refreshovať pravidelne, ale iba pri zmene(kliknutí na tlačidlo activate alebo deactivate). Ďakujem.
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 | 51 Bydlisko: Bratislava |
riesenie je jednoduche - vykonat update pred samotnym selectom, teda presne to, co som ti poradil vyssie...
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 04.08.10 Prihlásený: 27.02.19 Príspevky: 117 Témy: 29 | 29 |
Už to fičí tak ako potrebujem. Ďakujem vám a odteraz slubujem, že sa nebudem pýtať na každú hovadinu.
|
|
Stránka: 1 z 1
| [ Príspevkov: 25 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| v PHP, ASP | 3 | 556 | 23.04.2008 17:33 Tominator | | v HTML, XHTML, XML, CSS | 21 | 1283 | 03.08.2010 17:32 shaggy | | v Databázy | 1 | 675 | 09.11.2010 16:53 camo | | v HTML, XHTML, XML, CSS | 4 | 447 | 11.09.2012 11:51 capricorn7 | | v Ostatné programy | 0 | 598 | 12.03.2011 9:46 SMOKEYoriginal | | v Databázy | 4 | 952 | 14.05.2008 18:10 asken | | v Siete | 11 | 935 | 18.12.2016 20:20 tatko Tom | | v Databázy | 2 | 689 | 01.09.2008 22:19 m4r14n | | v Databázy | 2 | 508 | 06.05.2010 23:10 pcmanik | | v nVidia čipové sady | 1 | 1864 | 11.01.2009 14:33 f4r0 | | v PHP, ASP | 2 | 1090 | 10.01.2007 12:41 Papulka | | v Delphi, Visual Basic | 10 | 1135 | 22.12.2007 21:34 martin90 | | v PHP, ASP | 6 | 662 | 05.11.2009 23:02 danielop | | v Databázy | 1 | 585 | 26.01.2010 22:02 stenley | | v Operačné systémy Microsoft | 4 | 5981 | 23.12.2007 8:18 konig | | v Databázy | 2 | 533 | 03.02.2010 19:28 p360t |
|