1 (edited by addinol 2012-04-20 17:53:50)

Topic: php lentelė (padėkit sudaryt)

Sveiki, taigi reikia sudaryti lentelę su gautais duomenimis iš MySQL.

Lentelė turėtų būti tokia jog vienam dalykui atitektų 2 langeliai (viršutinis ir apatinis) ir kas 4 dalykus persikeltų į kitą eilutę.

http://i.imgur.com/TLNDT.png

<table width="600" border="1" class="table">
  <tr>
    <td width="150" height="150">1</td>
    <td>2</td>
    <td>3</td>
    <td>4</td>
  </tr>
  <tr>
    <td width="150">a</td>
    <td width="150">b</td>
    <td width="150">c</td>
    <td width="150">d</td>
  </tr>
  <tr>
    <td width="150" height="150">5</td>
    <td>6</td>
    <td>7</td>
    <td>8</td>
  </tr>
  <tr>
    <td width="150">e</td>
    <td width="150">f</td>
    <td width="150">g</td>
    <td width="150">h</td>
  </tr>
</table>

Taip atrodytų be php, bet kaip padaryti su php jog automatiškai įterptų informaciją iš MySQL, ir būtų tiek langelių kiek reikia.

MySQL Lentelė atrodo taip:

KAžKAS---KAžKAS
---1----------a------
---2----------b------
---3----------c------
..

Re: php lentelė (padėkit sudaryt)

O jeigu duomenys būtų imami ne iš DB, o tiesiog iš masyvo, būtų aiškiau?

Klausiu, nes nelabai aišku kurioje vietoje kažkas nesigauna, nes čia pakankamai elementaru: trauki duomenis iš DB ir su PHP generuoji HTML lentelę. Aišku reikalingi pora papildomų kintamųjų laikyti atmintyje tarpiniams duomenims (dėl perkėlimo į kitą eilutę ar dviejų eilučių vienu metu formavimo), bet vistiek viskas yra pakankamai elementaru.

Re: php lentelė (padėkit sudaryt)

Man iš HTML/php pusės neaišku kaip sudaryti lentelę, jog automatiškai ji būtų tokia kokios noriu. Tiesiog galbūt logikos čia labiau reikia, o ne žinių.

Gali lentelė būti ir be tų raidžių (a, b..) tiesiog kur skaičiai, jog 4 tokie kvadrateliai per vieną eilutę, tada kiton eilutėn keltūsi. ir man reikia php kodo tokios lentelės, nes nepasidarau su php.

4 (edited by md5 2012-04-22 17:34:56)

Re: php lentelė (padėkit sudaryt)

$cells = range(1,25); #25 kvadratai
$width = 4; #celiu per x ašį

patikrinimui ar reikia perkelti į kitą eilutę gali panaudoti is_int($i/4); - jeigu lyginis

pradžiai pasidaryk generavimą vieną kvadratėlį...  Kai neparodai kodo, sunku pasakyti kas tau nesigauna.
O generuoti reikia tik tą dalį, kur kinta tagai. Gal dabar aiškiau ?

Kiek maigyklių sudėvėjai ?

Re: php lentelė (padėkit sudaryt)

<table width="600" border="1" class="table">
        <tr>
                <?php
                $result = mysql_query("SELECT * FROM lentele");
                ?>
                <?php while($row = mysql_fetch_array($result)): ?>
                <td>
                        <font size="2"><?php echo $row['url'];?>(<?php echo $row['domain'];?>)</font><br /><a href="<?php echo $row['link']; ?>"><img src="<?php echo $row['image'];?>" height="150" width="150" /></a><br /><font size="-3"><?php echo $row['added'];?></font>
                </td>
        <?php endwhile; ?>
    </tr>
</table>

Na štai tiek pasidariau, o kaip padaryti jog kas 4 langelius keltų į kitą eilutę.

Re: php lentelė (padėkit sudaryt)

'Keltu i kita eilute' reiskia kad turi buti sukurta nauja eilute (<tr>tag'as) ir nustatyti kas kelinta cele (<td>tag'as) ta nauja eilute sugeneruoti.

Vadinasi tau reikia kad tiek td tiek tr tag'ai butu generuojami viduje ciklo. Ir pagalvok kokie aritmetiniai veiksmai gali suskaiciuoti 'kas ketvirta td, iterpti tr'. minde dave pora matematiniu uzuominu.

Re: php lentelė (padėkit sudaryt)

Neišeina vistiek pasidaryt.

Re: php lentelė (padėkit sudaryt)

tai rodyk pvz kaip darai, nes čia nepasiteisinimas.

Kiek maigyklių sudėvėjai ?

9 (edited by addinol 2012-04-24 17:34:11)

Re: php lentelė (padėkit sudaryt)

<?php
    $result = mysql_query("SELECT * FROM table");
    $nr = 0;
    while($row = mysql_fetch_array($result)):
        if($nr % 4 == 0){
            echo "<tr>";
        }
        echo "<td>";
?>
        <a href="<?php echo $row['url']; ?>">###</a>
<?php
        echo "</td>";
        if($nr % 4 == 0){
            echo "</tr>";
        }
        $nr++;
    endwhile;
?>

Lentelės išdėstymas vistiek netoks kokio noriu.

Re: php lentelė (padėkit sudaryt)

idek dar daugiau kodo, iskaitant html

Re: php lentelė (padėkit sudaryt)

<?php
    $hostname = "localhost";
    $db_user = "root";
    $db_password = "";
    $database = "db";
    
    
    $db = mysql_connect($hostname, $db_user, $db_password); 
    mysql_select_db($database,$db); 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<table width="600" border="1">
<?php
    $result = mysql_query("SELECT * FROM table");
    $nr = 0;
    while($row = mysql_fetch_array($result)):
        if($nr % 4 == 0){
            echo "<tr>";
        }
        echo "<td>";
?>
        <a href="<?php echo $row['url']; ?>">###</a>
<?php
        echo "</td>";
        if($nr % 4 == 0){
            echo "</tr>";
        }
        $nr++;
    endwhile;
?>
</table>
</body>
</html>

12 (edited by aivaras37 2012-04-24 18:32:08)

Re: php lentelė (padėkit sudaryt)

o paziurek i sugeneruoto kodo source, lenteles struktura tokia kokios nori? Greiciausiai bus neuzbaigtu </tr> ir pries juos atidaryti <tr>

o siaip jei zinai puslapio ploti ir kiek vietos uzims tie 4 irasai, tai gali nedaryt lenteles o su paprastais div'ais sudeliot

Re: php lentelė (padėkit sudaryt)

Na jo sugeneruoto puslapio kodas nelabai koks. Bet nežinau kaip jį pataisyti dabar, kažkaip neįmatau klaidos.

<table width="600" border="1">

<tr><td>        <a href="aa">###</a>

</td></tr><td>        <a href="aa">###</a>

</td><td>        <a href="aa">###</a>

</td><td>        <a href="aa">###</a>

</td></table>

Re: php lentelė (padėkit sudaryt)

addinol wrote:

Lentelės išdėstymas vistiek netoks kokio noriu.

Tavo kodas dabar formuoja įrašus iš eilės. O tau reikia, kad iš karto formuotu po dvi eilutes. Tu negali į ekraną išvedinėti kiekvienos celės duomenų su echo, nes išvedus pirmos eilutės, pirmos celės duomenis, tu niekur neužsisaugai tai, ką "ateityje" turėsi išvesi antroje eilutėje.

Rekomenduočiau cikle, turėti du kintamuosius, kuriuose kauptum eilučių poros duomenis, ir tik kas 4 ciklo žingsnius jas "uždarius" išvesti į ekraną.

Re: php lentelė (padėkit sudaryt)

Ta prasme 2 kintamuosius ? kam ? Ar galėtum pavizdinį kodą parodyti kaip turėtų atrodyti ? nes man su tais ciklais tai bum bum..

16 (edited by aivaras37 2012-04-24 19:09:30)

Re: php lentelė (padėkit sudaryt)

minde tai tegu jis <br/> daro, kam antra eilute del paprastu duomenu isvest ir ciklas paprastesnis bus.

addinol gali taip daryti

$results = array();
while($row = mysql_fetch_array(...)) {
$results[] = $row;
}

$cells = 4;
$records = count($results);
$table = array_chunk($records, $cells);

print_r($table); //beveik tavo lentele, tik pasidaryk html'a.

Re: php lentelė (padėkit sudaryt)

aivaras37 wrote:

minde tai tegu jis <br/> daro, kam antra eilute del paprastu duomenu isvest ir ciklas paprastesnis bus.

Prie ko čia aš, ne aš galvoju sąlygas ir ne aš sprendžiu, kaip turi būt (-; aš tik patariu, kaip galbūt galimą išspręsti. Ir nieko čia sudėtingo tikrai nėra.

Re: php lentelė (padėkit sudaryt)

addinol wrote:

Ta prasme 2 kintamuosius ? kam ? Ar galėtum pavizdinį kodą parodyti kaip turėtų atrodyti ? nes man su tais ciklais tai bum bum..

Du kintamieji reikalingi tam, kad juose galėtum kauipti iš karto dviejų HTML lentelės eilučių tekstą, juos išvestum ir išvalytum, tik kas 4 ciklo iteracijas. Taip galėtum pasiekti tai, ko tau reikia. Kodo nerašysiu, nes man tikrai neįdomu jį rašyt (-;