crhiley Posted May 11, 2008 Share Posted May 11, 2008 To start, here is a snippet of my code... /* Updates the news database */ function add_newsdb($filename, $news) { if(file_exists($filename)){ $fh = fopen($filename, "r"); $old_news = fread($fh, filesize($filename)); fclose($fh); } // Load old news into memory $fh3 = fopen($filename, "w"); fwrite($fh3, "$news $old_news"); fclose($fh3); } if(strcmp($url, '')) { add_newsdb("news.dat", summary_page($subject, $date, $summary, $url)); } else { add_newsdb("news.dat", summary_page_nl($subject, $date, $summary)); } add_article("../../news.html"); Now, I'm focusing on the conditional (if/else) statement. I want to do is determine if the $url string is null or not. If it's null, I want to update a database with the news story and no url. If the $url is not null, I want to update the database with story & the corresponding url. My problem is, the database gets updated twice when I use this conditional statement: first with the proper update and then with a blank update. Any idea why this blank update takes place and how to correct it? See my attachment for a visual of my problem. What I've already tried: if(strlen($url, '')), if(strncmp($url, "http", 4)), etc with the same result. Also, I should mention that if I only include if(strcmp($url, '')) and no else{}, then there is only one update to the database. Any help would be greatly appreciated. [attachment deleted by admin] Link to comment https://forums.phpfreaks.com/topic/105091-solved-conditional-statement-help/ Share on other sites More sharing options...
Btown2 Posted May 11, 2008 Share Posted May 11, 2008 my first thing was wrong, do this if($url != "") { /* add your news*/ } else { /*add your news as null*/ } Link to comment https://forums.phpfreaks.com/topic/105091-solved-conditional-statement-help/#findComment-538016 Share on other sites More sharing options...
crhiley Posted May 11, 2008 Author Share Posted May 11, 2008 Btown2, if($url != "") {}... was incorrect. I appreciate the quick reponse, but I'm curious if you read my entire post. After all, I specifically mentioned trying all types of string manipulation/comparrison/etc and nothing regarding the latter has yielded correct results. I think the problem is more dubious than we imagine. That being said, perhaps I should post the entire code I'm using: /* Create a news story based on our template page */ function summary_page ($subject, $date, $summary, $url) { global $summary_template; $t = new Template(); $t->set_file("SummaryPage", $summary_template); $date = nl2br($date); $summary = nl2br($summary); $t->set_var( array( "subject" => $subject, "date" => $date, "summary" => $summary, "body" => $url)); $t->parse("Summary", "SummaryPage"); return $t->get_var("Summary"); } /* Create a news story based on our template page (NO HYPERLINK)*/ function summary_page_nl ($subject, $date, $summary) { global $summary_template_nl; $t = new Template(); $t->set_file("SummaryPageNl", $summary_template_nl); $date = nl2br($date); $summary = nl2br($summary); $t->set_var( array( "subject" => $subject, "date" => $date, "summary" => $summary)); $t->parse("SummaryNl", "SummaryPageNl"); return $t->get_var("SummaryNl"); } /* Updates the news database */ function add_newsdb($filename, $news) { if(file_exists($filename)){ $fh = fopen($filename, "r"); $old_news = fread($fh, filesize($filename)); fclose($fh); } // Load old news into memory $fh3 = fopen($filename, "w"); fwrite($fh3, "$news $old_news"); fclose($fh3); } /* Updates news.html */ function add_article($filename) { // Load header into memory if (file_exists("header.dat")){ $fh = fopen("header.dat", "r"); $header = fread($fh, filesize("header.dat")); fclose($fh); } // Load footer into memory if (file_exists("footer.dat")){ $fh2= fopen("footer.dat", "r"); $footer = fread($fh2, filesize("footer.dat")); fclose($fh2); } // Load old news into memory if(file_exists("news.dat")){ $fh1 = fopen("news.dat", "r"); $old_news = fread($fh1, filesize("news.dat")); fclose($fh1); } // Publish the News unlink("../../news.html"); $fh = fopen($filename, "w"); fwrite($fh, "$header \n $old_news \n\n $footer"); fclose($fh); } if(strcmp($url, "")){ add_newsdb("news.dat", summary_page($subject, $date, $summary, $url)); } else { add_newsdb("news.dat", summary_page_nl($subject, $date, $summary)); } add_article("../../news.html"); Again, help is greatly appreciated. Link to comment https://forums.phpfreaks.com/topic/105091-solved-conditional-statement-help/#findComment-538025 Share on other sites More sharing options...
maxudaskin Posted May 11, 2008 Share Posted May 11, 2008 my first thing was wrong, do this if($url != "") { /* add your news*/ } else { /*add your news as null*/ } Uhh.. wouldn't it be better to do this? <?php if(!empty($url)) { /* add your news*/ } else { /*add your news as null*/ } ?> Link to comment https://forums.phpfreaks.com/topic/105091-solved-conditional-statement-help/#findComment-538029 Share on other sites More sharing options...
crhiley Posted May 11, 2008 Author Share Posted May 11, 2008 I solved the problem myself. Let's look at my original code: <?php... if(strcmp($url, "")){ add_newsdb("news.dat", summary_page($subject, $date, $summary, $url)); } else { add_newsdb("news.dat", summary_page_nl($subject, $date, $summary)); } ?> The solution: When the page loaded, the php routine initialized and ran its course up to the "?>". Hence, when it checked for an empty string in the conditional statement, one was found and the database was updated with an empty entry. To counter-act this, I needed two if statements...like this: <?php... if(!empty($another_string)) { if(strcmp($url, "")){ add_newsdb("news.dat", summary_page($subject, $date, $summary, $url)); } else { add_newsdb("news.dat", summary_page_nl($subject, $date, $summary)); } } ?> Link to comment https://forums.phpfreaks.com/topic/105091-solved-conditional-statement-help/#findComment-538039 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.