|
That's alright - been idly thinking about the question since I saw it, yesterday was the first time I had some time spare to play with.
First things first - if you don't want labels as your poll doesn't require them, then just forget about the label object. For each radio button, create an img and a br, then simply append them to the target container's child list.
To just add a 'radio-button' without a label use this code (or a suitable modification):
function addRadioButton(groupName, optionValue, tgtContainer)
{
imgObj = document.createElement("img");
imgObj.name = groupName;
imgObj.src = "rb1.png";
imgObj.width = "12";
imgObj.height = "12";
imgObj.value = optionValue;
imgObj.onmouseout = function(){ changeState(this, 1); updateImg(this); }
imgObj.onmouseover = function(){ changeState(this, 1); updateImg(this); }
imgObj.onclick = function(){doClick(this);}
newLineObj = document.createElement("br");
tgtContainer.appendChild(imgObj);
tgtContainer.appendChild(newLineObj);
}
Next,
Nope! You can't see a thing in Dreamweaver's design mode - it's a 2 line body. (Although I know dw can show live previews of sites that use a database, I couldn't tell you if it does this via a clever trick, or if it just runs the page)
I think I'm getting a little lost in your question, If I understand what you're asking, I think the code in my first post does that.
I actively encourage the downloading and modification of source code for the purpose of learning.
(It's the way we learn to speak - by copying and modification to suit the situation)
However, let me point out that I have used anonymous functions for the event handlers. Doing this allows the called function to get access to the calling object via the word 'this'.
"When the page loads it also loads the buttons as the images" - pardon?
If I may - when you saved and ran the page I provided above, how was the functionality different from what you want? What doesn't work right?
|
|
|
|
|
Well, seeing as I don't normally use Dreamweaver, I mainly use Notepad. I am just gonna give you the source for the poll page, so you can help me implement the code into it. Thanks.
--------------------------------------------------------------------------------------------------------------------------------------
<?php
$title = "What is your Preferred Browser?";
$choices = array("Firefox",
"Chrome",
"Navigator",
"Safari",
"Opera",
"Inernet Explorer");
?>
<body>
<h3><?php echo $title; ?></h3>
<p>
<form action="RESULTSPAGE.PHP" method="post">
<?php
//print possible answers
for($i=0;$i<count($choices);$i++){
?><input type="radio" name="vote" value="<?php echo $i; ?>"> <?php echo $choices[$i]; ?><br /><?php
}
?>
<p><input type="submit" value="Vote" style="border-color: rgb(255, 0, 0); color: rgb(255, 0, 0); font-family: Arial; font-weight: bold; font-size: 12px; background-color: rgb(0, 0, 0);"></p>
</form>
</p>
--------------------------------------------------------------------------------------------------------------------------------------
Thanks for all your help.
|
|
|
|
|
Yeah, not a massive,massive fan of dreamweaver myself, though for laying out div-tags and some certain operations, it really does suit me.
It's much easier to get it to spit out a few tags then modify in code than it is to remember them all for me.
Tried a bunch of editors, though really none have made me take the effort of making them usb-portable or able to be easily used in linux.
(Done both with dw)
Have you tried Notepad++[^]?
That said, I forget who, but somebody suggested the use of Hidden Fields. These are exactly what I used.
The way I saw it - there were two options for getting the value into the hidden field ready for form-submittal.
(1) Modify the doClick function, so that it updated the hidden field anytime a radio-button was clicked
or
(2) Use the onsubmit handler of the form to grab the value for me, before submitting the form.
I opted for #2, since that keeps the code 'cleaner' and is a more re-usable method.
Here you go:
resultsPage.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
Your preferred browser is: <?php echo $_POST["preferredBrowser"]; ?>
</body>
</html>
index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript">
function byId(e){return document.getElementById(e);}
function byName(e){return document.getElementsByName(e);}
function changeState(el, stateMod){el.state ^= stateMod;}
function updateImg(el)
{
imgs = Array("rb1.png", "rb2.png", "rb3.png", "rb4.png");
el.src = imgs[el.state];
}
function drawRadioGroup(groupName)
{
var elements, i, count;
elements = byName(groupName);
count = elements.length;
for (i=0; i<count; i++)
updateImg(elements[i]);
}
function doClick(el)
{
var elements, i, count;
elements = byName(el.name);
for (i=0; i<elements.length; i++)
{
elements[i].state &= 1;
updateImg(elements[i]);
}
el.state |= 2;
updateImg(el);
}
function getRadioGroupValue(groupName)
{
result = "none selected";
elements = byName(groupName);
count = elements.length;
for (i=0; i<count; i++)
{
if (elements[i].state >= 2)
result = elements[i].value;
}
return result;
}
function addRadioButton(groupName, optionValue, labelValue, tgtContainer)
{
lblObj = document.createElement("label");
lblText = document.createTextNode(labelValue);
imgObj = document.createElement("img");
imgObj.name = groupName;
imgObj.src = "rb1.png";
imgObj.width = "12";
imgObj.height = "12";
imgObj.value = optionValue;
imgObj.onmouseout = function(){ changeState(this, 1); updateImg(this); }
imgObj.onmouseover = function(){ changeState(this, 1); updateImg(this); }
imgObj.onclick = function(){doClick(this);}
lblObj.appendChild(imgObj);
lblObj.appendChild(lblText);
tgtContainer.appendChild(lblObj);
newLineObj = document.createElement("br");
tgtContainer.appendChild(newLineObj);
}
function createGroup(groupName)
{
choices = Array("Firefox", "Chrome", "Navigator", "Safari", "Opera", "Internet Explorer");
for (i=0; i<choices.length; i++)
addRadioButton(groupName, choices[i], choices[i], byId("radioHolder"));
}
function getHiddenValue()
{
chosenValue = getRadioGroupValue("radioGroup1");
byId("pollChoice").value = chosenValue;
return 1;
}
function test2(){alert(getRadioGroupValue("radioGroup1"));}
</script>
</head>
<body onload="createGroup('radioGroup1', 10);">
<h3>What is your Preferred browser?</h3>
<div id = "radioHolder"></div>
<form id="dummyForm" action="resultsPage.php" method="post" onsubmit="getHiddenValue();">
<input type="hidden" name="preferredBrowser" id="pollChoice" value=""/>
<input type="submit" value="Vote"/><br/>
</body>
</html>
|
|
|
|
|
So all I have to do now is copy the "index.php" text, and paste it into a page called index.php and it will work...? Well I'll try it, hopefully it works, Thanks!
|
|
|
|
|
Hmm - possibly not.
It works fine in FF, but I just tried the page in chrome again, and it no works! (Love the firebug extension for firefox)
CRAP! IE6 no good either (the function to retrieve the selected option isn't working right)
OK - Opera works.
Making the code work cross-browser is left as an exercise to the reader.
[EDIT: document.getElementsByName not supported in IE6 ]
[EDIT2: function getHiddenValue - add the keyword 'var' before 'chosenValue' - chrmoe doesn't like us not declaring it as a var before asigning something to it]
modified on Wednesday, December 30, 2009 7:52 PM
|
|
|
|
|
Okay, so I mainly use Firefox, and I posted on the homepage of the site, the our site is best viewed with Firefox, so thats okay, as long as in those other browsers that it was able to view radio buttons then it will do just fine. But when I edited it to fit the actual results page, it submitted no info. So, here is both files, with what I have edited to fit....
poll.php
--------------------------------------------------------------------------------------------------------
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Poll</title>
<script type="text/javascript">
function byId(e){return document.getElementById(e);}
function byName(e){return document.getElementsByName(e);}
function changeState(el, stateMod){el.state ^= stateMod;}
function updateImg(el)
{
imgs = Array("rb1.png", "rb2.png", "rb3.png", "rb4.png");
el.src = imgs[el.state];
}
function drawRadioGroup(groupName)
{
var elements, i, count;
elements = byName(groupName);
count = elements.length;
for (i=0; i<count; i++)
updateImg(elements[i]);
}
function doClick(el)
{
var elements, i, count;
elements = byName(el.name);
for (i=0; i<elements.length; i++)
{
elements[i].state &= 1;
updateImg(elements[i]);
}
el.state |= 2;
updateImg(el);
}
function getRadioGroupValue(groupName)
{
result = "none selected";
elements = byName(groupName);
count = elements.length;
for (i=0; i<count; i++)
{
if (elements[i].state >= 2)
result = elements[i].value;
}
return result;
}
function addRadioButton(groupName, optionValue, labelValue, tgtContainer)
{
lblObj = document.createElement("label");
lblText = document.createTextNode(labelValue);
// create the miage object
imgObj = document.createElement("img");
imgObj.name = groupName;
imgObj.src = "rb1.png";
imgObj.width = "12";
imgObj.height = "12";
imgObj.value = optionValue;
imgObj.onmouseout = function(){ changeState(this, 1); updateImg(this); } //onmouseout="changeState(this, 1); updateImg(this)"
imgObj.onmouseover = function(){ changeState(this, 1); updateImg(this); }
imgObj.onclick = function(){doClick(this);}
lblObj.appendChild(imgObj); // add the image to the label object
lblObj.appendChild(lblText); // add the label text after the img - text appears to the right of the image
tgtContainer.appendChild(lblObj); // add the label object to the target container
// add the img object to the target container
newLineObj = document.createElement("br"); // and add a new-line, ready for the next item to be added
tgtContainer.appendChild(newLineObj);
}
function createGroup(groupName)
{
choices = Array("Firefox", "Chrome", "Navigator", "Safari", "Opera", "Internet Explorer");
for (i=0; i<choices.length; i++)
addRadioButton(groupName, choices[i], choices[i], byId("radioHolder"));
}
function getHiddenValue()
{
chosenValue = getRadioGroupValue("radioGroup1");
byId("pollChoice").value = chosenValue;
return 1;
}
function test2(){alert(getRadioGroupValue("radioGroup1"));}
</script>
</head>
<body onload="createGroup('radioGroup1', 10);">
<span style="color: rgb(255, 0, 0);">
<h3>What is your Preferred browser?</h3>
<div id = "radioHolder"></div>
<form action="Poll Results.php" method="post" onsubmit="getHiddenValue();">
<input type="hidden" name="vote" id="pollChoice" value="<?php echo $i; ?>"/>
<br /><input type="submit" value="Vote" style="border-color: rgb(255, 0, 0); color: rgb(255, 0, 0); font-family: Arial; font-weight: bold; font-size: 12px; background-color: rgb(0, 0, 0);"><br/></span>
</body>
</html>
--------------------------------------------------------------------------------------------------------
Poll Results.php
--------------------------------------------------------------------------------------------------------
<?php
$file = "votes.txt";
$title = "What is your Preferred Browser?";
$choices = array("Firefox",
"Chrome",
"Navigator",
"Safari",
"Opera",
"Inernet Explorer");
?>
<body>
<h3 style="color: rgb(255, 0, 0);">Poll Results</h3>
<p><span style="color: rgb(255, 0, 0);">
<?php
$votes = file($file);
$total = 0;
$vote = $_POST["vote"];
if(isset($vote)){
$votes[$vote] = $votes[$vote]+1;
}
$handle = fopen($file,"w");
foreach($votes as $v){
$total += $v;
fputs($handle,chop($v)."\n");
}
fclose($handle);
for($i=0;$i<count($choices);$i++){
echo "{$choices[$i]} has {$votes[$i]} votes.<br />";
}
?>
</p>
<p>Total: <?php echo $total; ?> votes.</span></p>
</body>
--------------------------------------------------------------------------------------------------------
Thanks, hopefully you can fix it so that it will work.
|
|
|
|
|
Hey, do you realize that you filled the hidden value with a meaningless value (and one coming from an undefined variable)?
<input type="hidden" name="vote" id="pollChoice" value="<?php echo $i; ?>"/>
Did you also notice that you've forgotten to close the form tag?
Also, perhaps you forgot to check in "Poll Results.php", but the chosen value is being submitted perfectly in FF, Chrome & Opera.
(Try this addition to "Poll Results.php", after retrieving the POST value - echo $vote; ) Works every time...
However, "Poll Results.php" is another story altogether. That poor file should be taken out into a field and shot!
Have you had a look at "votes.txt" - it's nothing but a whole bunch of new-line separated 1s.
That's some seriously flawed logic in there my friend.
Surely it would be easier to simply add the chosen option(in text) to the file each time a vote is made, followed by adding up the number of instances of each.
Or, you could have a file for each of the options - that only held an integer. When an option is chosen, the corresponding file gets opened and the integer in it incremented. That'll give performance that will be just the same for vote number 1, and the 100,000,000th vote.
|
|
|
|
|
I don't understand this... "filled the hidden value with a meaningless value (and one coming from an undefined variable)?"
Also, how would I fix this..."However, "Poll Results.php" is another story altogether. That poor file should be taken out into a field and shot!
Have you had a look at "votes.txt" - it's nothing but a whole bunch of new-line separated 1s.
That's some seriously flawed logic in there my friend."
Thanks. I am truely greatful.
|
|
|
|
|
1] Perhaps I can put this another way, which do you find clearer, and 'better'?
(a)
<input type="hidden" name="vote" id="pollChoice" value=""/>
(b)
<input type="hidden" name="vote" id="pollChoice" value="thisIsJustSomeRandomJunkValue"/>
2]( )
(1) Get code
(2) get gun
(3) Find quiet place
(4) Shoot code(repeatedly) in the <body>
Ha, ha - no, to be serious - are you familiar with the term "desk-check", it seems it's gone out of fashion these days, but once upon a time we used to run programs first (before typing) by hand with pen and paper. This forces you to think about the code you're writing and to examine it logically.
As it stands, the logic in your "Poll Results.php" file is terribly flawed. Have you tried writing pseudo-code, then converting that to php - or how about converting your current code to pseudo code - then you'll see why I've been having a bit of a laugh with the whole thing.
It is a problem of logic from here. That's up to you. I decline any further invitation to fix it.
|
|
|
|
|
Okay, sorry, but I just started with PHP in November, and I just got a good book on it, but it doesn't have polls in it, I made the poll from a tutorial, and it worked fine originally, but now it doesn't seem to work. Sorry. But now I am going back to an earlier post of which stated this... "Surely it would be easier to simply add the chosen option(in text) to the file each time a vote is made, followed by adding up the number of instances of each." I am now asking how I would do that. Thanks, and hopefully you will make an exception this once. Thanks!!
|
|
|
|
|
No need to apologize - (not for you anyway - sorry if I was unpleasant)
Yeah, I found php a bit interesting at first - but I found out that I could interface to COM objects so long as the server was running windows (linux xampps doesn't support COM objects, while the windows one does) This was of interest to me, because this means that you can create a website that (for example) that creates office documents based on user entered data, before making the custom and newly created document available for download. (word, excel, powerpoint, access etc)
But in my case, I had a desire to interface to a school/university timetabling program (syllabus+), that as luck would have it offered it's own com server. The massive advantage being that anyone could view a timetable so long as they had a network(or internet) accessible pc(or phone or ps3, etc). Thus freeing users from having to have the software installed on their machines.
Anyhow, the point is that with a large enough motivation I made a start with php back around August sometime(i forget), and have since gone on to write a reasonably functional pdf creation class in php. I realize that there are others available - many for free, though none did what I wanted AND were entirely free of copyright restrictions. I now have some code that will create (semi-optimized) pdfs, with images and attachments that runs under both windows and linux.
Without the help of others, I'd know very little.
Try this on for size:
"Poll Results.php"
<body>
<h3 style="color: rgb(255, 0, 0);">Poll Results</h3>
<span style="color: rgb(255, 0, 0);">
<p>
<?php
$choices = array("Firefox", "Chrome", "Navigator", "Safari", "Opera", "Internet Explorer");
$file = "votes.txt";
$total = 0;
$vote = $_POST["vote"];
print("You voted for: $vote<br>");
$handle = fopen($file,"a+");
$outStr = sprintf("%s\r\n", $vote);
fputs($handle, $outStr);
fclose($handle);
$votes = file($file);
$i = 0;
$totals = array("Firefox"=>0, "Chrome"=>0, "Navigator"=>0, "Safari"=>0, "Opera"=>0, "Internet Explorer"=>0);
$ffx=0; $chr=0; $nav=0; $saf=0; $opr=0; $iex=0;
foreach ($votes as $curLine)
{
if (!strcmp($curLine, "Firefox\r\n"))
$ffx++;
if (!strcmp($curLine, "Chrome\r\n"))
$chr++;
if (!strcmp($curLine, "Navigator\r\n"))
$nav++;
if (!strcmp($curLine, "Safari\r\n"))
$saf++;
if (!strcmp($curLine, "Opera\r\n"))
$opr++;
if (!strcmp($curLine, "Internet Explorer\r\n"))
$iex++;
$i++;
}
printf("%s has %d votes<br>", $choices[0], $ffx);
printf("%s has %d votes<br>", $choices[1], $chr);
printf("%s has %d votes<br>", $choices[2], $nav);
printf("%s has %d votes<br>", $choices[3], $saf);
printf("%s has %d votes<br>", $choices[4], $opr);
printf("%s has %d votes<br>", $choices[5], $iex);
?>
</p>
</span>
<p>Total: <?php echo $i; ?> votes.</p>
</body>
Produces an output of (after a few runs):
Poll Results
You voted for: Opera Firefox has 0 votes Chrome has 1 votes Navigator has 0 votes Safari has 1 votes Opera has 1 votes Internet Explorer has 0 votes
Total: 3 votes.
And creates a file "votes.txt" with the following content:
Chrome
Safari
Opera
Yeah, I know it's not particularly extensible nor neat - but hey look at the time of year - I never did program very well when drunk
|
|
|
|
|
Thank you very much for all your help. I couldn't get anyone else to actually put the time and effort into helping me with this, thanks very much. It's currently 3:43 AM here, on the 1st of January, and the poll is finally finished. Thanks!!
|
|
|
|
|
Hi all,
I have a problem finding the differences between two arrays:
$first_array = array("a"=>"1", "b"=>"7", "c"=>"4", "d"=>"4");
$second_array = array("a"=>"1", "b"=>"10", "c"=>"10", "d"=>"4", "e"=>"7");
I'm trying to subtract the old array from the new one and find any new values. So the output should be:
$new_array = array("b"=>"3", "c"=>"6", "e"=>"7");
I tried using array_diff() and array_diff_assoc(). But they give me the wrong output. Any ideas?
Thanks.
|
|
|
|
|
I'm unaware of any library function that would do that, however you can easily iterate over the first array using
foreach ($first_array as $key => $value) {...}
and then look up the key in the second array, and adjust the value.
|
|
|
|
|
Hi all,
I want to know down to use the postback in php.For example i am using a list box when i select an item i want to display the data in same page.
As in asp.net there is auto post back just similar to that i want to use.
Thanks in advance.....
|
|
|
|
|
form.php:
<form id="form1" action="form.php" method="post">
<select id="mydropdown" name="mydropdown">
<option value="hello">hello</option>
<input type="submit" value="submit" />
</select>
</form>
<?php
if(isset($_POST['mydropdown'])) echo $_POST['mydropdown'];
?>
or you can use ajax such as jquery's $.POST to do it without refreshing the page
|
|
|
|
|
Hi all,
I need help since im new for php.How to display warning message at html label using php script.
Please help to solve this problem.
Thank You.
%#&kmpYrlHSGYG5@#($_+!@!(*JASnjshdk,cm_0ashjhdbn@#$!48mkhfbchsh))^%#W%&@YW7wsdfjw789';'][]\`~JKJQ4$!@#~)-HSKS^&*1)JK12@#@$~!1`DFGkqp][]\]?Zas;EWRG%!@~)(^&BVAG
|
|
|
|
|
kamalesh5743 wrote: How to display warning message at html label using php script.
<label> Warning: blah blah blah </label>
|
|
|
|
|
Imagine the following class that is inherited from std::vector
template<typename ObjType>
class myclass : public std::vector<ObjType*>
{ ... fancy stuff ... }
This class is basically an extended vector; it compiles fine under VS 2005, but fails to compile under Linux. It always throws an error about missing type specifiers when using an iterator, like iterator it = begin(); .
Anyone has an idea what the cause might be? I think it is trying to use std::iterator, even though the function exists in myclass, and so it should have the iterator type (if I don't include using namespace std; , the code fails with an unknown type "iterator", that's why I'm assuming the above).
Again, it compiles fine under Windows.
|
|
|
|
|
Hello All,
I am using the imap_search function and I want to return a list of all mail ids flagged as important. I am using the function this way.
$rst = imap_search($mbox,"FLAGGED");
if($rst===false)
{
echo "miss";
}
else
{
$cnt = count($rst);
for ($i=0; $i<$cnt; $i++)
{
echo "Match found in Msg#: $rst[$i]\n";
}
}
The output from above produces "miss".
I suspect my search string is wrong, but for all my searching I can not find a valid example of its propper usage. The mailbox I am using has 5 email messages in it with one marked as important.
Any ideas?
Thanks in advance!
|
|
|
|
|
nm, I was looking for the wrong thing to begin with. I needed to find emails witha return receipt so I can move them to a different folder.
Do this was easy enough with the strpos function looking for "Return-Receipt-To" in the returned string from imap_fetchheader().
From here it is easy enough to use the imap_mail_move() function (also using the imap_expunge before you close the imap connection).
...cause I share
|
|
|
|
|
Hi,
In a nut shell I'm trying to post some data to a file on a server, and I am having problems.
Since this is a project from a college class that finished on Friday, I need some help to finish it before I forget what the assignment was about. It is somewhat goofy what we were doing, so I will leave most of what already works out of my story.
We are supposed to take a file that is nothing but a text file and is a list of some data. The Perl/CGI file reads that data, constructs a web page that shows that data using a form and input tags. It also, using JavaScript, shows the data in a tree structure. All that code works great and is not my problem.
We are supposed to use the same Perl/CGI file to update the text file on the server using a POST by saving to that text file any changes we make to our data. I can not get the post to work. I do not know if my form is the problem or the problem is in the Perl Script code that detects when I need to make the changes to the text file. I think it is in the form, but I am not sure what properties I need to declare in the form tag except for method="POST".
I could include the code, but it is unnecessary to do so right now. If you could suggest a good tutorial on what you need to do to make a post using perl that would even be ok. I will post the code if nothing else is working for me. Thanks.
PS - In other words, I don't want you to write my code, just explain to me what steps I need to take or guide me to the right solution. Thanks.
|
|
|
|
|
Additional---
I kept trying different things and I have now got everything to work except the file is appended data to the txet file. Here is the code I am using:
open (myCourses, "+<courses.txt") or="" die="" $!;
i="" read="" the="" file="" into="" an="" array="" using="" this="" code:
="" my="" @lines="&<myCourses">;
I then manipulate the data and write it back to the same file inside a foreach loop using the @lines variable. What I get is a duplication of the existing data. I want the data to be removed from the file and then new data added back. The instructor said we are suppossed to use the open statement above, not a read and then a write. Should not this line behave the same as using an open read, and then an open write? I have tried everything, I think. Please help.
|
|
|
|
|
The code is:
open (myCourses, "+<courses.txt") or die $!;
my @lines = <myCourses>;
Sorry for the mess up.
|
|
|
|
|
Not really sure if this will help you,
perl docs - open
"You can put a '+' in front of the '>' or '<' to indicate that you want both read and write access to the file; thus '+<;' is almost always preferred for read/write updates--the '+>;' mode would clobber the file first. You can't usually use either read-write mode for updating textfiles, since they have variable length records."
|
|
|
|
|