[php/mysql] Replace probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een nieuwssysteem waarmee ik makkelijk nieuws kan toevoegen, en als ik bijvoorbeeld in het nieuwsbericht zet "[a]http://tweakers.net[aa]Tweakers[/a]" dan maaktie via "eregi_replace" dit van :

"<a href="http://tweakers.net" target="_blank">Tweakers</a>"

Zo komt het dan in me MySQL database. Maar nu ben ik met een edit script bezig en die werkt als volgt. (dit is een gedeelte van de code)

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?
include("data/config.php"); 

mysql_connect("$host","$user","$pass");
mysql_select_db("$db");

$del = "SELECT * FROM nieuws WHERE id = '$id'";
$query = mysql_query($del);

while ($list = mysql_fetch_object($query)) {
echo "<p><form method=post>";
echo "Subject : <br><input type=\"text\" name=\"onderwerp\" value=\"$list->onderwerp\"><br>\n";
echo "Body: <br><textarea name=\"bericht\" cols=\"45\" rows=\"10\">$list->bericht</textarea><br>\n";
echo "<input type=\"hidden\" name=\"action\" value=\"\">\n";
echo "<input type=\"submit\" value=\"Submit\">\n";
echo "<input type=\"reset\" value=\"Reset\">\n";
echo "</form></p>";
}
?>


Ik krijg dan een textarea met daarin de inhoud van het bericht. Werkt opzich mooi, alleen een link verschijnt daarin in deze vorm:

"<a href="http://tweakers.net" target="_blank">Tweakers</a>"

En als ik dan het bericht opnieuw invoeg dan gaat MySQL moeilijk doen over die haakjes ">" "<" enzo.

Dus wat ik wil is dat links e.d. weer omgezet worden naar deze vorm:

"[a]http://tweakers.net[aa]Tweakers[/a]"

Nou krijg ik het wel voor elkaar om het bericht aan te roepen en alles wat gereplaced moet worden te replacen en dan het bericht te laten verschijnen via:

echo "$bericht";

Maar via die manier kan ik de tekst weer niet in een tekst area doen, want dit :

echo "Body: <br><textarea name=\"bericht\" cols=\"45\" rows=\"10\">echo $bericht</textarea><br>\n";

vind php niet zo leuk.

Dus om een lang verhaal kort te maken. Ik wil tekst laden uit een database dan dingen replacen en dan in een tekstarea plaatsen.

Iemand ervaring daarmee?

b.v.d.

Acties:
  • 0 Henk 'm!

  • Suepahfly
  • Registratie: Juni 2001
  • Laatst online: 17-09 17:05
Als je nu [a]...[/a] gewoon opslaat in je DB, en replaced zodra je script opgevraagt word, is toch veel makkelijker.

PHP:
1
2
3
4
5
6
7
$query = mysql_query("SELECT * FROM tabel") or die(mysql_error()); 

while ($list = mysql_fetch_object($query)) { 
   $list->onderwerp = eregi_replace(".....",$list_onderwerp);

   echo $list->onderwerp;
}


Zoiets dus.

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Ten eerste is het natuurlijk niet zo slim om je berichten geparsed op te slaan, het is veel handiger om gewoon de ongeparsede versie te bewaren; eventueel kan je daarnaast ook een geparsede versie opslaan opdat je niet bij elke view alle berichten nog moet parsen, maar deze manier van werken is wel erg omslachtig en weinig flexibel.
wb het wegschrijven naar je textarea: zorg altijd dat je er htmlentities of htmlspecialchars overheen haalt.

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Noujah volgens mij is het veel omslachtiger om iedere berichtje steeds te moeten parsen, dan dat je het in 1 keer goed in de data base zet.

Maar ik hoef alleen maar te weten hoe je de tekst kan veranderen alvorens het in een textarea verschijnt. Dat lukt me niet omdat ik het $list->bericht commando moet gebruiken. Als ik met echo $bericht het bericht in de tekstarea kan laten verschijnen dan zou het wel lukken...

Acties:
  • 0 Henk 'm!

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 17-09 20:52

ripexx

bibs

Als het goed begrepen heb wordt er hier bij parse/react (got) een ongeparsed en geparsed versie opgeslagen, ik weet niet hoe het op de FP zit. Verder werken al dit soort systemen alleen met ongeparsed versie, oa van wege jouw probleem. ;)

Daarnaast kun je voordat de output wordt gegenereed je string toch terug converteren. :?

buit is binnen sukkel


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ripexx schreef op 17 mei 2003 @ 19:12:
Daarnaast kun je voordat de output wordt gegenereed je string toch terug converteren. :?
Dat krijg ik dus niet voor elkaar.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?
include("data/config.php"); 

mysql_connect("$host","$user","$pass"); 
mysql_select_db("$db"); 

$select="SELECT * FROM nieuws ORDER BY id DESC limit 10";
$query = mysql_query($select); 

while ($list = mysql_fetch_object($query)) { 
echo "<div id=\"titel\">
    <table width=\"96%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
      <tr>
            <td>
          <div id=\"tit2\" align=\"left\">$list->onderwerp</div>
            </td>
            <td>
          <div id=\"tit2\" align=\"right\">$list->datum [<a href=del.php?action=rmove&id=$list->id onmouseover=\"moveover('Delete Post : $list->onderwerp'); return true\" onmouseout=\"moveout('Midian\'s Headquarter')\">D</a>|<a href=update.php?action=edit&id=$list->id onmouseover=\"moveover('Edit Post : $list->onderwerp'); return true\" onmouseout=\"moveout('Midian\'s Headquarter')\">E</a>]</div>
            </td>
      </tr>
    </table>
      </div>\n";
echo "<p>$list->bericht</p>\n\n"; 
} 

?>


Dit is het script dat de nieuwsitems laat zien, maar hoe en waar moet ik dan die ereg_replace strings toepassen??

Dit is bevoorbeeld 1 van die strings :

$bericht = ereg_replace("\:\)", "[img]images/happy.gif[/img] ", $bericht);

Hoe kan ik dat erin verwerken?

Acties:
  • 0 Henk 'm!

  • Expander
  • Registratie: Februari 2001
  • Niet online
echo "Body: <br><textarea name=\"bericht\" cols=\"45\" rows=\"10\">echo $bericht</textarea><br>\n";

Hmm.. dat is niet echt de manier waarop het gaat werken inderdaad. Echo simpelweg eerst die tekst, dan $bericht en dan de rest van de tekst.

Expanding the inexpandable


Acties:
  • 0 Henk 'm!

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 17-09 20:52

ripexx

bibs

Maar jij wil direct vanuit mysql het in een echo stoppen, je zal eerste de variabelen moeten defineren en dan de parse functie er over heen gooien. Download eens een versie van PHPBB, dan kan je eens zien hoe zij het doen. Het gaan vooral om de manier van parsen, ook kan je eens zoeken op UBB, tags en PHP binnen P&W. ;)

buit is binnen sukkel


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

ik zie het probleem niet zo hoor:

PHP:
1
2
3
4
5
$bericht = $list->bericht;

$bericht = str_replace(':)', '[img]"images/happy.gif"[/img]', $bericht);

echo $bericht;


:?

Intentionally left blank

Pagina: 1