JavaScript Variablen übergeben für Insert Into..

-Rayz-

Lieutenant
Registriert
Okt. 2010
Beiträge
897
So dann versuche ich mal mein Problem zu beschreiben. Ich habe eine index.php auf der auch meine Navigation ist.
PHP:
$(document).ready(function() {

		$('#content').load("login.php","")		

			$("#menu li a").click(function(){
				$contentToLoad = $(this).attr("href");
				$varToLoad = $(this).attr("var");
				$('#content').load($contentToLoad+".php?varToLoad="+ $varToLoad, "")				
				return false;
			})			
	});

und hier wäre der Beispiellink der auf der gleichen Seite ist:

PHP:
<li><a var="faculty"href="hinzufuegen">Hinzufügen</a></li>

Ich übergebe also var = faculty und die Seite hinzufuegen.php wird geöffnet. Hier speicher ich die Variable dann:

PHP:
$varToLoad = $_GET['varToLoad'];

Ich zeige am besten mal den komplette Code der Seite hinzufuegen.php ( ist aber noch alles durcheinander)

PHP:
<?php
	require_once('checkuser.php');
	require_once('dbconnect.php');		

?>
<head>
	<metacontent="text/html; charset=ISO-8859-1">
</head>

<script type="text/javascript">
	
	$("#stud").click(function(){		
		$('#content').load("hinzufuegen.php?var=0","")
	});
	$("#prof").click(function(){		
		$('#content').load("hinzufuegen.php?var=1","")
	});
	$("#form").click(function(){
		$sql = $(this).attr("var");
		var name = $('input[name=fa_name]');		
		var lastname = $('input[name=lastname]');
		var firstname= $('input[name=firstname]');
		var studentnumber = $('input[name=matricul]');
		var street = $('input[name=street]');
		var postcode= $('input[name=plz]');	
		var city = $('input[name=city]');
		var phone= $('input[name=phone]');	
		var email= $('input[name=email]');	
		var data = 'lastname=' + lastname.val() + '&firstname=' + firstname.val() + '&studentnumber=' + studentnumber.val() +
					'&street=' + street.val() + '&postcode=' + postcode.val() + '&city=' + city.val() + 
					'&phone=' + phone.val() + '&email=' + email.val() + '&fa_name=' + name.val() + '&sql=' + $sql;
		
		if(lastname.val() !="" && firstname.val() != ""){
			
			$.ajax({
				type: "POST",
				url: "hinzufuegen.php?Form=sent",
				data: data,
				success: function(data){
					$("#content").html(data);
				}
			});
		}
		else{
			alert("Fehlende Eingabe");
		}
		return false;
	});
	
	$("#button").click(function(){
		
		$('#content').load("hinzufuegen.php","")
		
	});
</script>
<?php
	$a = array("Student","Professor");	
		
	$Form = $_GET['Form'];	
	$var = $_GET['var'];
	$varToLoad = $_GET['varToLoad'];
	$sql = $_POST['sql'];
	echo $sql;
	$fa_name = $_POST['fa_name'];
	$firstname = $_POST['firstname'];
	$lastname =$_POST['lastname'];
	$studentnumber = $_POST['studentnumber'];
	$street =$_POST['street'];
	$postcode = $_POST['postcode'];
	$city =$_POST['city'];
	$phone = $_POST['phone'];
	$email =$_POST['email'];	
	
	if($fa_name != ""){$sqlcont ="name"; $sqlvalue=$fa_name; $varToLoad ="faculty";}
	if($fistname != ""){$sqlcont= array("Student","Professor");}
	
	if($Form != "sent"){	
	
?>

<form method="post" action="">
		<div id="formular">
		<?php if($varToLoad == "faculty"){?>			
			<table>
				<tr>
					<td colspan="2" style="background-color:#d8d8d8; padding:5px;"><b>Name der Fakult&auml;t</b></td>	
				</tr>
				<tr>
					<td><input type="text"  var ="faculty" name="fa_name" style="width:300px;"></td>
				</tr>
			</table>
		<?php }else{ ?>
			<b style="background-color:#d8d8d8; padding:5px;">Person ausw&auml;hlen</b>
			<p>
				<input id="stud" type="radio" name="person" value="1" <?php if($var == "0"){echo "checked";} ?> >Student<br>
				<input id="prof" type="radio" name="person" value="2" <?php if($var == "1"){echo "checked";} ?> >Professor<br>
			</p>
			<table>
				<tr>
					<td colspan="2" style="background-color:#d8d8d8; padding:5px;"><b>Neuen <?php echo $a[$var] ?> eintragen</b></td>
				</tr>
				<tr>
					<td >Name*: </td>
					<td><input type="text" name="lastname" style="width:300px;"></td>
				</tr>
				<tr>
					<td >Vorname*: </td>
					<td><input type="text" name="firstname" style="width:300px;"></td>
				</tr>				
				<tr>
					<td style="vertical-align:top;">Fachbereich*: </td>
					<td style="text-align:left;">
					
					</td>
				</tr>
    			<tr><td>&nbsp;</td></tr>
				<?php if($var == "0"){ ?>
    			<tr>
    				<td colspan="2" style="background-color:#d8d8d8; padding:5px;"><b>Weitere Informationen</b></td>
    			</tr>				
    			<tr>
    				<td >Matrikel-Nr.: </td>
    				<td><input type="text" name="matricul" style="width:300px;"></td>
    			</tr> 
				<?php
				} ?>
   				<tr><td>&nbsp;</td></tr>
    			<tr>
    				<td colspan="2" style="background-color:#d8d8d8; padding:5px;"><b>Optionale Informationen</b></td>
    			</tr>	
    			<tr>
					<td>Strasse: </td>
					<td><input type="text" name="street" style="width:300px;"></td>
				</tr>
				<tr>
					<td>Plz: </td>
					<td><input type="text" name="plz" style="width:300px;"></td>
				</tr>
				<tr>
					<td>Ort: </td>
					<td><input type="text" name="city" style="width:300px;"></td>
				</tr>
				<tr>
					<td>Telefon: </td>
					<td><input type="text" name="phone" style="width:300px;"></td>
				</tr>   
				<tr>
					<td>Email: </td>
					<td><input type="text" name="email" style="width:300px;"></td>
				</tr>
				<?php } ?>
   				<tr><td>&nbsp;</td></tr>
   				<tr>
   					<td colspan="2"><input id="form" type="submit" value="Speichern">
   									<input type="reset"></td>
   				</tr>
   				<tr><td>&nbsp;</td></tr>
   				<tr>
   					<td><?php if($varToLoad!= "faculty"){ echo "*Pflichtangaben";} ?></td>
   				</tr>
			</table>
		</div>
		</form>
<?php		
}
if ($Form == "sent"){	

	echo " Erfolgreich gespeichert";	
	
	$query = "INSERT INTO $varToLoad($sqlcont)
					VALUES ('$sqlvalue')";
	
	$result = mysql_query($query);
	
		
	?>
	<button id="button">weitere Person eintragen</button>
	<?php
}
?>


wenn varToLoad = hinzufuegen ist, öffnet sich nur ein Teil des Formulars. Hier gibt man dann den Namen der Fakultät an welcher dann in einer Datenbank gespeichert wird. Beim klicken auf den Button wird die Seite ja neu geladen und der Inhalt von varToLoad geht mir verloren. Nun habe ich im Formular einfach "var=faculty" angegeben wenn varToLoad = faculty ist. Diesen Inhalt wollte ich nun im Script speichern und beim klick auf den Button versenden.

PHP:
$sql = $(this).attr("var");

und hier wirds in data gespeichert:
PHP:
var data = ....+ '&sql=' + $sql;

hier abgeschickt:

PHP:
$.ajax({
				type: "POST",
				url: "hinzufuegen.php?Form=sent",
				data: data, ...

und hier sollte die Variable gespeichert werden:

PHP:
$sql = $_POST['sql'];

Ausgegeben hab ich es danahc mit echo allerdings kommt dann nur:"undefined".

Sinn der ganzen Sache soll eigendlich sein, dass ich aus den ganzen Variablen mir mein Insert into zusammenbasteln kann.

PHP:
	$query = "INSERT INTO $sql($sqlcont)
					VALUES ('$sqlvalue')";
	
	$result = mysql_query($query);

Das diente nur als Test und ist noch nicht angepasst. In $sql steht dann z.B. die Tabelle drin. In diesem Fall :"faculty". Aber ich krieg die Variable nicht übergeben. Ich hoffe, dass irgendwer überhaupt versteht was ich machen möchte. Evtl. geht die ganze Geschichte ja viel einfacher aber mir fällt nicht ein wie.
 
Laß dir mal, bevor du ajax() aufrufst, den Inhalt von $sql anzeigen. Vielleicht ist dein Browser ja ein DOM-Purist, der beim Parsen alles, was nicht zum Standard gehört (so wie das var-Attribut bei <a>), rausschmeißt?

Nur am Rande - warum "$sql" und nicht einfach "var sql"? :)
 
Oder einfach Firebug verwenden. Da kannste breakpoints setzen und siehst die vollständigen Ajax-Request.
 
Wenn ich es mit var sql mache und dann per val() übergebe wird das Skript erst gar nicht aufgerufen.. scheint dann wohl ein Fehler im Code zu sein. Im Firebug steht $sql auch nur als undefined drin. Aber kann ich denn nicht einfach:

PHP:
url: "hinzufuegen.php?Form=sent",

hier die Variable mit übergeben? Ich weiß nur nicht wie die Syntax ist.

PHP:
 url: "hinzufuegen.php?Form=sent&sql="+$sql,

funktioniert nämlich nicht.

Edit:

PHP:
url: "hinzufuegen.php?Form=sent&sql=$sql",

hier wäre der Inhalt übrigens $sql ^^ aber das soll ja nicht sein.. möcht ja den Inhalt haben

Edit2:

PHP:
url: "hinzufuegen.php?Form=sent&sql="+ name.val(),

so steht der Inhalt von "name" in sql und wird auch richtig übertragen. ABER wenn ich es mit val() machen will klappt es nicht mehr.

PHP:
var sql = $(this).attr("var");

irgendwie geht das nicht..
Ergänzung ()

Keiner mehr eine Idee? Ich könnte auch für jeden Eintrag im Formular eine Variable anlegen aber das mag ich so nicht machen da es ja bestimmt besser geht ^^
Ergänzung ()

Verdammt -_- dann muss ich wohl für alles eine eigene Variable nehmen wenn keiner eine bessere Idee hat.
 
Zuletzt bearbeitet:
Zurück
Oben