Programovacie jazyky, rady, poradňa...
pavol71
Amateur
Príspevky: 22 Registrovaný: 06 mar 2011, 16:46
Príspevok
od používateľa pavol71 » 25 sep 2011, 13:45
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
Príspevky: 25958 Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:
Príspevok
od používateľa audiotrack » 25 sep 2011, 13:49
nechápem tvojmu popisu že odošle iba prvý. Veď tam máš iba jeden formulár, tak aké ostatné ignoruje?
pavol71
Amateur
Príspevky: 22 Registrovaný: 06 mar 2011, 16:46
Príspevok
od používateľa pavol71 » 25 sep 2011, 13:55
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
Príspevky: 25958 Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:
Príspevok
od používateľa audiotrack » 25 sep 2011, 14:19
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
Príspevky: 22 Registrovaný: 06 mar 2011, 16:46
Príspevok
od používateľa pavol71 » 25 sep 2011, 15:27
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
fakt by som potreboval vedieť ako to vyriešiť štvem sa s tým už niekoľko hodín
audiotrack
VIP
Príspevky: 25958 Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:
Príspevok
od používateľa audiotrack » 25 sep 2011, 18:41
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
Príspevky: 22 Registrovaný: 06 mar 2011, 16:46
Príspevok
od používateľa pavol71 » 05 jan 2012, 14:17
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
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"); ?>