Vypsání výsledku js scriptu do buňek tabulky tvořené php scriptem – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Vypsání výsledku js scriptu do buňek tabulky tvořené php scriptem – PHP – Fórum – Programujte.comVypsání výsledku js scriptu do buňek tabulky tvořené php scriptem – PHP – Fórum – Programujte.com

 

noris
~ Anonymní uživatel
18 příspěvků
15. 2. 2014   #1
-
0
-

Ahoj,
mám js script, který vypíše název programu z databáze a přidá k němu checkbox, který když se zaškrtne přemístí to dotyčný název jinam.

Dále mám php script, který zajišťuje, že se tabulka vypíše jen s 9 sloupci, poté se vytvoří automaticky nový řádek a pokud je málo dat tak to do konce řádku vytvoří prázdné buňky.

Mám ale problém to propojit, zkoušel jsem to že jquery naloaduju do tabulky, pokoušel jsem se to i propojit přímov jednom souboru, ale vždy se m skončil s tím, že se nic nevypsalo :/

Tento script zajituje to přemisťování

<?php  
 echo " 
  <script> 
  var data = ["; 
    while($row = $query->fetch(PDO::FETCH_ASSOC)) 
    { 
  $name = $row['name']; 
  echo" {label: '$name'},"; 
  } 
  echo" 
  ]; 
  </script> 
  "; ?> 
<script> 
var obj = { 
a: document.getElementById('res'), 
b: document.getElementById('chosen') 
}; 
function check(chbox,obj,data) 
{ 
data[chbox.value*1].check = chbox.checked; 
write(obj,data); 
} 
function write(obj,data) 
{ 
var i,str,patt; 
patt = '<td><input type=checkbox value="%1" onchange="check(this,obj,data)"%3> %2</td>'; 
str  = {a:'',b:''}; 
for (i=0;i<data.length;i++) 
{ 
if (!(data[i].check)) 
     {str.a+=patt.replace("%1",i).replace("%2",data[i].label).replace("%3",'');} 
else {str.b+=patt.replace("%1",i).replace("%2",data[i].label).replace("%3",' checked="checked"');} 
} 
obj.a.innerHTML = str.a; 
obj.b.innerHTML = str.b; 
} 
write(obj,data);  
</script>

A tento se stará o tabulku

<table class="list"> 
<tr> 
<?php 
include "database.php";   
$category = "programs"; 
$query = $pdo->query("SELECT name FROM $category"); 

define ("COLS", 9);  // počet sloupců 
  
for ($i = 0; $row = $query->fetch(PDO::FETCH_ASSOC); $i++) 
{ 
$name = $row['name']; 
$id = $row['id']; 
  if ($i % COLS == 0) echo "<tr>"; 
  echo '<td> ZDE VYPSAT NÁZEV S CHECKBOXEM A ID PROGRAMU</td>'; 
  if ($i % COLS == COLS - 1) echo "</tr>\n"; 
} 
if ($i % COLS != 0) 
{ 
  while ($i++ % COLS != 0) 
  { 
    echo "<td>&nbsp;</td>"; 
  } 
  echo "</tr>\n"; 
} 
?> 
</tr> 
</table>
Nahlásit jako SPAM
IP: 94.113.72.–
Ericsko+3
Stálý člen
15. 2. 2014   #2
-
0
-

Uff, to su riadne masakre.

Doporucujem to precistit a hlavne oddelit html od php a od js.

Hned ako to budes mat prehladnejsie, snad aj sam zistis, kde je problem.

Takto mas zarobene na pruser zakazdym, ked sa snazis nieco do toho pridat.

Nahlásit jako SPAM
IP: 88.212.34.–
noris0
Newbie
16. 2. 2014   #3
-
0
-

Tak jsem nakonec rozhodl, že se pokusím o jednoduší verzi a to že se přesunou až po kliknutí na odkaz.
Vše funguje až do té doby, kdy to dám do tabulky, z té se to nepřesune a netuším proč :/

<script type="text/javascript" src="./jquery-1.10.2.js"></script>
<?php 
include "database.php";   
$category = "programs"; 
$query = $pdo->query("SELECT name,id FROM $category");
?>
<table>
<tr>
<div id="select1">
<?php
while($row = $query->fetch(PDO::FETCH_ASSOC)) 
{ 
  $name = $row['name'];
  $id = $row['id']; 
  echo"<label><td><input type=\"checkbox\" name=\"CheckboxGroup1\" value=\"checkbox\" id=\"CheckboxGroup1_$id\" />$name</td></label>"; 
}
?> 
</div>
</tr>
</table>
<div id="select2">

</div>

<a href="#" id="add">add</a>
<a href="#" id="remove">remove</a>

<script>
$('#add').click(function() {
    return !$('#select1 label :checked').closest('label').appendTo('#select2');
    
});
$('#remove').click(function() {
    return !$('#select2 label :checked').closest('label').appendTo('#select1');
});
</script>

Toto řešení (kliknutím) se mi koneckonců i více líbí, u pomalejších počítačů by neustále přepočítávání atd. na pozadí mohlo lagovat. Každopádně netuším proč to má problém přesunout to z tabulky :/

Nahlásit jako SPAM
IP: 89.103.6.–
Ericsko+3
Stálý člen
16. 2. 2014   #4
-
+1
-
Zajímavé

#3 noris
Zalozil si vlakno v PHP fore, v Javascript fore a problem mas nakoniec v HTML ;)

Nahlásit jako SPAM
IP: 88.212.34.–
noris0
Newbie
16. 2. 2014   #5
-
0
-

#4 Ericsko
Ano, máte pravdu, opravdu byla chyba v html. Po opravě sjiž funguje přesunutí do divu 2, ale zpět bohužel ne.
Ještě mě napadá, jde nějak ošetřit aby se to vracelo  na původní místo, odkud to zmizelo?

Aktuální kód:

<script type="text/javascript" src="./jquery-1.10.2.js"></script>
<?php 
include "database.php";   
$category = "programs"; 
$query = $pdo->query("SELECT name,id FROM $category");
?>
<div id="select1">
<table>
<tr>
<?php
define ("COLS", 9);  // počet sloupců 
  
for ($i = 0; $row = $query->fetch(PDO::FETCH_ASSOC); $i++) 
{ 
$name = $row['name']; 
$id = $row['id']; 
  if ($i % COLS == 0) echo "<tr>"; 
  echo "<td><label><input type=\"checkbox\" name=\"CheckboxGroup1\" value=\"checkbox\" id=\"CheckboxGroup1_$id\" />$name</label></td>"; 
  if ($i % COLS == COLS - 1) echo "</tr>\n"; 
} 
if ($i % COLS != 0) 
{ 
  while ($i++ % COLS != 0) 
  { 
    echo "<td>&nbsp;</td>"; 
  } 
  echo "</tr>\n";
} 
?> 
</tr>
</table>
</div>
<div id="select2">

</div>

<a href="#" id="add">add</a>
<a href="#" id="remove">remove</a>

<script>
$('#add').click(function() {
    return !$('#select1 td :checked').closest('td').appendTo('#select2');
    
});
$('#remove').click(function() {
    return !$('#select2 td :checked').closest('td').appendTo('#select1');
});
</script>
Nahlásit jako SPAM
IP: 89.103.6.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 10 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý