
04-08-2006, 16:22
|
|
|
|
חבר מתאריך: 17.05.04
הודעות: 1,454
|
|
|
Shoutbox - בעיה בלולאת foreach...
בניתי shoutbox, מאוד פשוט - משום מה היה לי יום דפוק שבניתי אותו :|
אז דבר ראשון אני רוצה להגיד תודה לדורון על שעזר לי בשעתי הקשה P:
בכל מקרה הנה הקוד :
קוד PHP:
<?
/* ShoutBox - rs3k - free for use. */
class shoutbox{
protected $post;
protected $file;
function __construct($msg,$name){
if(!$name)
$name = 'Anonnymous';
if(!$msg)
die('Messege text is required.');
$this->file = 'doc.txt';
$this->post = $this->smilies(nl2br($msg.';'.$name));
}
function smilies($var){
$bbcode = Array(':)',':(',':P',';)',':|',':O');
$imgs = Array('<img src="images/smile.gif" />','<img src="images/sad.gif" />','<img src="images/kidding.gif" />','<img src="images/wink.gif" />','<img src="images/no-expression.gif" />','<img src="images/oh-my.gif" />');
return str_replace($bbcode,$imgs,$var);
}
function post(){
if(!is_readable($this->file) || !is_writable($this->file))
die('We cannot post your message at the momment you may try later.');
if(!file_get_contents($this->file))
return file_put_contents($this->file,$this->post);
return file_put_contents($this->file, file_get_contents($this->file). "\n<br />" .$this->post);
}
function output(){
$read = file_get_contents($this->file);
$read = explode('\n',$read);
foreach($read as $a) {
$x = explode(";",$a);
print $x[0].' : '.$x[1];
}
}
function __destruct(){
unset($this->post);
unset($this->file);
}
}
$shout = new shoutbox($_POST['msg'],$_POST['name']);
$shout -> post();
$shout -> output();
?>
הבעיה היא שבפונקציה post יש את הלולאת foreach - ששמה על כל שורה אני "מפוצץ" את השורה - עם המפריד ';'..
עכשיו מה שזה אמור לעשות שכל פעם x יוגדר מחדש עם מערך של שני החלקים של ההודעה - מצד שמאל ל ';' ומצד ימין - כמובן שזה לא עובד :|
לדעתי הבעיה היא שזה לא כל פעם מגדיר מחדש את X אלא ממשיך להגדיר באינדקסים אחרים..
זאת אומרת החלק הראשון בשורה השניה תהיה [2]x$ והחלק השני בשורה השניה [3]x$ ככה שלדעתי זה לא מגדיר את זה כל פעם מחדש...
אני לא מוצא את הסיבה לכך - אני מקווה לעזרה ממכם לגבי זה 
תודה מראש לכל העונים.
_____________________________________
EVERYTHING SHOULD BE MADE AS SIMPLE AS POSSIBLE, BUT NOT ONE BIT SIMPLER
ALBERT EINSTEIN
|