Avatar
Martin Korytář:

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:

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
Když nevíš jak dál, podá ti ruku někdo, od koho by jsi to nečekal. A tu šanci musíš přijmout!
Avatar
Odpovídá na Martin Korytář
Martin Konečný (pavelco1998):

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
Avatar
TomasGlawaty
Člen
Avatar
Odpovídá na Martin Korytář
TomasGlawaty:

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ář:

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:

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
Ptejte se mě na cokoli na https://github.com/HoBi/ama a followujte mě na Twitteru https://twitter.com/tenhobi. :-)
Avatar
TomasGlawaty
Člen
Avatar
Odpovídá na Martin Korytář
TomasGlawaty:

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.