Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  Tabelist mitme väärtuse muutmine. Kasutades checkboxi, SQL ja PHP märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
redenergy
HV veteran
redenergy

liitunud: 22.03.2004




sõnum 27.06.2013 00:19:11 Tabelist mitme väärtuse muutmine. Kasutades checkboxi, SQL ja PHP vasta tsitaadiga

Tere, pikemat aega jaman juba asjaga.
Nimelt, kui kasutaja valib checkboxid ja vajutab muuda nuppu, siis kuvatakse kõik andmed endiselt aga checkitud andmed kuvatakse input formis.
Probleem tekib juba error checkis, ainult viimasel veal tekitab errori ja eelnevad laseb minema. Milline oleks parim lahendus sellisele asjale?
Tegu testimise koodiga, põhimõte oleks tähtis. Ehk oskab keegi õigele teele viia.

Tänud

php:
  1.  
  2. <table id="layout" cellspacing="0">
  3. <?php
  4. if(isset($_POST['editem'])){
  5. foreach($_POST['value'] as $value){
  6.     if(!is_numeric($value)){
  7.             echo 'Summa peab olema number';
  8.                 $error = TRUE;
  9.                 $false[] = $value;
  10.                 }
  11.         }
  12.         if($error == FALSE){
  13.                 echo 'OK!';
  14.         }
  15. }
  16. $result = mysql_query("SELECT catID, cur AS value, description, valueID, UNIX_TIMESTAMP(timestamp) AS timestamp FROM test
  17. WHERE userID = '1' AND catID = '$catid'
  18. ORDER BY timestamp DESC
  19. LIMIT 0, 10 ")
  20. while($row = mysql_fetch_array($result)){
  21. $description = $row['description'];
  22. $value = $row['value'];
  23. $valueid = $row['valueID'];
  24. $timestamp = $row['timestamp'];
  25. $time = date('d.m.Y', $timestamp);
  26.  
  27. $checkbox = $_POST['checkbox'];
  28.         if(isset($checkbox) && in_array($valueid, $checkbox)){
  29. ?>
  30. <form method="post" action="<?=$PHP_SELF; ?>">
  31. <tr>
  32.     <td align="left"><input class="edittime" type="text" name="time" value="<?=$time; ?>" /></td>
  33.     <td><input class="editinput" type="text" name="description" value="<?=$description; ?>" /></td>
  34.     <td align="left"><input class="edittime" type="text" name="value[]" value="<?=$value ?>" /></td>
  35.     <td align="right"><input class="edittime" type="text" name="valueid[]" value="<?=$valueid; ?>" /></td>
  36.     <td align="center"></td>
  37. </tr>
  38. <input type="submit" name="editem" value="" id="delete" />
  39. </form>
  40. <?php
  41.         }
  42.         else{
  43. ?>
  44. <form method="post" action="">
  45. <tr>
  46.     <td><?=$time; ?></td>
  47.     <td><?=$description; ?></td>
  48.     <td align="right"><?=$value ?></td>
  49.     <td align="right"><?=$saldo ?></td>
  50.     <td align="right"><input type="checkbox" name="checkbox[]" class="checkbox" value="<?=$valueid?>" id="checkbox_<?=$valueid;?>" /></td>
  51. </tr>
  52. <?php
  53. }
  54. }
  55. ?>
  56. </table>
  57.  
Kommentaarid: 30 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 9
tagasi üles
vaata kasutaja infot saada privaatsõnum
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 27.06.2013 17:34:51 vasta tsitaadiga

See kontroll osa toimib küll normaalselt jama peab sul mujal olema. Viimane form sul lõpetamata muidu.



php:
  1. <table id="layout" cellspacing="0">
  2.  
  3. <?php
  4.  
  5. if(isset($_POST['editem'])){
  6.  
  7. foreach($_POST['value'] as $value){
  8.  
  9.     if(!is_numeric($value)){
  10.  
  11.             echo 'Summa peab olema number';
  12.  
  13.                 $error = TRUE;
  14.  
  15.                 $false[] = $value;
  16.  
  17.                 }
  18.  
  19.         }
  20.  
  21.         if($error == FALSE){
  22.  
  23.                 echo 'OK!';
  24.  
  25.         }
  26.  
  27. }
  28.  
  29.  
  30. var_dump($false);
  31. ?>
  32.  
  33. <form method="post" action="?">
  34.  
  35. <tr>
  36.  
  37.     <td align="left"><input class="edittime" type="text" name="time" value="<?=$time; ?>" /></td>
  38.  
  39.     <td><input class="editinput" type="text" name="description" value="<?=$description; ?>" /></td>
  40.  
  41.     <td align="left"><input class="edittime" type="text" name="value[]" value="<?=$value ?>" /></td>
  42.  
  43.     <td align="right"><input class="edittime" type="text" name="valueid[]" value="<?=$valueid; ?>" /></td>
  44.  
  45.     <td align="center"></td>
  46.  
  47. </tr>
  48.  
  49. <tr>
  50.  
  51.     <td align="left"><input class="edittime" type="text" name="time" value="<?=$time; ?>" /></td>
  52.  
  53.     <td><input class="editinput" type="text" name="description" value="<?=$description; ?>" /></td>
  54.  
  55.     <td align="left"><input class="edittime" type="text" name="value[]" value="<?=$value ?>" /></td>
  56.  
  57.     <td align="right"><input class="edittime" type="text" name="valueid[]" value="<?=$valueid; ?>" /></td>
  58.  
  59.     <td align="center"></td>
  60.  
  61. </tr>
  62.  
  63. <tr>
  64.  
  65.     <td align="left"><input class="edittime" type="text" name="time" value="<?=$time; ?>" /></td>
  66.  
  67.     <td><input class="editinput" type="text" name="description" value="<?=$description; ?>" /></td>
  68.  
  69.     <td align="left"><input class="edittime" type="text" name="value[]" value="<?=$value ?>" /></td>
  70.  
  71.     <td align="right"><input class="edittime" type="text" name="valueid[]" value="<?=$valueid; ?>" /></td>
  72.  
  73.     <td align="center"></td>
  74.  
  75. </tr>
  76.  
  77.  
  78. <table>
  79. <input type="submit" name="editem" value="" id="delete" />
  80.  
  81. </form>

_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
redenergy
HV veteran
redenergy

liitunud: 22.03.2004




sõnum 30.06.2013 18:38:36 vasta tsitaadiga

Tänud, tundub, et viga oligi formi ülesehituses icon_smile.gif
Aga nüüd olen jälle ummuksis.
Kui on tekkinud viga siis tekitan array($data), et kasutaja poolt viimane sisestus oleks samal kujul input fieldis kuvatud ($data[$valueid]icon_wink.gif $data on siis array mis sisaldab $valueid => $editvalue.
while loopis kasutan $valueid, mis peaks siis kuvama arrayst selle välja kohta tehtud vigase sisestuse. Aga ta ei tee seda, kuvab märgitud väljadel ainult viimase kasutajapoolt sisestatud väärtuse, teised valitud väljad on tühjad.
print_r andis sellise tulemuse, kui sisestasin 4 väärtust: aa, bb, cc, dd:
Array ( [2277] => aa ) Array ( [2275] => bb ) Array ( [2278] => cc ) Array ( [2258] => dd )

Olen proovinud üht-kui-teistpidi, igasugune abistav vihje on tänuväärt.

sql:
  1. <form method="post" action="<?=$PHP_SELF; ?>">
  2. <table id="layout" cellspacing="0">
  3. <?php
  4. IF(isset($_POST['editem'])){
  5. $editvalue = $_POST['value'];
  6. $editid = $_POST['valueid'];
  7.  
  8. FOR($i=0;$i<count($editid);$i++){
  9.     IF(!is_numeric($editvalue[$i])){
  10.             echo 'Summa peab olema number';
  11.                 $error = TRUE;
  12.                 $editem = $editid[$i];
  13.                 $editcheck = $editid;
  14.                 $editvalueem = $editvalue;
  15.         $data = array($editem => $editvalueem[$i]);
  16.         }
  17.         IF($error == FALSE){
  18.                 echo 'OK!';
  19.         }
  20.                 print_r($data);
  21. }
  22. }
  23. $result = mysql_query("SELECT catID, cur AS value, description, valueID, UNIX_TIMESTAMP(timestamp) AS timestamp FROM test
  24. WHERE userID = 1 AND catID = '$catid'
  25. ORDER BY timestamp DESC
  26. LIMIT 0, 10 ")
  27. OR die(mysql_error());
  28. while($row = mysql_fetch_array($result)){
  29. $description = $row['description'];
  30. $value = $row['value'];
  31. $valueid = $row['valueID'];
  32. $catid = $row['catID'];
  33. $timestamp = $row['timestamp'];
  34. $time = date('d.m.Y', $timestamp);
  35. $checkbox = $_POST['checkbox'];
  36.  
  37. IF(isset($editid) && isset($_POST['editem']) && in_array($valueid, $editcheck)){
  38. ?>
  39. <tr>
  40.     <td align="left"><input class="edittime" type="text" name="time" value="<?=$time; ?>" /></td>
  41.     <td><input class="editinput" type="text" name="description" value="<?=$description; ?>" /></td>
  42.     <td align="left"><input class="edittime" type="text" name="value[]" value="<?=$data[$valueid]; ?>" /></td>
  43.     <td align="right"><input class="edittime" type="text" name="valueid[]" value="<?=$valueid; ?>" /></td>
  44.     <td align="center"></td>
  45. </tr>
  46. <?php
  47.         }
  48. elseif(isset($_POST['edit']) && isset($checkbox) && in_array($valueid, $checkbox)){
  49. ?>
  50. <tr>
  51.     <td align="left"><input class="edittime" type="text" name="time" value="<?=$time; ?>" /></td>
  52.     <td><input class="editinput" type="text" name="description" value="<?=$description; ?>" /></td>
  53.     <td align="left"><input class="edittime" type="text" name="value[]" value="<?=$value; ?>" /></td>
  54.     <td align="right"><input class="edittime" type="text" name="valueid[]" value="<?=$valueid; ?>" /></td>
  55.     <td align="center"></td>
  56. </tr>
  57.  
  58. <?php
  59.         }
  60. else{
  61. ?>
  62. <tr>
  63.     <td><?=$time; ?></td>
  64.     <td><?=$description; ?></td>
  65.     <td align="right"><?=money_format('%n', $value) ?></td>
  66.     <td align="right"><?=money_format('%n', $saldo) ?></td>
  67.     <td align="right"><input type="checkbox" name="checkbox[]" class="checkbox" value="<?=$valueid?>" id="checkbox_<?=$valueid;?>" /></td>
  68. </tr>
  69. <?php
  70. }
  71. }
  72. ?>
  73. </table>
  74. <input type="submit" name="editem" value="" id="delete" />
  75. <input type="submit" name="edit" value="" id="edit" />
  76. <input type="submit" name="sess" value="Sess" />
  77. </form>
Kommentaarid: 30 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 9
tagasi üles
vaata kasutaja infot saada privaatsõnum
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 01.07.2013 23:28:53 vasta tsitaadiga

Ehk on abiks

php:
  1.  
  2. <style>
  3. .fa input{background:#ff0000;}
  4. </style>
  5. <form method="post" action="?">
  6.  
  7. <table>
  8.  
  9. <?php
  10. // numbri kontroll
  11.         function number($nr){
  12.                 if(is_numeric(trim($nr))){return true;}else{return false;}
  13.         }       
  14.                
  15. $checkbox = Array();   
  16. //selle asemel su andmebaasi while ja $i paned counteriga lugema
  17. for($i=1;$i<5;$i++){
  18.  
  19. <tr>
  20.  
  21.     <td>aeg</td>
  22.  
  23.     <td>veel midagi</td>';
  24.         //hidden väljalt saabuvad muutujad, kui pole annad ette mingi default väärtuse
  25.         if(isset($_POST['muutuja'])){$muutuja2 = $_POST['muutuja'];$muutuja = $muutuja2[$i-1];}else{ $muutuja = 'muutuja';}
  26.        
  27.         //kui saabub INPUT väljalt muudetud väärtus
  28.         if(isset($_POST['ed'])){
  29.                 $ed = $_POST['ed'];
  30.                 if($ed[$i]!=''){
  31.                         $muutuja = $ed[$i];
  32.                         //kui pole number, siis class külge sellele, kontroll sisse ja $checkbox masiivi vastav rida sisse
  33.                         if(number($muutuja)== false){ $clas = 'class="fa"';$k=1;$checkbox[]=$i;}else{$clas = '';$k=0;}
  34.                 }
  35.         }
  36.        
  37. echo '<td '.$clas.'>'
  38. // vajutati edit nuppu või polnud sisestatud number
  39.         if(isset($_POST['edit']) or $k==1){
  40.                
  41.                 if(isset($_POST['checkbox'])){$checkbox = $_POST['checkbox'];}
  42.                 // kui massiivis $checkbox on vastav rida kirjutad INPUT kasti ja name paned kindla numbrigaa
  43.                 if(in_array($i, $checkbox)){echo '<input type="text" name="ed['.$i.']" value="'.$muutuja.'"/>';}
  44.                 // ilma check ita read tulevad tavatekstina
  45.                 else{echo $muutuja;}
  46.         }
  47.         else{
  48.         // esimene käivitus, kõik read tavatekstina
  49.         echo $muutuja;}
  50.        
  51.        
  52.        
  53. echo '</td>
  54.         <input type="hidden" name="muutuja[]" value="'.$muutuja.'"/>
  55.    <td align="right"><input type="checkbox" name="checkbox[]" value="'.$i.'" /></td>
  56.  
  57. </tr>
  58. ';
  59.  
  60. }
  61.  
  62. ?>
  63. </table>
  64.  
  65. <input type="submit" name="edit" value="Edit"/>
  66.  
  67. </form>
  68.  
  69.  

_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  Tabelist mitme väärtuse muutmine. Kasutades checkboxi, SQL ja PHP
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.