[PHP] String replace in een $record var?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Peedy
  • Registratie: Februari 2002
  • Laatst online: 06-11-2024
Hey
ik gebruik dit scriptje om alle tekst-emoticons om te zetten naar plaatjes;

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php 
$code=array(":)",":p",";)","8)",":(",":|",":evil:",":cow:",":D",":o","%)",":O",":d",":P"); 
$imgs=array("[img]\"images/smilies/smile.gif\"[/img]", 
            "[img]\"images/smilies/tongue.gif\"[/img]", 
            "[img]\"images/smilies/wink.gif\"[/img]",
            "[img]\"images/smilies/cool.gif\"[/img]", 
            "[img]\"images/smilies/frown.gif\"[/img]",
            "[img]\"images/smilies/fright.gif\"[/img]", 
            "[img]\"images/smilies/evil.gif\"[/img]",
            "[img]\"images/smilies/moo.gif\"[/img]", 
            "[img]\"images/smilies/biggrin.gif\"[/img]",
            "[img]\"images/smilies/astonish.gif\"[/img]", 
            "[img]\"images/smilies/crazy.gif\"[/img]",
            "[img]\"images/smilies/astonish.gif\"[/img]", 
            "[img]\"images/smilies/biggrin.gif\"[/img]",
            "[img]\"images/smilies/tongue.gif\"[/img]"); 

$sql = "select * from hoofdpagina order by 'id' DESC";
$resultaat=mysql_query( $sql );
while ($record = mysql_fetch_object ( $resultaat ))
{
$message=str_replace($code,$imgs,$record->message);
}
?>


Werkt goed...als je 1 bericht heb.... de strings in $record->message worden namelijk vervangen, en het gedoe word dan opgeslagen als $message.
Als je dan 2 berichten hebt, krijg je in de output van $message dus 2x dezelfde tekst...
Hoe krijg ik het voor elkaar dat hij de strings in alle berichten vervangt en het dan opslaat in bijv. een array of een record?

Ik had in m'n uitprobeer-buien dit nog geprobeerd;
$record->message2=str_replace($code,$imgs,$record->message);
Maar dat werkte natuurlijk niet :+

[ Voor 21% gewijzigd door Peedy op 07-12-2003 19:50 ]


Acties:
  • 0 Henk 'm!

Verwijderd

edit:

Cristal moet is leren lezen :?


Gooi je results in een array... alles appart.. zoals in die post onder mij ;)

PHP:
1
2
3
4
for ($i = 0; $record = mysql_fetch_array ( $resultaat ); i++)
{
$message[i]=str_replace($code,$imgs,$record[i]);
}

[ Voor 156% gewijzigd door Verwijderd op 07-12-2003 20:03 ]


Acties:
  • 0 Henk 'm!

  • Tux
  • Registratie: Augustus 2001
  • Laatst online: 21:53

Tux

$message[$record->id] = str_replace ($code, $imgs, $record->message);

:?

The NS has launched a new space transportation service, using German trains which were upgraded into spaceships.


Acties:
  • 0 Henk 'm!

  • Peedy
  • Registratie: Februari 2002
  • Laatst online: 06-11-2024
Ja en hoe roep ik die $message[$record->id] dan aan in de output pagina?

Acties:
  • 0 Henk 'm!

  • Tux
  • Registratie: Augustus 2001
  • Laatst online: 21:53

Tux

pEeDy16 schreef op 07 december 2003 @ 20:01:
Ja en hoe roep ik die $message[$record->id] dan aan in de output pagina?
Je wilt het in een database opslaan?

PHP:
1
2
$message=str_replace($code,$imgs,$record->message);
mysql_query ("UPDATE hoofdpagina SET message='" . $message . "' WHERE id='" . $record->id . "'");

[ Voor 29% gewijzigd door Tux op 07-12-2003 20:05 ]

The NS has launched a new space transportation service, using German trains which were upgraded into spaceships.


Acties:
  • 0 Henk 'm!

Verwijderd

pEeDy16 schreef op 07 december 2003 @ 20:01:
Ja en hoe roep ik die $message[$record->id] dan aan in de output pagina?
PHP:
1
2
3
4
for($i = 0; $i < SizeOff($message); i++)
{
echo $message[$i];
}


Zo iets...

Acties:
  • 0 Henk 'm!

  • Peedy
  • Registratie: Februari 2002
  • Laatst online: 06-11-2024
Nee, ik wil het op een pagina zetten..
het gaat om nieuwsberichten op m'n index...

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Ik zou zoiets proberen:
PHP:
1
2
3
4
5
6
$res = mysql_query(...);
$messages = array();
while($record = mysql_fetch_record($res))
{
  $messages[] = array('messageid' => $record->messageid, 'messagetext' => str_replace(..., ..., $record->message);
}

Acties:
  • 0 Henk 'm!

  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07 12:07
offtopic:
ACM: is er een reden waarom je message als array definieert voor de loop? Nooit gedacht dat zo'n 'c' optimimalisaties ook moeten worden toegepast in PHP..

Acties:
  • 0 Henk 'm!

Verwijderd

hobbit_be schreef op 07 december 2003 @ 22:38:
offtopic:
ACM: is er een reden waarom je message als array definieert voor de loop? Nooit gedacht dat zo'n 'c' optimimalisaties ook moeten worden toegepast in PHP..
Zo kun je er later weer makkelijker door heen wandelen en alles op je scherm toveren B)

Acties:
  • 0 Henk 'm!

  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07 12:07
Verwijderd schreef op 07 december 2003 @ 22:55:
[...]
Zo kun je er later weer makkelijker door heen wandelen en alles op je scherm toveren B)
offtopic:
gek toch dat na 10jaar van programeren die out of scope er nog in zit ;). Nou ja met PHP weet je nooit he ;). Hopelijk heeft niemand de commnt gemrkt :)

Acties:
  • 0 Henk 'm!

Verwijderd

hobbit_be schreef op 07 december 2003 @ 23:07:
[...]
gek toch dat na 10jaar van programeren die out of scope er nog in zit ;). Nou ja met PHP weet je nooit he ;). Hopelijk heeft niemand de commnt gemrkt :)
Wahahha, ja je moet hem natuurlijk wel even global maken. Of even mooi in je class'je verwerven. Maar ik ging er van uit dat dat ook wel de verwachting was.
Verder denk ik dat hij er nu wel moet uitkomen! :9

edit:

Ook cristal hoopt dat deze over het hoofd word gezien :P

[ Voor 11% gewijzigd door Verwijderd op 07-12-2003 23:11 ]


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

hobbit_be schreef op 07 december 2003 @ 22:38:
offtopic:
ACM: is er een reden waarom je message als array definieert voor de loop? Nooit gedacht dat zo'n 'c' optimimalisaties ook moeten worden toegepast in PHP..
Ik vind het vele malen netter, de variabele duikt niet ineens pas in een while-loop op. (wat zeker met langere stukken code in de while de duidelijkheid verbetert)
Verder is er niet echt een reden voor, misschien dat php ooit de scopes wat strakker gaat afdwingen (je weet maar nooit waar ze ineens zin in hebben om te veranderen) en dan heb je je alvast voorbereid. ;)
Verwijderd schreef op 07 december 2003 @ 22:55:
Zo kun je er later weer makkelijker door heen wandelen en alles op je scherm toveren B)
Dat is dus niet het geval, de variabele die binnen de while wordt gedefinieerd is erna ook beschikbaar (ja, scopes zijn niet zo netjes in php :X ).
hobbit_be schreef op 07 december 2003 @ 23:07:
offtopic:
gek toch dat na 10jaar van programeren die out of scope er nog in zit ;). Nou ja met PHP weet je nooit he ;). Hopelijk heeft niemand de commnt gemrkt :)
In de wat "betere talen" is dat idd de reden, bij php niet, maar toch raad ik het aan omdat het gewoon netter is.
Verwijderd schreef op 07 december 2003 @ 23:10:
Wahahha, ja je moet hem natuurlijk wel even global maken.
Global maken? Liever niet, gewoon dit in een functie stoppen en de array retour geven, of desnoods alles inline, maar zelfs dan is het global maken niet nodig.
Global levert allerlei onduidelijkheden op die je beter zo veel mogelijk kan proberen te voorkomen...

[ Voor 3% gewijzigd door ACM op 08-12-2003 09:49 ]


Acties:
  • 0 Henk 'm!

  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07 12:07
offtopic:
ACM: ik VREESDE al dat die out-of-scope in feite geen probleem zou zijn in "infernal" php ;). Lijkt wel of elke andere versie van PHP effe de taal syntax gaat aanpakken. met name hun "reference" gedoe vind ik boertig (en werkt soms niet met hun "Super Globals"). Agh mocht ik maar weer verder doen met Java als serverside.
Pagina: 1