[ Príspevkov: 25 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 04.08.10
Prihlásený: 03.04.17
Príspevky: 116
Témy: 28 | 28
NapísalOffline : 20.11.2011 10:45 | Update viacerých záznamov naraz.

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" >&nbsp;</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" >&nbsp;</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>


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 04.08.10
Prihlásený: 03.04.17
Príspevky: 116
Témy: 28 | 28
Napísal autor témyOffline : 22.11.2011 9:33 | Update viacerých záznamov naraz.

Nikto mi teda neporadí?


Offline

Čestný člen
Čestný člen
Update viacerých záznamov naraz.

Registrovaný: 11.08.07
Príspevky: 4110
Témy: 30 | 30
Bydlisko: Brno
NapísalOffline : 22.11.2011 11:41 | Update viacerých záznamov naraz.

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.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 04.08.10
Prihlásený: 03.04.17
Príspevky: 116
Témy: 28 | 28
Napísal autor témyOffline : 22.11.2011 18:44 | Update viacerých záznamov naraz.

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.


Offline

Čestný člen
Čestný člen
Update viacerých záznamov naraz.

Registrovaný: 21.02.06
Prihlásený: 08.12.14
Príspevky: 5447
Témy: 30 | 30
Bydlisko: Bratislava
NapísalOffline : 22.11.2011 18:53 | Update viacerých záznamov naraz.

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.
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 04.08.10
Prihlásený: 03.04.17
Príspevky: 116
Témy: 28 | 28
Napísal autor témyOffline : 22.11.2011 18:59 | Update viacerých záznamov naraz.

Čo mi pomôže WHERE...IN, keď chcem zmeniť hodnoty v zázname?


Offline

Užívateľ
Užívateľ
Update viacerých záznamov naraz.

Registrovaný: 26.12.06
Prihlásený: 30.10.17
Príspevky: 4009
Témy: 181 | 181
Bydlisko: Nitra / Bra...
Vek: 24
NapísalOffline : 22.11.2011 19:39 | Update viacerých záznamov naraz.

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
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 04.08.10
Prihlásený: 03.04.17
Príspevky: 116
Témy: 28 | 28
Napísal autor témyOffline : 22.11.2011 19:53 | Update viacerých záznamov naraz.

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" >&nbsp;</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" >&nbsp;</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)


Offline

Čestný člen
Čestný člen
Update viacerých záznamov naraz.

Registrovaný: 11.08.07
Príspevky: 4110
Témy: 30 | 30
Bydlisko: Brno
NapísalOffline : 22.11.2011 20:25 | Update viacerých záznamov naraz.

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.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 04.08.10
Prihlásený: 03.04.17
Príspevky: 116
Témy: 28 | 28
Napísal autor témyOffline : 22.11.2011 22:04 | Update viacerých záznamov naraz.

Ď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.


Offline

Čestný člen
Čestný člen
Update viacerých záznamov naraz.

Registrovaný: 11.08.07
Príspevky: 4110
Témy: 30 | 30
Bydlisko: Brno
NapísalOffline : 22.11.2011 22:38 | Update viacerých záznamov naraz.

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.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 04.08.10
Prihlásený: 03.04.17
Príspevky: 116
Témy: 28 | 28
Napísal autor témyOffline : 03.12.2011 20:03 | Update viacerých záznamov naraz.

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']); }
?>


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 04.08.10
Prihlásený: 03.04.17
Príspevky: 116
Témy: 28 | 28
Napísal autor témyOffline : 04.04.2012 20:38 | Update viacerých záznamov naraz.

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>


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 14.04.09
Prihlásený: 28.11.17
Príspevky: 1178
Témy: 188 | 188
NapísalOffline : 04.04.2012 22:25 | Update viacerých záznamov naraz.

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
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 04.08.10
Prihlásený: 03.04.17
Príspevky: 116
Témy: 28 | 28
Napísal autor témyOffline : 04.04.2012 22:31 | Update viacerých záznamov naraz.

Zmenil som to, ale stale rovnaka chyba.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 14.04.09
Prihlásený: 28.11.17
Príspevky: 1178
Témy: 188 | 188
NapísalOffline : 04.04.2012 22:44 | Update viacerých záznamov naraz.

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
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 04.08.10
Prihlásený: 03.04.17
Príspevky: 116
Témy: 28 | 28
Napísal autor témyOffline : 05.04.2012 10:09 | Update viacerých záznamov naraz.

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.


Offline

Správca fóra
Správca fóra
Update viacerých záznamov naraz.

Registrovaný: 27.07.07
Príspevky: 3971
Témy: 51 | 51
Bydlisko: Bratislava
Vek: 32
NapísalOffline : 05.04.2012 11:50 | Update viacerých záznamov naraz.

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...


_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 04.08.10
Prihlásený: 03.04.17
Príspevky: 116
Témy: 28 | 28
Napísal autor témyOffline : 05.04.2012 12:17 | Update viacerých záznamov naraz.

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>


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 14.04.09
Prihlásený: 28.11.17
Príspevky: 1178
Témy: 188 | 188
NapísalOffline : 05.04.2012 12:24 | Update viacerých záznamov naraz.

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
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 04.08.10
Prihlásený: 03.04.17
Príspevky: 116
Témy: 28 | 28
Napísal autor témyOffline : 05.04.2012 12:52 | Update viacerých záznamov naraz.

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íspevku

mam to a funguje to...v tom chceckboxe vo value som mal <? namiesto <?php . Ďakujem všetkým za pomoc.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 14.04.09
Prihlásený: 28.11.17
Príspevky: 1178
Témy: 188 | 188
NapísalOffline : 05.04.2012 13:04 | Update viacerých záznamov naraz.

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
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 04.08.10
Prihlásený: 03.04.17
Príspevky: 116
Témy: 28 | 28
Napísal autor témyOffline : 05.04.2012 13:17 | Update viacerých záznamov naraz.

Ď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.


Offline

Správca fóra
Správca fóra
Update viacerých záznamov naraz.

Registrovaný: 27.07.07
Príspevky: 3971
Témy: 51 | 51
Bydlisko: Bratislava
Vek: 32
NapísalOffline : 05.04.2012 13:19 | Update viacerých záznamov naraz.

riesenie je jednoduche - vykonat update pred samotnym selectom, teda presne to, co som ti poradil vyssie...


_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 04.08.10
Prihlásený: 03.04.17
Príspevky: 116
Témy: 28 | 28
Napísal autor témyOffline : 05.04.2012 13:23 | Update viacerých záznamov naraz.

Už to fičí tak ako potrebujem. Ďakujem vám a odteraz slubujem, že sa nebudem pýtať na každú hovadinu.


 [ Príspevkov: 25 ] 


Update viacerých záznamov naraz.



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Odosielanie viacerych suborov naraz

v PHP, ASP

3

330

23.04.2008 17:33

Tominator

Táto téma je zamknutá, nemôžete posielať nové príspevky alebo odpovedať na staršie.

rychlejsie nacitanie viacerych obrazkov naraz

v HTML, XHTML, XML, CSS

21

855

03.08.2010 17:32

shaggy

V tomto fóre nie sú ďalšie neprečítané témy.

vyhladavanie vo viacerych tabulkach naraz

v Databázy

1

481

09.11.2010 16:53

camo

V tomto fóre nie sú ďalšie neprečítané témy.

pouzitie viacerych css suborov naraz

v HTML, XHTML, XML, CSS

4

191

11.09.2012 11:51

capricorn7

V tomto fóre nie sú ďalšie neprečítané témy.

Kopirovanie textu z viacerych suborov naraz

v Ostatné programy

0

258

12.03.2011 9:46

SMOKEYoriginal

V tomto fóre nie sú ďalšie neprečítané témy.

Vkladanie udajov do viacerych tabuliek naraz

v Databázy

4

620

14.05.2008 18:10

asken

V tomto fóre nie sú ďalšie neprečítané témy.

Problém s IPTV na viacerých zariadeniach naraz

v Siete

11

197

18.12.2016 20:20

tatko Tom

V tomto fóre nie sú ďalšie neprečítané témy.

update viacerych stlpcov

v Databázy

2

476

01.09.2008 22:19

m4r14n

V tomto fóre nie sú ďalšie neprečítané témy.

Update viacerych udajov v DB

v Databázy

2

351

06.05.2010 23:10

pcmanik

V tomto fóre nie sú ďalšie neprečítané témy.

MSI LIVE UPDATE 3, update biosu

v nVidia čipové sady

1

1331

11.01.2009 14:33

f4r0

V tomto fóre nie sú ďalšie neprečítané témy.

Počítanie záznamov poľa

v Delphi, Visual Basic

10

820

22.12.2007 21:34

martin90

V tomto fóre nie sú ďalšie neprečítané témy.

Array - porovnanie zaznamov

v PHP, ASP

2

763

10.01.2007 12:41

Papulka

V tomto fóre nie sú ďalšie neprečítané témy.

Vyber nevyhovujucich zaznamov (JOIN)

v Databázy

1

318

26.01.2010 22:02

stenley

V tomto fóre nie sú ďalšie neprečítané témy.

Vymena zaznamov v databaze

v PHP, ASP

6

362

05.11.2009 23:02

danielop

V tomto fóre nie sú ďalšie neprečítané témy.

Mysql zistenie počtu rôznych záznamov

v Databázy

4

607

28.12.2008 16:40

Unlink

V tomto fóre nie sú ďalšie neprečítané témy.

chybné zoradenie záznamov v databáze

v Databázy

24

1854

18.04.2008 22:05

peter555



© 2005 - 2017 PCforum, edited by JanoF