[PHP] Txt vervange door smileys functie werkt niet

Pagina: 1
Acties:
  • 74 views sinds 30-01-2008

  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
Ik heb in mijn database een table aangemaakt genaamd "db_smiley" met daarin 2 fields respectievelijk
"url" en "code". Waarbij de url de plaats is waar de smileys staan. En code de text is die ingetypt moet worden om een bepaalde smiley te krijgen.

Nu heb ik een php gemaakt, genaamd include.php, met daarin de volgende functie:
[php]<?function postify($message) { # Text vervange door smileys in database $db_smiley = $GLOBALS['db_smiley']; $query = mysql_query("SELECT * FROM $db_smiley") or die(mysql_error()); while($smiley = mysql_fetch_array($query)) { $message = str_replace("$smiley
code:
1
", "[img]\"./icons/$smiley[url]\"[/img]", $message);    }    $message = eregi_replace("\\[img\]([^\\\[]*)\\[/img\]", "[img]\"\\1\"[/img]", $message);    $message = eregi_replace("\\[url\]([^\\\[]*)\\[/url\]", "<a href=\"\\1\">\\1</a>", $message);    return $message;}?>

Nu heb ik ook een php file, genaamd functions.php, waarin onder andere het viewen van de bestaande post in voor komt. Wat dus de bedoeling is dat als de post weergegeven moeten worden hij deze uit de db haalt, vervolgens de strings die dat nodig hebben omzet en vervolgens weergeeft. Hier heb ik de code:
PHP:
1
<?$post_query = mysql_query("SELECT * FROM posts WHERE (TopicID='$topicID') ORDER BY TimeStamp");    while ($post = mysql_fetch_array($post_query))    $post[message] = postify($post[message]);    {    <TR>    <TD WIDTH=82% BGCOLOR="#F7FFCE" HEIGHT=28 VALIGN=TOP>        <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=5 WIDTH=100%>            <TR>                <TD>                <P><FONT SIZE="2" FACE="Tahoma,Trebuchet MS,Arial,Helvetica"><?php echo $post['Post'] ?></FONT>                 </TD>            </TR>        </TABLE>    </TD>    <TD WIDTH=18% BGCOLOR="#E7F784" VALIGN=TOP>        <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=5 WIDTH=100% >            <TR>                <TD>                <P ALIGN=center><FONT SIZE="2" FACE="Tahoma,Trebuchet MS,Arial,Helvetica" color=#000000>Gepost door: <A HREF="mailto:<?php echo $post['Email'] ?>"> <FONT COLOR=#000000><?php echo $post['Name'] ?></A>                <BR><BR>                <A HREF="edit-post.php?postID=<?php echo $post['ID'] ?>">[img]"icons/edit.gif"[/img]</a>&amp;nbsp                <A HREF="delete-post.php?postID=<?php echo $post['ID'] ?>">[img]"icons/delete.gif"[/img]</a>                </TD>            </TR>        </TABLE>    </TD></TR>?>

Nu werkt bovenstaande code wel (zonder smileys dan) als ik de regel "$post[message] = postify($post[message]);" weglaat. Maar de regel tussen de smileys roept juist de omzet functie aan voor de smileys. Als ik nu met bovenstaande code de post wil viewen krijg ik de volgende melding:

You have an error in your SQL syntax near '' at line 1

Heeft iemand een idee/oplossing?

Always shoot for the moon. Even if you miss you will land among the stars...


  • killercow
  • Registratie: Maart 2000
  • Laatst online: 07-08 19:18

killercow

eth0

uhm db_smileys wel gedefineerd?
en mischien kun je de inhoud van je smile variabele even echoen zodat je weet wat er in zit en of er iets in zit.

openkat.nl al gezien?


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

or die(mysql_error());

Doet iets met Cloud (MS/IBM)


  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
Dit is er wat er in de tabel "db_smileys" zit:

www.compjoeter.com/db_echo.php

De icoontjes staan in de folder "icons" die in dezelfde map staat als de php files.

Always shoot for the moon. Even if you miss you will land among the stars...


  • killercow
  • Registratie: Maart 2000
  • Laatst online: 07-08 19:18

killercow

eth0

maak van de variabele $db_smiley in je query eens "db_smiley" ik weet het niet maar volgens mij gebruik je in je query namenlijk een variabele tabel naam, en je laat de variabele leeg, volgens mij bedoel je een niet variabele tabel naam, namenlijk db_smiley.

openkat.nl al gezien?


  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
Als ik de $ weghaal bij db_smiley is de syntax error weg maar worden er geen posts meer weer gegeven als view post_query aangeropen wordt.

Ik vermoed dat er iets fout zit met de functie postify of bij het aanroepen/gebruiken hiervan ... maar wat?

Always shoot for the moon. Even if you miss you will land among the stars...


Verwijderd

error_reporting(E_ALL);

soms zitten er errors die tot het niet werken van het script leiden en die zie je normaal niet |:(

  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
Ik krijg de volgende meldingen als ik error_reporting(e_all) aanzet:

Warning: Undefined index: message in functions.php on line 68

Warning: Undefined index: db_smiley in include.php on line 6

Warning: Undefined index: message in functions.php on line 68

Warning: Undefined index: db_smiley in include.php on line 6

Kan iemand hier dan wat uit op maken?

|:(

Always shoot for the moon. Even if you miss you will land among the stars...


  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

You have an error in your SQL syntax near '' at line 1
echo je queries eens? en over die undefined indexes hoef je je op dit moment niet druk te maken. /edit: straks wel :P

/edit 2: ik denk dat je een slashes-probleem hebt. Dan zet je ze weer wel en dan weer niet :S bijv:
[php]<?$GLOBALS['db_smiley'];$smiley
code:
1
?>

/edit 3(sorry): de $ voor db_smiley moet idd weg (als de tabelnaam niet variabel is), of
zo:
PHP:
1
<?("SELECT * FROM '".$db_smiley."'");?>

Maar gewoon ff debuggen door alles te echoen op t scherm, dan kom je denk ik een heel eind.

/edit 4: typo's :)

Sundown Circus


  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
Kan je me van dat debuggen even een voorbeeld geven aan de hand van de code die ik in mijn eerste post gezet heb?

Ik ben daar niet zo een kei en een handje op weg zou ik erg op prijs stellen ;)

Always shoot for the moon. Even if you miss you will land among the stars...


Verwijderd

gewoon op alle mogelijke punten even een echo proberen van die variabelen die je hebt en dan kijken of de inhoud klopt met wat het had moeten zijn :)

  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

[php]<?function postify($message) { /*check of $message gezet is*/echo ("Message=".$message."<BR>");# Text vervange door smileys in database $db_smiley = $GLOBALS['db_smiley']; /*check of $db_smiley is gezet*/echo ("DB_Smiley=:".$db_smiley."<BR>");/*ff zo*/$this_query=("SELECT * FROM ".$db_smiley); /*kijken of deze query helemaal klopt*/echo ("This query is:".$this_query."<BR>");$query = mysql_query($this_query) or die mysql_error()); while($smiley = mysql_fetch_array($query)) { $message = str_replace("$smiley
code:
1
", "[img]\"./icons/$smiley[url]\"[/img]", $message); }    $message = eregi_replace("\\[img\]([^\\\[]*)\\[/img\]", "[img]\"\\1\"[/img]", $message);    $message = eregi_replace("\\[url\]([^\\\[]*)\\[/url\]", "<a href=\"\\1\">\\1</a>", $message);    return $message;}?>

Dus: gewoon even al je variabelen en queries checken om te kijken of er uberhaupt iets instaat en of het goeie erin staat. en of alle slashes goed staan.

Heb je hiergenoeg aan?

Sundown Circus


  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
Hij echoed wel :) 10000 ziljoen errors :(

Ik zit echt even vast |:( |:(

Always shoot for the moon. Even if you miss you will land among the stars...


  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
Ben en nu wel vrij zeker van dat het aan de postify functie ligt. Want als ik message echo krijg ik gewoon de post te zien (ongewijzigd). Dus er wordt niets gepostified :(

Always shoot for the moon. Even if you miss you will land among the stars...


  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
Heb nu de volgende postify functie. Hier moet iets fout zitten de return message geeft gewoon een ongewijzigde post terug :(
[php]<?function postify($message) { # BB code and smilies and stuff $db_smiley = $GLOBALS['db_smiley']; $query = mysql_query("SELECT * FROM db_smiley") or die(mysql_error()); while($smiley = mysql_fetch_array($query)) { $message = str_replace("$smiley
code:
1
", "[img]\"icons/$smiley[url]\"[/img]", $message);    }    $barr1 = explode("[b]", $message);    $barr2 = explode("[/b]", $message);    $iarr1 = explode("[i]", $message);    $iarr2 = explode("[/i]", $message);    $uarr1 = explode("[u]", $message);    $uarr2 = explode("[/u]", $message);    $qarr1 = explode("[quote]", $message);    $qarr2 = explode("[/quote]", $message);    if((strstr($message, "[b]") &amp;&amp; !strstr($message, "[/b]")) || (strstr($message, "[/b]") &amp;&amp; !strstr($message, "[b]")) || (count($barr1) != count($barr2))) {        $message = str_replace("[b]", "", $message);        $message = str_replace("[/b]", "", $message);    }    if((strstr($message, "[i]") &amp;&amp; !strstr($message, "[/i]")) || (strstr($message, "[/i]") &amp;&amp; !strstr($message, "[i]")) || (count($iarr1) != count($iarr2))) {        $message = str_replace("[i]", "", $message);        $message = str_replace("[/i]", "", $message);    }    if((strstr($message, "[u]") &amp;&amp; !strstr($message, "[/u]")) || (strstr($message, "[/u]") &amp;&amp; !strstr($message, "[u]")) || (count($uarr1) != count($uarr2))) {        $message = str_replace("[u]", "", $message);        $message = str_replace("[/u]", "", $message);    }    if((strstr($message, "[quote]") &amp;&amp; !strstr($message, "[/quote]")) || (strstr($message, "[/quote]") &amp;&amp; !strstr($message, "[quote]")) || (count($qarr1) != count($qarr2))) {        $message = str_replace("[quote]", "", $message);        $message = str_replace("[/quote]", "", $message);    }    $message = nl2br($message);    $message = str_replace("[b]", "<b>", $message);    $message = str_replace("[/b]", "</b>", $message);    $message = str_replace("[i]", "<i>", $message);    $message = str_replace("[/i]", "</i>", $message);    $message = str_replace("[u]", "<u>", $message);    $message = str_replace("[/u]", "</u>", $message);    $message = str_replace("[quote]", "Quote:<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"100%\"><tr><td bgcolor=\"#000000\"><table border=\"0\" cellspacing=\"1\" cellpadding=\"5\" width=\"100%\"><tr><td class=\"quotetd\">", $message);    $message = str_replace("[/quote]", "</td></tr></table></td></tr></table>", $message);    $message = eregi_replace("\\[img\]([^\\\[]*)\\[/img\]", "[img]\"\\1\"[/img]", $message);    $message = eregi_replace("\\[url\]([^\\\[]*)\\[/url\]", "<a href=\"\\1\">\\1</a>", $message);    return $message;}?>

Always shoot for the moon. Even if you miss you will land among the stars...


  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

[php]<?while($smiley = mysql_fetch_array($query)) { $message = str_replace("$smiley
code:
1
", blaaat?>

maak van $smiley[code] eens
PHP:
1
<?$smiley['code']?>

Sundown Circus


  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
Dan krijg ik de volgende parse error:
code:
1
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in /home/sites/site171/web/Forum/include.php on line 8

Always shoot for the moon. Even if you miss you will land among the stars...


  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

PHP:
1
<?//doe us:while($smiley = mysql_fetch_array($query)) {        $tmpsmiley=$smiley['code'];$message = str_replace($tmpsmiley //hier ff geen slashes//, etc}    ?>

Sundown Circus


  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
Wat bedoel je met //hier ff geen slashes//, etc?
[php]<?$message = str_replace("$smiley
code:
1
", "[img]\"icons/$smiley[url]\"[/img]", $message);?>

Als je de slashes bedoeld, die ik denk dat je bedoeld, die moeten nl blijven staan. Deze zorgen ervoor dat er haakjes staan waar ze moeten staan zodat er leesbare html uitkomt
nl [img]"icons/smile.gif"[/img] ...

Always shoot for the moon. Even if you miss you will land among the stars...


Verwijderd

als je je code zelfs eens maakt en niet jat weet je tenminste hoe het werkt en tot wanneer er een fout in kwam...

  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

Op zondag 24 maart 2002 16:28 schreef seamus21 het volgende:
Wat bedoel je met //hier ff geen slashes//, etc?
[php]<?$message = str_replace("$smiley
code:
1
", "[img]\"icons/$smiley[url]\"[/img]", $message);?>

Als je de slashes bedoeld, die ik denk dat je bedoeld, die moeten nl blijven staan. Deze zorgen ervoor dat er haakjes staan waar ze moeten staan zodat er leesbare html uitkomt
nl [img]"icons/smile.gif"[/img] ...
ik bedoel /edit: dit dus:
PHP:
1
<?$tmpsmiley=$smiley['code'];$tmpurl=$smiley['url'];$tmpimg=("[img]\"icons/$tmpurl\"/".$tmpurl.">");$message[/img]

Sundown Circus


  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
Wat is dit nu weer voor lame beschuldiging?

Ik ben pas iemand die 2 dagen met php bezig is en geef ook gelijk toe dat ik code van tutorials copy/paste, tutorials zijn ervoor om mensen zoals mij op weg te helpen.

Ik heb dat forum waar dit over gaat zo goed als zelf opgebouwd en aangepast aan wat ik leuk vind. Dat dit aan de hand van een tutorials is gegaan is alleen maar goed want ik heb er een hoop van geleerd.

MAAR dat wil nog niet zeggen dat ik niet begrijp wat ik aan het doen ben ...! Dat jij je irriteerd aan mensen zoals mij mag je ergens anders gaan uiten AUB.

Ik ben hier gekomen met een serieuze vraag waar ik de afgelopen 12 uur mee bezig geweest ben. En ik wil het gewoon laten werken. En dan kom jij tussendoor met zo een opmerking ga @#$%^! ergens anders spelen ...

Ik wordt echt pissed van mensen die zonder de waarheid (het verhaal erachter) te kennen zomaar lose opmerkingen gaan zitten maken!

Always shoot for the moon. Even if you miss you will land among the stars...


  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

* RedRose grabs seamus21 by his nose and tells him to settle down

:)

Sundown Circus


  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
Ik krijg na postify() een onbewerkte post terug:

Dit is de huidige functie postify (met wijzigingen van RedRose erbij);
[php]<?function postify($message) { # BB code and smilies and stuff $db_smiley = $GLOBALS['db_smiley']; $query = mysql_query("SELECT 'code', 'url' FROM db_smiley") or die(mysql_error());/* while($smiley = mysql_fetch_array($query)) {$message = str_replace("$smiley
code:
1
", "[img]\"icons/$smiley[url]\"[/img]", $message); */while($smiley = mysql_fetch_array($query)) {    $tmpsmiley=$smiley['code'];    $tmpurl=$smiley['url'];    $message = str_replace($tmpsmiley, "[img]\"icons/$tmpurl\"[/img]", $message);}    $barr1 = explode("[b]", $message);    $barr2 = explode("[/b]", $message);    $iarr1 = explode("[i]", $message);    $iarr2 = explode("[/i]", $message);    $uarr1 = explode("[u]", $message);    $uarr2 = explode("[/u]", $message);    $qarr1 = explode("[quote]", $message);    $qarr2 = explode("[/quote]", $message);    if((strstr($message, "[b]") &amp;&amp; !strstr($message, "[/b]")) || (strstr($message, "[/b]") &amp;&amp; !strstr($message, "[b]")) || (count($barr1) != count($barr2))) {        $message = str_replace("[b]", "", $message);        $message = str_replace("[/b]", "", $message);    }    if((strstr($message, "[i]") &amp;&amp; !strstr($message, "[/i]")) || (strstr($message, "[/i]") &amp;&amp; !strstr($message, "[i]")) || (count($iarr1) != count($iarr2))) {        $message = str_replace("[i]", "", $message);        $message = str_replace("[/i]", "", $message);    }    if((strstr($message, "[u]") &amp;&amp; !strstr($message, "[/u]")) || (strstr($message, "[/u]") &amp;&amp; !strstr($message, "[u]")) || (count($uarr1) != count($uarr2))) {        $message = str_replace("[u]", "", $message);        $message = str_replace("[/u]", "", $message);    }    if((strstr($message, "[quote]") &amp;&amp; !strstr($message, "[/quote]")) || (strstr($message, "[/quote]") &amp;&amp; !strstr($message, "[quote]")) || (count($qarr1) != count($qarr2))) {        $message = str_replace("[quote]", "", $message);        $message = str_replace("[/quote]", "", $message);    }    $message = nl2br($message);    $message = str_replace("[b]", "<b>", $message);    $message = str_replace("[/b]", "</b>", $message);    $message = str_replace("[i]", "<i>", $message);    $message = str_replace("[/i]", "</i>", $message);    $message = str_replace("[u]", "<u>", $message);    $message = str_replace("[/u]", "</u>", $message);    $message = str_replace("[quote]", "Quote:<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"100%\"><tr><td bgcolor=\"#000000\"><table border=\"0\" cellspacing=\"1\" cellpadding=\"5\" width=\"100%\"><tr><td class=\"quotetd\">", $message);    $message = str_replace("[/quote]", "</td></tr></table></td></tr></table>", $message);    $message = eregi_replace("\\[img\]([^\\\[]*)\\[/img\]", "[img]\"\\1\"[/img]", $message);    $message = eregi_replace("\\[url\]([^\\\[]*)\\[/url\]", "<a href=\"\\1\">\\1</a>", $message);    return $message;}?>

Always shoot for the moon. Even if you miss you will land among the stars...


  • Grum
  • Registratie: Juni 2001
  • Niet online
heb je uberhaubt ENIG idee wat er in die functie gebeurt met de message ?

volges mij niet :)

  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

Op zondag 24 maart 2002 17:03 schreef Grum het volgende:
heb je uberhaubt ENIG idee wat er in die functie gebeurt met de message ?

volges mij niet :)
Laat t ons maar ff uitzoeken. Ik ben in mn zondagse goede daden bui...bijna pasen enzo ;)

edit:

oops

Sundown Circus


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

ok lijkt me duidelijk dit
ga zelf verder debuggen enzo
en als je nog een gerichte vraag hebt mag je die echt wel weer posten

Doet iets met Cloud (MS/IBM)

Pagina: 1

Dit topic is gesloten.