0

Hello,

I am currently working on a function that will allow the user to search for an event by date and category.
I've been using the w3schools exercise as an example but i wish to pass 2 pieces of data instead of one and am not sure how to do so.

I'm sure similar posts have been raised before and i apologise if this type of question has already been answered but i could't find it in the forum index.

<FORM name="myForm">
<INPUT type="text" readonly name="MyDate2" value="Click for Calender" onClick="toggleCalendar('MyDate2')"size="15">
Select a Classification:
<select name="Classification2">
<option value="Accountants">Accountants</option>
<option value="Aerial Services">Aerial Services</option>
</select>
<button name="Search" value="radio1" onClick="showupdate(document.myForm.MyDate2.value);">Search Promotions</button>
<br>
</form>
------------------------------------------------------------------
var xmlHttp

function showupdate(str)
{ 
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
 {
 alert ("Browser does not support HTTP Request")
 return
 }
var url="getupdatePromo.php"
url=url+"?q="+str
url=url+"&sid="+Math.random()
xmlHttp.onreadystatechange=stateChanged 
xmlHttp.open("GET",url,true)
xmlHttp.send(null)
}

function stateChanged() 
{ 
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
 { 
 document.getElementById("txtupdate").innerHTML=xmlHttp.responseText 
 } 
}

function GetXmlHttpObject()
{
var xmlHttp=null;
try
 {
 // Firefox, Opera 8.0+, Safari
 xmlHttp=new XMLHttpRequest();
 }
catch (e)
 {
 //Internet Explorer
 try
  {
  xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  }
 catch (e)
  {
  xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
 }
return xmlHttp;
}
---------------------------------------------------------------------
i won't bother including the sql page as i don't think that is the problem.
I've tried various combinations such as:
var url="getupdatePromo.php"
url=url+"?q="+str+"?q2="+str2
url=url+"&sid="+Math.random()
xmlHttp.onreadystatechange=stateChanged 
xmlHttp.open("GET",url,true)

and such like but it just feels like i'm going around in circles.

Any help would be much appreciated. Even just point me in the direction of a good article or tutorial, i've been banging my head against it for 2 days so i'm very willing to take a few hours to go through a tutorial

many thanks

Tom.

Edited by nav33n: Please use [code] tags to wrap your code for easy readability.

3
Contributors
14
Replies
18
Views
7 Years
Discussion Span
Last Post by thonz
Featured Replies
  • Can you try replacing your GetXmlHttpObject function with this one? [CODE] function GetXmlHttpObject(handler) { var xmlHttp=null; if (window.XMLHttpRequest) { //code for IE7+, Firefox, Chrome, Opera, Safari xmlHttp = new XMLHttpRequest(); } else if (window.ActiveXObject) { //code for IE6, IE5 try { xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {alert (e.description);} … Read More

0

I think i just answered this in the post above this one, but just in case.

url=url+"?q="+str;
url=url+"&q2="+str2;
url=url+"&sid="+Math.random();

However, I would highly recommend you learn jQuery. You'll find ajax requests so much easier.

Edited by Hangfire: n/a

0

Just one other thing though i'm a bit sketchy on the syntax to pass 2 variables when the button is clicked.
I thought it was:

<button name="Search" value="radio1" onClick="showupdate(document.myForm.MyDate2.value);(document.myForm.Classification.value);">Search Promotions</button>

thanks.

0

[while i was looking for examples online i saw a few people mention jQuery.
I want to get this website launched by the end of this week but once it's up i'll have some free time to have a look at jQuery,

Thanks,

Tom.

0

use onclick="showupdate()"

then in your javascript

var var1 = document.myForm.MyDate2.value;
var var2 = document.myForm.Classification.value;

var url="getupdatePromo.php";
url+="?q="+var1;
url+="?p="+var2;
url+="&sid="+Math.random();
xmlHttp.onreadystatechange=stateChanged;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
0

seems to be working now thx very much u r a legend. Now all i gotta do is work out why my SQL operators < and > are doing the opposite of what they should be lol.

Thanks again and i'll check out that jQuery when i've got a spare minute.

Edited by baseballfury: my bumbling fault

0

i've changed the code as you said and it seems to be passing the values but i tested the value of $p and it's coming up with ?p=164 instead of just 164.
The search will allow the user to find an entry based on both values not just one or the other in case that makes a big difference.

Also my sql statements seem to be doing the exact opposite of what i ask it to e.g.
with p equalling Monday

$sql4 ="SELECT * FROM Promotions WHERE Monday != '".$p."' ORDER BY PromoID ASC";
$result4 = mysql_query($sql4);

(and it's only returning entries where Monday is empty)

grrrrrrrrrrr

thanks

0

Finally got it working. You put
url+="&p="+var2;
on the first reply then when i asked about the showupdate() you put it back to

url+="?p="+var2;
which i copied character for character.
It's my own fault for being such a gimbo lol

thanks very much again for all you help u've been a star.

0

Gald to have helped.
Sorry, I should have highlighted the += thing.
I'm so used to writing it, I did it without thinking.

0

Sorry to bother you with this again but wold you have any idea as to why this wouldnt work in firefox.
When i click the search button nothing loads and the quantities in the 2 text boxes reset to their load values.

Any help appreciated

Tom

0

You're saying it works in IE but not firefox?

Might be an idea to post all your code up, my raw ajax is a little rusty as I always use jquery. But I have some older code lying around which I can compare your code to.

1

Can you try replacing your GetXmlHttpObject function with this one?

function GetXmlHttpObject(handler)
{
var xmlHttp=null;
	if (window.XMLHttpRequest)
	{
		//code for IE7+, Firefox, Chrome, Opera, Safari
		xmlHttp = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		//code for IE6, IE5
		try
		{
		xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {alert (e.description);}
	}
	return xmlHttp;
}
Votes + Comments
very helpful thankyou
0

nope that didnt do it.

Im wondering might it be something to do with the submit button i'm using, could it be the syntax as i know firefox is a lot stricter than explorer.
I used the w3schools example in firefox with it using onchange and only one variable being passed and that worked fine. Kept the one variable but called it using a button and it wouldnt do it.

My button looks like

<FORM name="myForm">
<INPUT type="text" readonly name="MyDate2" value="Calender" size="15" onClick="GetDate(this);">

<select name="Classification2">
<option value="Accountants">Accountants</option>
<option value="Aerial Services">Aerial Services</option>
</select>

<button name="Search" value="radio1" onClick="showupdate();">What's On?</button>

<br>

</form>

---then theres my show update function---

function showupdate(str)
{
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
{
alert ("Browser does not support HTTP Request")
return
}
var var1 = document.myForm.MyDate2.value;
var var2 = document.myForm.Classification2.value;
var url="getupdatePromo5.php";
url+="?q="+var1;
url+="&p="+var2;
url+="&sid="+Math.random();
xmlHttp.onreadystatechange=stateChanged;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}

grateful for any help as always

Tom.

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.