Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 25 ] 
AutorSpráva
Offline

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

Registrovaný: 04.08.10
Prihlásený: 27.02.19
Príspevky: 117
Témy: 29
Príspevok NapísalOffline : 20.11.2011 10:45

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ý: 27.02.19
Príspevky: 117
Témy: 29
Príspevok Napísal autor témyOffline : 22.11.2011 9:33

Nikto mi teda neporadí?


Offline

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

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34
Bydlisko: Brno
Príspevok NapísalOffline : 22.11.2011 11:41

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ý: 27.02.19
Príspevky: 117
Témy: 29
Príspevok Napísal autor témyOffline : 22.11.2011 18:44

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: 5404
Témy: 30
Bydlisko: Bratislava
Príspevok NapísalOffline : 22.11.2011 18:53

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ý: 27.02.19
Príspevky: 117
Témy: 29
Príspevok Napísal autor témyOffline : 22.11.2011 18:59

Č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ý: 16.11.19
Príspevky: 3971
Témy: 181
Bydlisko: Nitra / Bra...
Príspevok NapísalOffline : 22.11.2011 19:39

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ý: 27.02.19
Príspevky: 117
Témy: 29
Príspevok Napísal autor témyOffline : 22.11.2011 19:53

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: 4088
Témy: 34
Bydlisko: Brno
Príspevok NapísalOffline : 22.11.2011 20:25

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ý: 27.02.19
Príspevky: 117
Témy: 29
Príspevok Napísal autor témyOffline : 22.11.2011 22:04

Ď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: 4088
Témy: 34
Bydlisko: Brno
Príspevok NapísalOffline : 22.11.2011 22:38

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ý: 27.02.19
Príspevky: 117
Témy: 29
Príspevok Napísal autor témyOffline : 03.12.2011 20:03

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ý: 27.02.19
Príspevky: 117
Témy: 29
Príspevok Napísal autor témyOffline : 04.04.2012 20:38

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ý: 18.01.22
Príspevky: 1188
Témy: 198
Príspevok NapísalOffline : 04.04.2012 22:25

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ý: 27.02.19
Príspevky: 117
Témy: 29
Príspevok Napísal autor témyOffline : 04.04.2012 22:31

Zmenil som to, ale stale rovnaka chyba.


Offline

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

Registrovaný: 14.04.09
Prihlásený: 18.01.22
Príspevky: 1188
Témy: 198
Príspevok NapísalOffline : 04.04.2012 22:44

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ý: 27.02.19
Príspevky: 117
Témy: 29
Príspevok Napísal autor témyOffline : 05.04.2012 10:09

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: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 05.04.2012 11:50

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
Offline

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

Registrovaný: 04.08.10
Prihlásený: 27.02.19
Príspevky: 117
Témy: 29
Príspevok Napísal autor témyOffline : 05.04.2012 12:17

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ý: 18.01.22
Príspevky: 1188
Témy: 198
Príspevok NapísalOffline : 05.04.2012 12:24

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ý: 27.02.19
Príspevky: 117
Témy: 29
Príspevok Napísal autor témyOffline : 05.04.2012 12:52

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ý: 18.01.22
Príspevky: 1188
Témy: 198
Príspevok NapísalOffline : 05.04.2012 13:04

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ý: 27.02.19
Príspevky: 117
Témy: 29
Príspevok Napísal autor témyOffline : 05.04.2012 13:17

Ď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: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 05.04.2012 13:19

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
Offline

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

Registrovaný: 04.08.10
Prihlásený: 27.02.19
Príspevky: 117
Témy: 29
Príspevok Napísal autor témyOffline : 05.04.2012 13:23

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


Odpovedať na tému [ Príspevkov: 25 ] 


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

521

23.04.2008 17:33

Tominator Zobrazenie posledných príspevkov

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

v Databázy

1

637

09.11.2010 16:53

camo Zobrazenie posledných príspevkov

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

v HTML, XHTML, XML, CSS

4

403

11.09.2012 11:51

capricorn7 Zobrazenie posledných príspevkov

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

1204

03.08.2010 17:32

shaggy Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Vkladanie udajov do viacerych tabuliek naraz

v Databázy

4

885

14.05.2008 18:10

asken Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Kopirovanie textu z viacerych suborov naraz

v Ostatné programy

0

531

12.03.2011 9:46

SMOKEYoriginal Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Problém s IPTV na viacerých zariadeniach naraz

v Siete

11

774

18.12.2016 20:20

tatko Tom Zobrazenie posledných príspevkov

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

v Databázy

2

652

01.09.2008 22:19

m4r14n Zobrazenie posledných príspevkov

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

v Databázy

2

482

06.05.2010 23:10

pcmanik Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. MSI LIVE UPDATE 3, update biosu

v nVidia čipové sady

1

1794

11.01.2009 14:33

f4r0 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Počítanie záznamov poľa

v Delphi, Visual Basic

10

1091

22.12.2007 21:34

martin90 Zobrazenie posledných príspevkov

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

v PHP, ASP

2

1045

10.01.2007 12:41

Papulka Zobrazenie posledných príspevkov

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

v PHP, ASP

6

612

05.11.2009 23:02

danielop Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Vyber nevyhovujucich zaznamov (JOIN)

v Databázy

1

541

26.01.2010 22:02

stenley Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. chybné zoradenie záznamov v databáze

v Databázy

24

2149

18.04.2008 22:05

peter555 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. totálne vymazanie záznamov z registrov

v Operačné systémy Microsoft

4

5882

23.12.2007 8:18

konig Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra