Avatar billede peleiden Nybegynder
06. august 2005 - 12:48 Der er 9 kommentarer og
1 løsning

loop med streng som replacer sig selv

Hej

Jeg har et problem med at få en streng til at replace sig selv.
Strengen er noget htmlkode med nogle placeholders i:

$htmlString = "<div>__IMG01__</div><div>__IMG02__</div>";

Disse placeholders __IMG01__ og __IMG02__ skal replaces med nogle værdier fra et recordset.

$htmlString = "<div>__IMG01__</div><div>__IMG02__</div>";

$result_billederne = mysql_query("select * from tblbilleder");
while ( $row_billederne = mysql_fetch_array($result_billederne)){
$img = $row_billederne[1];
for($i=0;$i<$count($result_billederne);$i++){
  $str = str_replace("__IMG0".$i."__",$img,$htmlString);
}
}

problemet er at whileloopet kører igennem de antal gange som der er rækker og dermed får jeg $str ud flere gange.
Jeg vil gerne have den til kun at skrive $str ud én gang med værdierne i placeholderen?

Gør jeg det forkert eller kan man det?

Mvh.
Peleiden
Avatar billede nielle Nybegynder
06. august 2005 - 12:58 #1
Denne virker nok lidt bedre:

$result_billederne = mysql_query("select * from tblbilleder");

$htmlString = "<div>__IMG01__</div><div>__IMG02__</div>";
$str = $htmlString;

while ( $row_billederne = mysql_fetch_array($result_billederne))
{
    $img = $row_billederne[1];
    for ($i=0; $i<$count($result_billederne); $i++)
    {
        $str = str_replace("__IMG0" . $i . "__", $img, $str);
    }
}
Avatar billede peleiden Nybegynder
06. august 2005 - 13:47 #2
hmm det giver samme resultat... altså at begge PLACEHOLDERS ikke bliver replacet i samme streng
Avatar billede nielle Nybegynder
06. august 2005 - 13:57 #3
Hvordan ser din tabel ud? Hvor mange rækker er der i den? Hvordan ser de data ud som du trækker ud af den?
Avatar billede polle007 Nybegynder
06. august 2005 - 14:01 #4
giver det overhovedet mening, at lave en count på en ressource?

$count($result_billederne)
Avatar billede nielle Nybegynder
06. august 2005 - 14:24 #5
$htmlString = "<div>__IMG01__</div><div>__IMG02__</div>";
$str = $htmlString;

$result_billederne = mysql_query("select * from tblbilleder");
$i = 0;
while ($row_billederne = mysql_fetch_array($result_billederne))
{
    $i++;
    $img = $row_billederne[1];
    $str = str_replace("__IMG0" . $i . "__", $img, $str);
}
Avatar billede peleiden Nybegynder
07. august 2005 - 09:37 #6
Tak for svaret nielle, det var løsningen bortset fra at $i++ skal ned til sidst:
$htmlString = "<div>__IMG01__</div><div>__IMG02__</div>";
$str = $htmlString;

$result_billederne = mysql_query("select * from tblbilleder");
$i = 0;
while ($row_billederne = mysql_fetch_array($result_billederne))
{
    $img = $row_billederne[1];
    $str = str_replace("__IMG0" . $i . "__", $img, $str);
    $i++;
}

smid et svar og der er points
Avatar billede nielle Nybegynder
07. august 2005 - 09:40 #7
Jeg forstår ikke lige hvorfor at $i++ skal ned i bunden - du har jo ikke nogen placeholder som hedder __IMG00__

... og et svar :^)
Avatar billede peleiden Nybegynder
07. august 2005 - 12:54 #8
Nej men det har jeg nu også virker det.... før startede den med nul som jeg ikke havde før?

Men tak for hjælpen
Avatar billede nielle Nybegynder
10. august 2005 - 20:59 #9
Du mangler at scceptere svaret. :^)
Avatar billede nielle Nybegynder
10. august 2005 - 23:00 #10
Takker for point :^)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester