undskyld mit dårlige engelsk:Her havde jeg svaret på dette spørgsmål Sådan viser du data fra databasen med dynamisk rækkevidde . Lad mig igen prøve at besvare dette spørgsmål. Først for at vi ikke skal arbejde på mysql-forespørgsel.
MySql Work:
I mysql-forespørgslen har du ikke spurgt efter ordre pr. Fordi i det virkelige liv, kan du ikke forvente, at efter alle toms optegnelser, vil regninger rekord være der. Tag for eksempel følgende indsættelse.
INSERT INTO test_work(ename, sal) VALUES("tom", 100), ("bill", 450), ("bill", 100), ("tom", 200), ("bill" ", 250), ("bill", 400), ("James", 50);SELECT * FROM test_work;
Resultat:
+-------+------+| navngive | sal |+-------+------+| tom | 100 || regning | 450 || regning | 100 || tom | 200 || regning | 250 || regning | 400 || James | 50 |+-------+------+
Så din mysql-forespørgsel skal være rækkefølge efter ename. Her også hver persons sal skal bestilles. Så vores forespørgsel:
VÆLG * FRA emp BESTIL VED ename, sal;
KODNING:
- Hele opgaven kan vi dele op i 3 dele.
- Mysql-datahentning og lagring i array.
- Beregning af rækkevidde
- Udskrivning
MySql Datafetching:
Under datahentning fra mysql-serveren bør vi altid prøve at bruge mysql_fetch_assoc-funktionen i stedet for mysql_fetch_array. Fordi mysql_fetch_assoc kun vil returnere ename og sal. Men mysql_fetch_array vil returnere array med indekser ename, sal, 0, 1.
# opret forbindelse til mysql-server # og vælg den database, som # vi vil arbejde på. $conn =mysql_connect('', 'rod', ''); $db =mysql_select_db('test'); # Forespørg dataene fra databasen. $query ='VÆLG * FRA test_work ORDER BY ename, sal'; $result =mysql_query($query); # Intialiser arrayet, som vil # gemme de hentede data. $sal =matrix(); $emp =array(); # Loop over alle de hentede data, og gem # data i array. while($row =mysql_fetch_assoc($result)) {array_push($emp, $row['ename']); array_push($sal, $row['sal']); }
Beregning af rækkevidde:
# Intialiser arrayet, som gemmer # rækkevidden for brugeren. $arr =matrix(); # loop over hele sal-arrayet for ($i =0; $i
når du vil print_r arr-arrayet vil outputtet være:
Array( [bill] => Array ( [rowspan] => 4 [printed] => no ) [James] => Array ( [rowspan] => 1 [printed] => no ) [tom ] => Array ( [rowspan] => 2 [printede] => nej ))
Udskrivning med rækkevidde:
echo " Ename Sal "; for($i=0; $i "; # Hvis denne række ikke udskrives, så udskriv. # og sæt den udskrevne værdi til "ja", så # næste gang den ikke udskrives. if ($arr[$empName]['printed'] =='no') { echo "".$empName." "; $arr[$empName]['printed'] ='ja'; } echo "".$sal[$i]." "; echo ""; } echo "
";
Kodeoptimering:
Nu kan vi kombinere rækkeviddeberegningen og mysql-datahentning. For under lagring af de hentede data i array kan vi beregne rækkevidden. Så vores sidste kode:
Ename Sal "; for($i=0; $i "; # Hvis denne række ikke udskrives, så udskriv. # og sæt den udskrevne værdi til "ja", så # næste gang den ikke udskrives. if ($arr[$empName]['printed'] =='no') { echo "".$empName." "; $arr[$empName]['printed'] ='ja'; } echo "".$sal[$i]." "; echo ""; } echo ""; ?>
Resultat: