/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
At spole SQL array tilbage?
Fra : René Lønstrup


Dato : 19-02-03 17:11

Hejsa (igen),

Når jeg bruger følgende kode, starter den fra række 2 i array'et når
while-loop'et begynder. Hvorfor? Og hvordan får jeg den til at starte fra
starten?

<?
$strSQL = "SELECT * FROM MyTable ORDER BY id";
$result = mysql_query($strSQL);
$row = mysql_fetch_array($result);
echo $row["id"] . "<br><br>"; // udskriver "1"
while ($row = mysql_fetch_array($result)) {
echo $row["id"] . "<br>"; // starter fra "2"
}
?>

Som før skrevet, er jeg ret ny til PHP, så jeg aner ikke hvad jeg gør galt
:) - Men hvis det kan lette forklaringen så leder jeg efter samme
funktionalitet som følgende ASP-kode:

<%
Set objRS = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT * FROM MyTable ORDER BY id"
objRS.open strSQL,objConn
response.write objRS("id") & "<br><br>" ' udskriver "1"
Do until objRS.EOF
response.write objRS("id") & "<br>" ' starter fra "1" som den skal
objRS.MoveNext
Loop
%>

Resultatet skulle gerne se nogenlunde sådan ud:
---
1

1
2
3
osv...
---


--
René (AKA The Artist Currently Known As Rel7Star)
--- farende rundt i en 1985 Toyota MR2 1,6 16v ---
x===----> http://www.rel7star.dk <----===x
---::: For email: Do the math! :::---



 
 
Thomas Lindgaard (19-02-2003)
Kommentar
Fra : Thomas Lindgaard


Dato : 19-02-03 18:03

"René Lønstrup" <news@rel 6+1 star.dk> wrote in
news:3e53acc3$0$1758$ba624c82@nntp03.dk.telia.net:

> Når jeg bruger følgende kode, starter den fra række 2 i array'et når
> while-loop'et begynder. Hvorfor? Og hvordan får jeg den til at starte fra
> starten?

Fra PHP-emanuel (http://www.php.net/reset):
reset() rewinds array's internal pointer to the first element.

--
Hyggehej
/Thomas

René Lønstrup (19-02-2003)
Kommentar
Fra : René Lønstrup


Dato : 19-02-03 19:27

"Thomas Lindgaard" <thomas@it-snedkeren.BLACK_HOLE.dk> wrote in message
news:Xns9327B7AF0AA5Fthomasitsnedkerendk@62.243.74.162
> > Når jeg bruger følgende kode, starter den fra række 2 i array'et når
> > while-loop'et begynder. Hvorfor? Og hvordan får jeg den til at
> > starte fra starten?
>
> Fra PHP-emanuel (http://www.php.net/reset):
> reset() rewinds array's internal pointer to the first element.

Tak, men det dutter desværre ikke :-/ Den fortsætter ufortrødent fra 2 når
den går igang med while... loop'et..

Det ser sådan ud nu:
<?
$row = mysql_fetch_array($result);
echo $row["id"] . "<br><br>"; // udskriver "1"
reset($row);
while ($row = mysql_fetch_array($result)) {
echo $row["id"] . "<br>"; // starter stadig fra "2"
}
?>
Jeg har også prøvet at skrive
reset(mysql_fetch_array($result));

Men det fik den bare til at starte fra 3 istedet for (hvilket den også
gjorde ved at prøve prev() og next() )..

Jeg må lave et-eller-andet galt, men jeg kan bare ikke gennemskue det


--
René (AKA The Artist Currently Known As Rel7Star)
--- farende rundt i en 1985 Toyota MR2 1,6 16v ---
x===----> http://www.rel7star.dk <----===x
---::: For email: Do the math! :::---



Thomas Lindgaard (19-02-2003)
Kommentar
Fra : Thomas Lindgaard


Dato : 19-02-03 20:00

"René Lønstrup" <news@rel 6+1 star.dk> wrote in
news:3e53ccd2$0$1765$ba624c82@nntp03.dk.telia.net:

>> Fra PHP-emanuel (http://www.php.net/reset):
>> reset() rewinds array's internal pointer to the first element.
>
> Tak, men det dutter desværre ikke :-/ Den fortsætter ufortrødent fra
> 2 når den går igang med while... loop'et..

Bløh - jeg skal lige vågne...

Det er jo et database-resultat du skal bladre i, så det vil nok være bedre
med en database-funktion :)

if ( mysql_num_rows($result) )
{
    mysql_data_seek($result, 0);
}

mysql_data_seek() giver fejl ved tomme resultater - derfor if-sætningen.

--
Hyggehej
/Thomas

René Lønstrup (19-02-2003)
Kommentar
Fra : René Lønstrup


Dato : 19-02-03 20:08

"Thomas Lindgaard" <thomas@it-snedkeren.BLACK_HOLE.dk> wrote in message
news:Xns9327CB864C179thomasitsnedkerendk@62.243.74.162
> Bløh - jeg skal lige vågne...

Hehe, ja - det er jo stadig tidligt på dagen

> Det er jo et database-resultat du skal bladre i, så det vil nok være
> bedre med en database-funktion :)

Tydeligvis, - og så det virker endda :) - Tusind tak! (og godmorgen ;) )


--
René (AKA The Artist Currently Known As Rel7Star)
--- farende rundt i en 1985 Toyota MR2 1,6 16v ---
x===----> http://www.rel7star.dk <----===x
---::: For email: Do the math! :::---



Peter Brodersen (19-02-2003)
Kommentar
Fra : Peter Brodersen


Dato : 19-02-03 21:06

On 19 Feb 2003 17:03:27 GMT, Thomas Lindgaard
<thomas@it-snedkeren.BLACK_HOLE.dk> wrote:

>Fra PHP-emanuel (http://www.php.net/reset):
> reset() rewinds array's internal pointer to the first element.

Hvis det er mysql-datapointeren, man skal flytte, er mysql_data_seek()
sandsynligvis mere relevant. Fx: mysql_data_seek($result,0)

http://dk.php.net/manual/en/function.mysql-data-seek.php
mysql_data_seek() moves the internal row pointer of the MySQL result
associated with the specified result identifier to point to the
specified row number. The next call to mysql_fetch_row() would return
that row.

--
- Peter Brodersen

Mads Lie Jensen (19-02-2003)
Kommentar
Fra : Mads Lie Jensen


Dato : 19-02-03 23:24

On Wed, 19 Feb 2003 17:10:38 +0100, "René Lønstrup" <news@rel 6+1
star.dk> wrote:

>Hejsa (igen),
>
>Når jeg bruger følgende kode, starter den fra række 2 i array'et når
>while-loop'et begynder. Hvorfor? Og hvordan får jeg den til at starte fra
>starten?

Hvorfor:

> $strSQL = "SELECT * FROM MyTable ORDER BY id";
> $result = mysql_query($strSQL);
> $row = mysql_fetch_array($result);

Her henter du første række af database-resultatet.

> echo $row["id"] . "<br><br>"; // udskriver "1"

Udskriver det ...

> while ($row = mysql_fetch_array($result)) {

Henter næste række ...

> echo $row["id"] . "<br>"; // starter fra "2"

Udskriver den.



>Som før skrevet, er jeg ret ny til PHP, så jeg aner ikke hvad jeg gør galt
>:) - Men hvis det kan lette forklaringen så leder jeg efter samme
>funktionalitet som følgende ASP-kode:

Din asp-kode bruger et do-loop hvor den skriver resultatet først, så
henter næste række. Din php-kode gør det omvendt, henter resultatet
først, og så udskriver det.

Hvis du vil have din php-kode til at opføre sig som dit asp-eksempel så
brug noget ala:

<?
$strSQL = "SELECT * FROM MyTable ORDER BY id";
$result = mysql_query($strSQL);
$row = mysql_fetch_array($result);
echo $row["id"] . "<br><br>"; // udskriver "1"
do {
echo $row["id"] . "<br>"; // starter fra "2"
} while ($row = mysql_fetch_array($result))
?>


--
Mads Lie Jensen - mads@gartneriet.dk - ICQ #25478403
http://www.gartneriet.dk
Lær af andres fejl
- du lever alligevel ikke længe nok til selv at prøve dem alle.

Søg
Reklame
Statistik
Spørgsmål : 177519
Tips : 31968
Nyheder : 719565
Indlæg : 6408657
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste