Avatar
Martin Korytář:16.9.2015 20:26

zdravim, potreboval bych poradit. Mam vypis z databaze vytisknuty pomoci printf do tabulky a chtel bych jednotlive radky na onclick podbarvit jednou barvou na ondblclick druhou. K tomu jsem si vytvoril javascript ktery funguje na normalni tabulku v html. V cem je problem? a jak by se to dalo vyresit?idealne abych me vse v jednom souboru(html/php) diky za odpoved

tady je zdrojak

<script type="text/ja­vascript">

window.onload=fun­ction(){
var tfrow = document.getE­lementById('con­firm').rows.len­gth;
var tbRow=[];
for (var i=1;i<tfrow;i++) {
tbRow[i]=docu­ment.getElemen­tById('confir­m').rows[i];
tbRow[i].ondblclick = function(){
this.style.bac­kgroundColor = 'pink';
};
tbRow[i].onclick = function() {
this.style.bac­kgroundColor = '#90ee90';
};
}
};
</script>

<?php
$db = mysql_connect($ser­vername, $username, $password, $dbname);
if (!$db) {
die("Connection failed: " . mysql_connect_e­rror());
}
mysql_select_db("dbna­me",$db);
$result = mysql_query("SELECT * FROM mydb_book",$db);
$radku = mysql_num_row­s($result);

for($i=0;$i<$­radku;$i++)
{
printf("<table id='confirm' class='tab2'><tr­>\n");
printf("<td> %s</td>\n", mysql_result($re­sult,$i,"id"));
printf("<td> %s</td>\n", mysql_result($re­sult,$i,"datum"));
printf("<td> %s</td>\n", mysql_result($re­sult,$i,"nazev"));
printf("<td> %s</td>\n", mysql_result($re­sult,$i,"autor"));
printf("<td> %s</td>\n", mysql_result($re­sult,$i,"text"));
printf("</table>
\n");
}
mysql_close($db);
?>

 
Odpovědět 16.9.2015 20:26
Avatar
IT Man
Redaktor
Avatar
Odpovídá na Martin Korytář
IT Man:16.9.2015 20:39

Ahoj, pro vložení kódu je zde tlačítko code. Bez něj se to nedá luštit. :)

Nahoru Odpovědět 16.9.2015 20:39
Usmívej se, zítra už tvůj kód nemusí fungovat!
Avatar
Odpovídá na Martin Korytář
Martin Konečný (pavelco1998):16.9.2015 21:17

a když to JS hodíš až za PHP?
nee asi jsem napsal blbost, nevšiml jsem si události window.onload(), sorry

Editováno 16.9.2015 21:17
Nahoru Odpovědět 16.9.2015 21:17
Go hard or go home!
Avatar
TomasGlawaty
Člen
Avatar
Odpovídá na Martin Korytář
TomasGlawaty:16.9.2015 21:40

ten kód se nadá rozluštit .... ale pokud jsi to udělal u normální html tabulky, tak v čem je problém u tabulky echované z PHP ?

Nahoru Odpovědět 16.9.2015 21:40
Člověk může dosáhnout čeho si zamane. Jen musí chtít, případně něco obětovat ...
Avatar
Odpovídá na Martin Korytář
Martin Korytář:17.9.2015 9:53

sorry, tady je vypis uz pomoci "code" davam tady jen kod pouziteho java scriptu a php vypisu z databaze, ostatni html je zbytecne, diky moc

<script type="text/javascript">

window.onload=function(){
var tfrow = document.getElementById('confirm').rows.length;
var tbRow=[];
for (var i=1;i<tfrow;i++) {
tbRow[i]=document.getElementById('confirm').rows[i];
tbRow[i].ondblclick = function(){
this.style.backgroundColor = 'pink';
};
tbRow[i].onclick = function() {
this.style.backgroundColor = '#90ee90';
};
}
};
</script>

<?php
$db = mysql_connect($servername, $username, $password, $dbname);
if (!$db) {
die("Connection failed: " . mysql_connect_error());
}
mysql_select_db("dbname",$db);
$result = mysql_query("SELECT * FROM mydb_book",$db);
$radku = mysql_num_rows($result);

for($i=0;$i<$radku;$i++)
{
printf("<table id='confirm' class='tab2'><tr>\n");
printf("<td> %s</td>\n", mysql_result($result,$i,"id"));
printf("<td> %s</td>\n", mysql_result($result,$i,"datum"));
printf("<td> %s</td>\n", mysql_result($result,$i,"nazev"));
printf("<td> %s</td>\n", mysql_result($result,$i,"autor"));
printf("<td> %s</td>\n", mysql_result($result,$i,"text"));
printf("</table>
\n");
}
mysql_close($db);
?>
 
Nahoru Odpovědět 17.9.2015 9:53
Avatar
Honza Bittner
Redaktor
Avatar
Odpovídá na Martin Korytář
Honza Bittner:17.9.2015 11:10

Koukni se do DOM v chromu či tak, jestli tam ta tabulka opravdu je tak, jak má být.

Nahoru Odpovědět 17.9.2015 11:10
Student FIT ČVUT. Followuj mě na https://twitter.com/tenhobi a ptej se na https://github.com/HoBi/ama.
Avatar
TomasGlawaty
Člen
Avatar
Odpovídá na Martin Korytář
TomasGlawaty:17.9.2015 15:35

Tak já vidím třeba chybu ve výpisu tabulky.
Když ti databáze vrátí třeba 3 záznamy, tak ti ten cyklus podle mě vyhodí toto:

<table id='confirm' class='tab2'>
        <tr>
                <td>id</td>
                <td>datum</td>
                <td>nazev</td>
                <td>autor</td>
                <td>text</td>
        </tr>
</table>

<table id='confirm' class='tab2'>
        <tr>
                <td>id</td>
                <td>datum</td>
                <td>nazev</td>
                <td>autor</td>
                <td>text</td>
        </tr>
</table>

<table id='confirm' class='tab2'>
        <tr>
                <td>id</td>
                <td>datum</td>
                <td>nazev</td>
                <td>autor</td>
                <td>text</td>
        </tr>
</table>

což je špatně ... zřejmě by to asi mělo být jen v jedné tabulce, ne ? :) tímpádem máš na stránce duplicitní IDčka a JS na tom spadne, protože nemůže být více stejných id na stránce.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět 17.9.2015 15:35
Člověk může dosáhnout čeho si zamane. Jen musí chtít, případně něco obětovat ...
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.