Page 2 of 5
Posted: Mon Sep 25, 2006 4:56 pm
by akimm
isn't the radio buttons yes and no $_POST?
Thats what I was referring to with $_POST, I just tell the page after the stuff is printed if yes is clicked then write the file, if its no unlink it
I'm just real confused, I thought when method is POST and name is say foo $_POST['foo'] would be presumably a call to the choice of foo.
Thanks
--Sean
Posted: Mon Sep 25, 2006 5:13 pm
by Luke
well $_POST['name'] would only be set if you had a form post to it with an element named "name"... also, it's good practice to use the <label> tag for radio elements... so something like this:
Code: Select all
<input type="radio" name="name" value="yes" id="yes"><label for="yes">Yes</label><br>
<input type="radio" name="name" value="no" id="no"><label for="no">No</label>
Posted: Mon Sep 25, 2006 5:21 pm
by akimm
So this isn't a case where I use post?
Code: Select all
<?php
foreach (glob("entrys/*.txt") as $files) {
?>
<table>
<form method="POST" action="ad.php">
<tr><td><?php include($files);?></td></tr>
<tr><td><h2>yes</h2></td><br>
<td><input type="radio" name="yes"></td></tr>
<tr><td><h2>no</h2></td><br>
<td><input type="radio" name="no"></td></tr>
Posted: Mon Sep 25, 2006 5:28 pm
by Luke
yea it is... but your html is wrong... I posted what would be correct. However, this is not your only problem... your script has other issues, but let's tackle one thing at a time
Posted: Mon Sep 25, 2006 5:31 pm
by akimm
ok, well i'll make your prescribed fixes, thanks thus far.
Posted: Mon Sep 25, 2006 5:35 pm
by akimm
here is as you've suggested.
Code: Select all
<tr><td><h2>yes</h2></td><br>
<td><input type="radio" name="name" value="yes" id="yes"><label for="yes">Yes</label></td></tr>
<tr><td><h2>no</h2></td><br>
<td><input type="radio" name="name" value="no" id="no"><label for="no">No</label><</td></tr>
Posted: Mon Sep 25, 2006 6:37 pm
by akimm
Now with my code it still won't unlink the files, is there maybe a different way of deleting those, since this, after pressing no simply goes to ad, then i go back to the page and the file remains.
Posted: Mon Sep 25, 2006 6:47 pm
by Luke
go to the last response on the first page of this thread... I posted your code with my comments. Read my comments... try and fix it, and come back with some new code, and I'll help you.
Posted: Mon Sep 25, 2006 7:04 pm
by akimm
Your comments confused me royally, mainly because, after we agreed that $_POST was indeed applicable, the only real fix would be print_r which prints arrays, although what do I want it to print? Use print_r in every instance where I used echo?
Posted: Mon Sep 25, 2006 7:09 pm
by akimm
I've put all the code on one page, and used PHP_SELF as the form action. as for print_r i'll play with it, til you are able to come back, or someone, hopefully i'll get lucky and fix it before anyone has a chance to help.
Posted: Mon Sep 25, 2006 7:13 pm
by akimm
With the print_r, it prints the file as:
entrys/sean7.txt; this won't work, because, I need the entry to be included so I can read the file, knowing whether it is worth putting into my guestbook. Basically as an anti spam effort.
Code: Select all
<?php
$fp = fopen('guestbook.txt', 'w');
if($_POST['name'] == "yes" && $fp) {
fwrite($fp, $files);
fclose($fp);
unlink($_POST['name']);
}
if($_POST['name'] == "no") {
unlink($_POST['name']);
}
?>
<?php
foreach (glob("entrys/*.txt") as $files) {
?>
<table>
<form method="POST" action="<?php $_SERVER['PHP_SELF'];?>">
<tr><td><?php print_r($files);?></td></tr>
<tr><td><h2>yes</h2></td><br>
<td><input type="radio" name="name" value="yes" id="yes"><label for="yes">Yes</label></td></tr>
<tr><td><h2>no</h2></td><br>
<td><input type="radio" name="name" value="no" id="no"><label for="no">No</label><</td></tr>
<?php
echo "</table>";
}
?>
<input type="submit" value="submit for addition to guestbook" name="guestbook">
</form>
Posted: Mon Sep 25, 2006 9:13 pm
by akimm
Ok I've tried print_r, even implemented it in such a way that would work, or so I thought. I also now have a confusion, the way I have it set up, I'm afraid it will delete all $_POST['name'] variables, which wouldn't be a desired result, since this is an approval system, not a filecide(word? I doubt it, but now it is) system.
Code: Select all
<?php
$filename = print_r($files);
$fp = fopen('guestbook.txt', 'w');
if($_POST['name'] == "yes" && $fp) {
fwrite($fp, $files);
fclose($fp);
unlink($filename);
}
if($_POST['name'] == "no") {
unlink($filename);
}
?>
<?php
foreach (glob("entrys/*.txt") as $files) {
?>
<table>
<form method="POST" action="<?php $_SERVER['PHP_SELF'];?>">
<tr><td><?php echo $filename;?></td>
<tr><td><?php include($files);?></td></tr>
<tr><td><h2>yes</h2></td><br>
<td><input type="radio" name="name" value="yes" id="yes"><label for="yes">Yes</label></td></tr>
<tr><td><h2>no</h2></td><br>
<td><input type="radio" name="name" value="no" id="no"><label for="no">No</label></td></tr>
<?php
echo "</table>";
}
?>
<input type="submit" value="submit for addition to guestbook" name="guestbook">
</form>
Posted: Mon Sep 25, 2006 11:11 pm
by shneoh
First, I wish to make this clear: Ninja is asking you to print_r($_POST) not others.
Second, you have confused yourself. I suggest you should have dig deeper on the language basics before trying to manipulate the file system. Anyway, this is a good try. Just a friendly suggestion.

For a good programming habit, always comment your codes so others will understand better on what you suppose willing to do with these lines.
I have changed your codes and hope this would help:
Parameters:
$files = $filename = contains full path with file name.
$_POST[yes] = file array which picked as Yes.
$_POST[no] = file array which picked as No.
Code: Select all
<?php
echo "<PRE>";
echo "Print all from POST";
print_r($_POST);
echo "Print all from yes";
print_r($_POST["yes"]);
echo "Print all from no";
print_r($_POST["no"]);
echo "</PRE>";
$fp = fopen('guestbook.txt', 'w'); //<-- open file to write
if($fp){
foreach($_POST['yes'] as $filename){ //<-- Loop through all approved files.
fwrite($fp, $filename);
unlink($filename); //<-- I dont know why you want to remove it, anyway, I just remain here...
fclose($fp); //<-- close file.
}
foreach($_POST['no'] as $filename) { // Remove files which is not approved.
unlink($filename);
}
/* For those files which is not being choose, will do nothing. */
?>
<?php
foreach (glob("entrys/*.txt") as $files) {
?>
<table>
<form method="POST" action="<?php $_SERVER['PHP_SELF'];?>">
<tr><td><?php include($files);?></td></tr>
<tr><td><h2>yes</h2></td><td><input type="radio" name="yes[]" value="$files" id="yes"></td></tr>
<tr><td><h2>no</h2></td><td><input type="radio" name="no[]" value="$files" id="no"></td></tr>
</table>
<input type="submit" value="submit for addition to guestbook" name="guestbook">
</form>
Hello
Posted: Mon Sep 25, 2006 11:31 pm
by akimm
I honestly and completely thank you for your effort, but as is, this code still doesn't accomplish the goal. It prints this output after I go to the page with the new code
Code: Select all
Print all from POSTArray
(
)
Print all from yesPrint all from no
Warning: Invalid argument supplied for foreach() in /nfs/cust/8/25/05/650528/web/guestbook1/approve.php on line 12
Warning: Invalid argument supplied for foreach() in /nfs/cust/8/25/05/650528/web/guestbook1/approve.php on line 19
After I select yes it prints this, but the file still remains.
Code: Select all
Print all from POSTArray
(
[yes] => Array
(
[0] => $files
)
[guestbook] => submit for addition to guestbook
)
Print all from yesArray
(
[0] => $files
)
Print all from no
Warning: unlink($files): No such file or directory in /nfs/cust/8/25/05/650528/web/guestbook1/approve.php on line 14
Warning: Invalid argument supplied for foreach() in /nfs/cust/8/25/05/650528/web/guestbook1/approve.php on line 19
Your code submitted had an unexected $end I had to add an extra curly bracer then all of the above was printed, this is your code as I have it, again, thank you for the help, I know we're close to solving this problem, but not there yet!
Thanks
--Sean
Posted: Mon Sep 25, 2006 11:42 pm
by shneoh
Ops, some mistake.... Change these parts and I think it should be alright.
Code: Select all
if(!isset($_POST)){
echo "<PRE>";
echo "Print all from POST";
print_r($_POST);
echo "Print all from yes";
print_r($_POST["yes"]);
echo "Print all from no";
print_r($_POST["no"]);
echo "</PRE>";
}
Code: Select all
<table>
<form method="POST" action="<?php $_SERVER['PHP_SELF'];?>">
<tr><td><?php include($files);?></td></tr>
<tr><td><h2>yes</h2></td><td><input type="radio" name="yes[]" value="<?php echo $files; ?>" id="yes"></td></tr>
<tr><td><h2>no</h2></td><td><input type="radio" name="no[]" value="<?php echo $files; ?>" id="no"></td></tr>
<input type="submit" value="submit for addition to guestbook" name="guestbook">
</form></table>