Jump to content
php.lv forumi

PHP un Ajax


Parasts cilvēks

Recommended Posts

Hello!

 

Galvenais jautājums būtu, kapēc ajaxRequest strādā uz Firefox, Chroma , bet nestrādā uz IE :(

 

Lieta tāda, datubāzē ir riepu saraksts ar izmēriem (195/65 R15, 205/55 R16 utt...) gribējas uztaisīt tā, lai piemēram formā ievadot platumu, augstumu mēs varam izvēlēties tikai to, kas atbilst tam platumam, un pēc tam izvēlēties austumu, mēs varam izvēlēties tikai tādu diametru, kas atbilst izvēlētajam platumam un augstumam.

 

Itkā viss tika uztaisīts un likās, ka ir ok, bet tad kad mēģināju veikt izvēli IE, tad sapratu, ka nekas nesanāk :(

 

Šeku reku links un to garadarbu: TEST

 

Lai būtu vairāk saprotami pielieku klāt index failu:

 


<?php
include ("bd.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" xml:lang="lv" lang="lv">
<head>

<title>Tests</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf8" /> 

<script>
function parbaude(parentName,childName)
{
if(document.getElementById(parentName).options[document.getElementById(parentName).selectedIndex].value != "--")
{
	document.getElementById(childName).disabled = false;
}
}

//Browser Support Code
function ajaxFunction(name){

var ajaxRequest;  // The variable that makes Ajax possible!


//Meklee iznjemumu
try{ //try ir bloks, kur liek, kur jaameklee kljuda
	// Opera 8.0+, Firefox, Safari
	ajaxRequest = new XMLHttpRequest();
} catch (e){ //catch kjer kljuudas
	// Internet Explorer Browsers
	try{
		ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		try{
			ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (e){
			// Something went wrong
			alert("Your browser broke!");
			return false;
		}
	}
}

// Create a function that will receive data sent from the server
ajaxRequest.onreadystatechange = function(){
	if(ajaxRequest.readyState == 4){
	  if(name == 'augstums')
	  {
		var ajaxDisplay = document.getElementById(name);
		ajaxDisplay.innerHTML = ajaxRequest.responseText;
	  }
	  else if(name == 'diametrs')
	  {
	   var ajaxDisplay = document.getElementById(name);
		ajaxDisplay.innerHTML = ajaxRequest.responseText;
	  }
	  else
	  {
		alert('kljuda ieksh ajaxrequest.readyState.');
	  }

	}
}

var augstums = document.getElementById("augstums").options[document.getElementById("augstums").selectedIndex].value;
var platums = document.getElementById("platums").options[document.getElementById("platums").selectedIndex].value;
var diametrs = document.getElementById("diametrs").options[document.getElementById("diametrs").selectedIndex].value;
if(name == 'augstums')
{
	var queryString = "?platums=" + platums;
} 
else if(name == 'diametrs')
{
	var queryString = "?platums=" + platums + "&augstums=" + augstums;
}
var strings = "apstrade.php" + queryString;
ajaxRequest.open("GET", strings, true);
ajaxRequest.send(null); 
}
</script>


</head>

<body>

<form name="forma" action="" method="post">

Platums:
<select id="platums" name="platums" onchange="parbaude('platums','augstums');ajaxFunction('augstums')">
 <option value="--">--</option>
 <?php
 $platt = mysql_query("SELECT platums FROM vieglas_riepas GROUP BY platums") or die('neselektee1');
 while ($plat = mysql_fetch_array($platt))
 {
  echo '<option value="'.$plat["platums"].'">'.$plat["platums"].'</option>';
 }


 ?>
</select>

Augstums:
<select id="augstums" name="augstums" onchange="parbaude('augstums','diametrs');ajaxFunction('diametrs')" disabled="true">
 <option value="--">--</option>
</select>		

Diametrs:
<select id="diametrs" name="diametrs" onchange="parbaude('diametrs','Button')" disabled="true">
 <option value="--">--</option>
</select>		

<input type="submit" id="Button" value="Pievienot" disabled="true" />
</form> 

<?php
if (isset ($_POST['platums'])) {$platums = $_POST['platums'];} else {$platums = "";}
if (isset ($_POST['augstums'])) {$augstums = $_POST['augstums'];} else {$augstums = "";}
if (isset ($_POST['diametrs'])) {$diametrs = $_POST['diametrs'];} else {$diametrs = "";}


echo '<br><br><br>Platums: '.$platums.' <br> Augstums: '.$augstums.' <br> Diametrs: '.$diametrs.'<br>';

?>
</body>

 

Un apstrādes failu, kurš apstrādā tos dartus

 


<?php

include ("bd.php");


if(isset($_GET['platums']) && isset($_GET['augstums']))
{
$platums = $_GET['platums'];
$augstums = $_GET['augstums'];
$results = mysql_query("SELECT diametrs AS value FROM vieglas_riepas WHERE platums='$platums' AND augstums='$augstums' GROUP BY diametrs") or die('neselektee1');

}
else if(isset($_GET['platums']))
{
$platums = $_GET['platums'];
$results = mysql_query("SELECT augstums AS value FROM vieglas_riepas WHERE platums='$platums' GROUP BY augstums") or die('neselektee1');  
}
$toString = "<option>--</option>";
while($row = mysql_fetch_array($results))
{
	$toString .= "<option value='".$row["value"]."'>".$row["value"]."</option>";
} 

echo $toString;

?>

 

Varbūt ir kaut kāda citādāka iespēja veikt šādu lietiņu...

 

Jau iepriekš, paldies!

Link to comment
Share on other sites

  • Replies 35
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Dievs žēlīgs, tak neliec te tādus koda blāķus!

Priekš tā ir domāts http://paste.php.lv

 

Neiedziļinājos tavā kodā, bet noteikti ieteiktu pamēģināt jQuery (http://jquery.com/)

Tur darbs ar ajaxu ir ļōti atvieglots, nekā rakstot pašam to visu..

 

Vēlāk nevarēsi saprast, kā spēji bez tā dzīvot ;) Un galvenais - saderība uz visiem pārlūkiem!

Edited by briedis
Link to comment
Share on other sites

vajag likt tikai to kodu kas attiecas uz problēmu, nevis sazin kkādas tur riepas. ja uz ie nevar uztaisīt ajax requestu, tad uztaisi vienu mazu button vai link, kas taisa ajax request un tad ieposto šeit to kodu kas nestrādā. bet tu iekopē 90% koda, kas vsp neattiecas uz tavu problēmu!!!

Link to comment
Share on other sites

looool, un problēmai vsp nav nekāda sakara ar ajax!!! :D:D:D

 

ie browseriem select taga options nevar nomainīt ar innerHTML. ir jāmaina pats select tags. tb to <select> ieliec iekš

<div id="tavs-dropdown-wrapperis"><select>...</select></div>

un maini

document.getElementById("tavs-dropdown-wrapperis").innerHTML = "<select>...</select>";

Edited by 2easy
Link to comment
Share on other sites

Es gan teiktu, ka forši, ka kāds pats ņemas.

+1

 

Nē, nu tā jau ir. Labi jau ir vienreiz izprast, kas tam lācītim vēderā.

+1

 

Bet pēc tam pie jQuery.

tikai tad, ja tam ir pietiekami liela pievienotā vērtība ;)

Link to comment
Share on other sites

uzrakstīt savu browseru neatkarīgu httpGet() ir ~10x īsas rindiņas (salīdzinot ar jquery bibliotēku, kura sver desmitiem kilobaitu). un pēc tam to izsaukt arī ir tikai 1x rindiņa ;)

Edited by 2easy
Link to comment
Share on other sites

yep, tā protams ir laba lieta ;) varēji jau pie reizes ielikt arī linku, lai visi zin (kas vēl nezin)

http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js

starp citu, kad jūs inklūdojat jquery no googles, google zinās jūsu lapas apmeklētāju ip un lapu, ko tie apmeklē. līdz ar to šis ir kārtējais veids, kā google var ievākt statistiku par apmeklētājiem :D:D:D

Edited by 2easy
Link to comment
Share on other sites

Ļoti atvainojos par garo godu un visu pārējo...

 

Tā kā neesmu nekāds baigais spečoks, tad man grūti iebraukt tajā visā. Šito garo kodu man arī palīdzēja uztaisīt.

 

Varbūt varētu atsūtīt kādu linku, kur varētu būts kāds tutorial, kur es varētu paskatīties, kā es to visu varētu dabūt gatavu izmantojot jQuery...

 

Vai varbūt ja tas rakstāms pāris rindiņās, var uzrakstīt...

 

Paldies!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...