ugrás a tartalomhoz

Táblázat egymásmellé beszúrása és minden 4. után új sor (PHP)

kasza68 · 2010. Okt. 12. (K), 17.42
Sziasztok!
Abban kérném a segítségeteket hogy készítek egy oldalt amiben alkalmaznom kell egy olyat hogy adatbázisból kiolvasott értékek egymás mellé kerüljenek a táblázatok, de úgy hogy minden 5. már új sorba.
Addig megoldottam mindent hogy While ciklussal annyiszor lefuttatja ahány táblám van, de vagy nem egymás mellé rakja vagy egy sorba bezsúfolja az összes értéket.
Kérlek segítsetek mert fontos lenne és addig meg vagyok lőve.
Segítségeteket előre is köszönöm.
 
1

példakód

neogee · 2010. Okt. 12. (K), 17.52
Esetleg egy példakód, illetve egy kép arról amit látsz, és arról amit látni szeretnél az sokat segítene. :) Legalábbis én nem nagyon értem mit szeretnél, többek között azért sem, mert TÁBLÁZATOKAT nem szokás egymás mellé tenni.
2

Használj egy számlálót

kuka · 2010. Okt. 12. (K), 17.54
Használj egy számlálót amelyet a ciklus minden lefutásakor növelsz.
A számláló értékének 4-el való osztási maradékából meg tudod állapítani, hogy mikor kell új sort kezdeni.
3

Fogalmazd át, vagy rajzold le

Poetro · 2010. Okt. 12. (K), 18.00
alkalmaznom kell egy olyat hogy adatbázisból kiolvasott értékek egymás mellé kerüljenek a táblázatok, de úgy hogy minden 5. már új sorba.

Ez a mondat nem igazán tiszta. Próbáld meg újra fogalmazni, hátha sikerül összehozni egy értelmes magyar mondatot.

Mondjuk megvizsálhatod, hogy az illető sor osztható-e 4-gyel és ha igen, akkor beszúrsz egy új sort.
$x = 0;
$output = '';
while () {
  $x++;
  if (0 === ($x & 3)) {
    $output .= '<br />';
  }
  // ...
}
print $output;
4

Lol. Ügyes húzás az & a %

kuka · 2010. Okt. 12. (K), 18.09
Lol. Ügyes húzás az & a % helyett.
5

az :D

neogee · 2010. Okt. 12. (K), 18.14
Az... Én spec nem gondoltam volna rá... :D Az egyetlen gond, hogy valószinüleg a kérdezőnek halovány lövése nem lesz róla hogy miért pont bitenkénti ÉS művelet, és hogy mi is az a bitenkénti ÉS :D
6

Kérdezhetek?

tisch.david · 2010. Okt. 13. (Sze), 08.24
Szia Poetro!

1. Jól gondolom, hogy ez a while() így végtelen ciklus?
2. $x > 3 esetén ez miért működik jól, ha jól működik?

Köszi előre is!
Üdv:

Dávid
7

Nyilván kell a ciklus

neogee · 2010. Okt. 13. (Sze), 09.02
Nyilván kell a ciklus fejlécébe egy feltétel.

$resID = mysql_query('ide jön a lekérdezésed');

$x = 0;
while ( $row = mysql_fetch_assoc( $resID ) ) {   
  $output .= $row['mező neve'];
  if (0 === ($x & 3)) {
    $output .= '<br />';  
  }  
  $x++;
}
Az $x > 3 pedig hova kerül?
Ha az if feltételére gondolsz, akkor az a 2-es számrendszer miatt működik jól... :)
Egy kis példa:

4 = 100
3 = 011

011
100&
000=

8 = 1000
3 = 0011

0011
1000&
0000=
8

És valóban...

tisch.david · 2010. Okt. 13. (Sze), 10.27
Köszi! Benéztem valamit, azért nem jött ki nekem sehogy se.
9

Maszkolás vagy más néven bináris és

Poetro · 2010. Okt. 13. (Sze), 10.55
Ha olvastál volna a bináris és műveletről, akkor ilyet nem kérdeznél. Más szóval maszkolásnak hívják, ahol ugye a csak a második operandus képe maradhat meg az első operandusból. Azaz ahol a második operandus binárisan 1 csak ott marad meg az első operandusból 1. Mivel a 3 bináris képe 11 ezért az első argumentumból csak azok maradnak meg amit az 111 lefed.

 1000       1010       1101       1111       0101
&0011      &0011      &0011      &0011      &0011
===== vagy ===== vagy ===== vagy ===== vagy =====
 0000       0010       0001       0011       0001
Gondolom ebből már látszik, hogy a bináris és művelet eredményében ott lesz 1-es, amelyik helyértéken mind a két argumentum bináris ábrázolása 1-es. 3-nál nagyobb számok esetén a ha a második operandus 3 akkor az eredmény is legfeljebb 3 (bináris képe 11) lehet, ezért pont az utolsó legfeljebb 2 helyértéket hagyja meg.
11

Így van, de hűű:)))

neogee · 2010. Okt. 13. (Sze), 11.02
Hűű ez milyen bonyolult így... :D Így még sosem gondoltam rá... :D Definíción kivül azért picit egyszerűbb a dolog szerencsére... Ha nekem ebből kellett volna megtanulni mi az a maszkolás, mondjuk hálózatokból... hát lehet még most se tudnám:D Mindenesetre igaz :)
12

Neked is

tisch.david · 2010. Okt. 13. (Sze), 13.01
Neked is köszönöm a (ki)oktatást. ;)
Szép napot!
10

Összehasonlítottam az &

neogee · 2010. Okt. 13. (Sze), 10.58
Összehasonlítottam az & illetve a % műveleteket, és számomra elég meglepőd eredmény jött ki... :)

Az alábbi kódot használtam:

<?php

$size = 1000000;

$start = microtime(true);
$i = 0;
while ( $i < $size ) {
  $j = $i & 3;
  $i++;
}

print '& muvelet: '. (microtime(true) - $start);

print "\n";

$start = microtime(true);
$i = 0;
while ( $i < $size ) {
  $j = $i % 4;
  $i++;
}

print '% muvelet: '. (microtime(true) - $start);

?>
És az alábbi eredményt kaptam:
Kép az eredményről

Esetleg másképpen kellett volna tesztelni? :)
Én személy szerint arra számítottam hogy az & művelet sokkal gyorsabb lesz...
13

hmm

SamY · 2010. Okt. 22. (P), 16.28
Ez tenyleg meglepo, bar PHP-ban mar sok ilyen volt, pl:

echo isset($a) ? $a : "";
vs

echo @$a;
tippelj melyik a gyorsabb:)