ajax + php problem

Programovacie jazyky, rady, poradňa...
pavol71
Amateur
Amateur
Príspevky: 22
Registrovaný: 06 mar 2011, 16:46

ajax + php problem

Príspevok od používateľa pavol71 »

Odosielam formulár cez ajax no problém je v tom, že mi to odošle vždy iba prvý formulár a ostatné akoby ignoruje :? neviem si s tým radí nevedel by mi niekto povedať, kde môžem mať chybu alebo ako docieliť aby mi to odosielalo aj viac formulárov ??

spracovanie_skript.php

Kód: Vybrať všetko

<?php
  $q=$_GET["serial"];
  $meno=$_GET["meno"];
  $image=$_GET["image"];
  $popis=$_GET["popis"];
  
  include("config.php");
  login();
  
  $user = $_SESSION["user"];
  
  $conn = mysql_connect($mysql_server,$user_db,$pass_db) or die(mysql_error());
  $db = mysql_select_db($mysql_db) or die(mysql_error());

  $query2 = mysql_query("SELECT * FROM postavy WHERE meno='$meno'");
  if(mysql_num_rows($query2)==0){
  $query = mysql_query("INSERT INTO postavy(serial,meno,image,popis) VALUES('$q','$meno','$image','$popis')");
  }

    
  echo $meno; echo $image; echo $popis;
?>

skript.php

Kód: Vybrať všetko

<script type="text/javascript">
function ajaxFunction(){
	var ajaxRequest;  // The variable that makes Ajax possible!
	
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// 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){
			document.myForm.time.value = ajaxRequest.responseText;
		}
	}
	var meno = document.getElementById("meno").value;
	var serial = document.getElementById("serial").value;
           var url_image = document.getElementById("url_image").value;
           var popis = document.getElementById("popis").value; 
	var queryString = "?meno=" + meno + "&serial=" + serial + "&image=" + url_image + "&popis=" + popis;
	ajaxRequest.open("GET", "postava.php" + queryString, true);
	ajaxRequest.send(null); 
}

//-->
</script>
 


<?php
  $id = $_GET["id"];

  if($id==""){
    echo "chyba";
  }

  include("config.php");
  login();
  
  $conn = mysql_connect($mysql_server,$user_db,$pass_db) or die(mysql_error());
  $db = mysql_select_db($mysql_db) or die(mysql_error());
  
  $query = mysql_query("SELECT id,obsadenie FROM serialy WHERE id=$id");
  $row = mysql_fetch_array($query);
  
  $obsadenie = $row["obsadenie"];
  
  $ex = explode("<br>",$row["obsadenie"]);
?>

<?
  for($i=0;$i<count($ex);$i++) {
  $query2 = mysql_query("SELECT * FROM postavy WHERE serial=$id AND meno='".$ex[$i]."'") or die(mysql_error());
  $row2 = mysql_fetch_array($query2);
  
  if($ex[$i]==$row2["meno"]){
    echo $ex[$i]; echo "<br>";
  }else{
  ?>
                  
  

<form name="myForm">
<input type="hidden" id="meno" name="meno" value="<?=$ex[$i]?>">
<input type="hidden" id="serial" name="serial" value="<?=$row["id"]?>">
<br>            
         
       <div id="txtHint"><b></b></div>

<input type="text" id="url_image" name="url_image" value="<?=$row2["image"]?>">
<br>
<textarea rows="2" cols="20" id="popis"><?=$row2["popis"]?></textarea>
<br>
<img src="button.jpg" id="<?=$row["id"]?>" name="<?=$ex[$i]?>" onclick="ajaxFunction()">
</form>
<?}}?>
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: ajax + php problem

Príspevok od používateľa audiotrack »

nechápem tvojmu popisu že odošle iba prvý. Veď tam máš iba jeden formulár, tak aké ostatné ignoruje?
pavol71
Amateur
Amateur
Príspevky: 22
Registrovaný: 06 mar 2011, 16:46

Re: ajax + php problem

Príspevok od používateľa pavol71 »

mám tam cyklus for čiže tých formulárov tam je viac v mojom prípade 2 no môže byť aj 10 a proste ja to dám odoslať napríklad ten druhý a on mi aj tak odošle len prvý
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: ajax + php problem

Príspevok od používateľa audiotrack »

nie, nemas ich viac ale len jeden. Cyklus tam sice mas, a vykresli ti ich teda viac, ale vsetky maju elementy rovnakych mien a id, takze technicky je to jeden formular nakopirovany pod seba viackrat. A ked das v javaskripte getElementById tak ti zoberie len prvu hodnotu
pavol71
Amateur
Amateur
Príspevky: 22
Registrovaný: 06 mar 2011, 16:46

Re: ajax + php problem

Príspevok od používateľa pavol71 »

audiotrack napísal:nie, nemas ich viac ale len jeden. Cyklus tam sice mas, a vykresli ti ich teda viac, ale vsetky maju elementy rovnakych mien a id, takze technicky je to jeden formular nakopirovany pod seba viackrat. A ked das v javaskripte getElementById tak ti zoberie len prvu hodnotu
aha myslel som si, že to nejak tak bude preto som chcel tam dať do toho form niečo také <form name="myForm<?=$i?>"> tým pádom by mal každý form svoje číslo len potom neviem ako to urobiť do toho ajaxu :roll: fakt by som potreboval vedieť ako to vyriešiť štvem sa s tým už niekoľko hodín :(
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: ajax + php problem

Príspevok od používateľa audiotrack »

tie formuláre môžeš nechať ako chceš. Každý pomenovať inak je hlúposť, práve pre to že narazíš na problémy pri javascripte. Radšej uprav tú funkciu takto:

Kód: Vybrať všetko

function ajaxFunction(form){
.
.
var meno = form.meno.value;
.
.
.
a volanie bude onclick="ajaxFunction(this.parentNode)"
pavol71
Amateur
Amateur
Príspevky: 22
Registrovaný: 06 mar 2011, 16:46

Re: ajax + php problem

Príspevok od používateľa pavol71 »

audiotrack napísal:tie formuláre môžeš nechať ako chceš. Každý pomenovať inak je hlúposť, práve pre to že narazíš na problémy pri javascripte. Radšej uprav tú funkciu takto:

Kód: Vybrať všetko

function ajaxFunction(form){
.
.
var meno = form.meno.value;
.
.
.
a volanie bude onclick="ajaxFunction(this.parentNode)"
funguje to 8) diky moc strašne moc mňa by to nenapadlo určite takto urobiť

//autoeditácia príspevku (05 Jan 2012, 14:17)
trochu som upravil php kód a opäť mi to nefunguje :(

spracovanie_skriptu.php

Kód: Vybrať všetko

<?php
  $q=$_GET["serial"];
  $meno=$_GET["meno"];
  $image=$_GET["image"];
  $popis=$_GET["popis"];
  
  session_start();
  include("config.php");
  login();
  
  $user = $_SESSION["user"];
  
  $conn = mysql_connect($mysql_server,$user_db,$pass_db) or die(mysql_error());
  $db = mysql_select_db($mysql_db) or die(mysql_error());

  $query2 = mysql_query("SELECT * FROM postavy WHERE meno='$meno'");
  if(mysql_num_rows($query2)==0){
  $query = mysql_query("INSERT INTO postavy(serial,meno,image,popis) VALUES('$q','$meno','$image','$popis')");
  }

    
  echo $meno; echo $image; echo $popis;
?>
skript.php

Kód: Vybrať všetko

<?php
  session_start();
  include("config.php");
  login();
  require_once("include_header.php");
  require_once("include_menu.php");
?>
<script type="text/javascript">
function ajaxFunction(form){
	var ajaxRequest;  // The variable that makes Ajax possible!
	
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// 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){
			document.myForm.time.value = ajaxRequest.responseText;
		}
	}
	var meno = form.meno.value;
	var serial = form.serial.value;
  	var image = form.image.value;
	var popis = form.popis.value; 
	var queryString = "?meno=" + meno + "&serial=" + serial + "&image=" + image + "&popis=" + popis;
	ajaxRequest.open("GET", "postava.php" + queryString, true);
	ajaxRequest.send(null); 
}

//-->
</script>
<div id="page"> 
<?php
  $id = $_GET["id"];

  if($id==""){
    echo "chyba";
  }
  
  $conn = mysql_connect($mysql_server,$user_db,$pass_db) or die(mysql_error());
  $db = mysql_select_db($mysql_db) or die(mysql_error());
  
  $query = mysql_query("SELECT id,postavy FROM serialy WHERE id='".$id."'");
  $row = mysql_fetch_array($query);
  
  $postavy = $row["postavy"];;
  
  $ex = explode("<br>",$postavy);

  for($i=0;$i<count($ex);$i++) {
  $query2 = mysql_query("SELECT * FROM postavy WHERE serial='".$id."' AND meno='".$ex[$i]."'") or die(mysql_error());
  $row2 = mysql_fetch_array($query2);
  
  if($ex[$i]==$row2["meno"]){
    echo $ex[$i]; echo "<br>";
  }else{
?>  
<form name="myForm">
		<input type="hidden" id="meno" name="meno" value="<?=$ex[$i]?>">
		<input type="hidden" id="serial" name="serial" value="<?=$row["id"]?>">
<b><?=$ex[$i]?></b>
<br>            
         
       <div id="txtHint"><b></b></div>

<table>
	<tr>
		<td>URL adresa obrázka postavy:</td>
		<td><input type="text" id="image" name="image" value="<?=$row2["image"]?>"></td>
	</tr>
	<tr>
		<td>Charakteristika:</td>
		<td><textarea rows="3" cols="35" id="popis"><?=$row2["popis"]?></textarea></td>
	</tr>
	<tr>
		<td></td>
		<td><img src="button.jpg" id="<?=$row["id"]?>" name="<?=$ex[$i]?>" onclick="ajaxFunction(this.parentNode)"></td>
	</tr>
</table>
</form>
<?}}?>
</div>
<? require_once("include_footer.php"); ?>  
Napísať odpoveď