PHP INSERT INTO klappt irgendwie nicht -.-

raven16

Lieutenant
Registriert
Nov. 2008
Beiträge
580
Hay, ich weiß nicht ob ich grad zu doof bin dafür aber ich frage mich warum mein eintragen in die Datenbank nicht klappt xD

PHP:
	<div class="eintragen">
		<form action="freizeitpark_eintragen.php" method="post">
			<label>Sie haben sich noch nicht in die Liste eingetragen?</label><br>
			<br>
			<label>*Name:  </label>	<input type="text" name="name"><br>
			<br>
			<label>*Wohnort:</label>	<input type="text" name="wohnort"><br>
			<br>
			<label>*Auto</label>
			<select name="auto">
				<option>Nein</option>
				<option>Ja</option>
			</select><br>
			<br>
			<label>Bemerkung:</label><textarea class="bemerkung" name="bemerkung"></textarea><br>
			<br>
			<input type="submit" name="newperson" value="Eintragen">
		</form>
		<label>Felder mit <b>*</b> müssen ausgefüllt werden.</label><br>
		<br>
		<a href="freizeitpark.php">Zurück</a>
	</div>
</body>
</html>			

<?php
	if(isset($_POST['newperson']))
	{
		if((!empty($_POST['name'])) && (!empty($_POST['wohnort'])))
		{
			connect();
			$check = mysql_query("SELECT name FROM freizeitpark
								WHERE name='".mysql_real_escape_string($_POST['name'])."'
								");
			$row = mysql_fetch_object($check);
			if($row->name == $_POST['name']) echo'<b>Name schon vorhanden!</b>';
			else
			{
				connect();
				$name = mysql_real_escape_string($_POST['name']);
				$wohnort = mysql_real_escape_string($_POST['wohnort']);
				$auto = mysql_real_escape_string($_POST['auto']);
				$bemerkung = mysql_real_escape_string($_POST['bemerkung']);

				$result = mysql_query("INSERT INTO freizeitpark (name,wohnort,auto,beifahrer,bemerkung)
						VALUES('".$name."','".$wohnort."','".$auto."','','".$bemerkung."')" or die(mysql_error())); 
				if($result) echo'<b>Neuer Name hinzugefügt!</b><meta http-equiv="refresh" content="2; URL=freizeitpark_bearbeiten.php">';
				else echo'<b> Eintrag konnte nicht hinzugefügt werden.</b>';
			}
		}
		else echo'<b>Bitte alle Angaben mit * aufüllen!</b>';
	}

Wenn ich die Abfrage so in phpmyadmin eingebe und die Werte eingebe wofür die Variablen stehen sollen, dann funktioniert sie...

Irgendwie hab ich da nen Fehler eingebaut :(
 
Code:
[COLOR=Black]$result = mysql_query("INSERT INTO freizeitpark (name,wohnort,auto,beifahrer,bemerkung) 
                        VALUES('".$name."','".$wohnort."','".$auto."','','".$bemerkung."')" or die(mysql_error()));[/COLOR]

Wenn du das "die(mysql_error)" aus dem mysql_query-Aufruf rausnimmst, könnte es laufen:
Code:
[COLOR=Black]$result = mysql_query("INSERT INTO freizeitpark (name,wohnort,auto,beifahrer,bemerkung) 
                        VALUES('".$name."','".$wohnort."','".$auto."','','".$bemerkung."')") or die(mysql_error());[/COLOR]
 
Jo danke klappt ^^

Hab aber nun auch nen neues Problem xD:
PHP:
if(isset($_POST['newbeifahrer']))
	{
		if(($_POST['name']!='bitte wählen...') && ($_POST['beifahrer']!='bitte wählen...'))
		{
			connect();
			//Hier werden alle Beifahrer rausgesucht, die der Fahrer bisher hat...
			$get_beifahrer = mysql_query("SELECT beifahrer FROM freizeitpark
										WHERE name='".$_POST['name']."'");
			if($get_beifahrer)
			{
				$row_beifahrer = mysql_fetch_object($get_beifahrer);
				//Hier soll der neue Fahrgast zu den anderen Fahrgästen verknüpft werden...
				$new_beifahrer = $row->beifahrer.'-'.$_POST['beifahrer'];
				//Alte Fahrgäste + Neuen Fahrgast in die Datenbank schreiben...
				$update_beifahrer = mysql_query("UPDATE freizeitpark
												SET beifahrer='".mysql_real_escape_string($new_beifahrer)."'
												WHERE name='".$_POST['name']."'");
			}
			else echo 'Abfrage $get_beifahrer funktioniert nicht.';
			if($update_beifahrer)
			{
				//Ausgewählten Fahrgast löschen, da dieser nun bei dem Fahrer drin steht...
				$delete = mysql_query("DELETE * FROM freizeitpark
										WHERE name='".mysql_real_escape_string($_POST['beifahrer']."'"));
				echo '<b>Fahrgast erfolgreich hinzugefügt.</b><meta http-equiv="refresh" content="2; URL=freizeitpark_bearbeiten.php">';
			}
			else echo 'Abfrage $delete_beifahrer funktioniert nicht.';
		}
		else echo'<b>Bitte Name und Fahrgast wählen.</b>';
	}

Wenn bei mir der Fahrer einen Fahrgast auswählt, dann soll dieser zu den Beifahrern des Fahrers hinzugefügt werden...

Aber das verknüpfen der Fahrgäste, die bereits eingetragen worden sind vom Fahrer und dem neuen Fahrgast, klappt nicht...

Und wenn der Fahrgast hinzugefügt worden ist zu den Beifahrern des Fahrers, dann soll der Fahrgast gelöscht werden, weil dieser nun überflüssig ist und nun dann bei den Beifahrern des Fahrers steht und erfolgreich einen Fahrplatz bekommen hat...

schauts euch am besten hier an

Ich möchte, wenn ich Hiller und Binder zu dem Fahrer mumu hinzufüge, nun beide namen oben in der Tabelle gelöscht werden und unten zusammen unter Beifahrer gemeinsam stehen

Und wie kann ich die Namen mit einem Komma trennen, ohne dass vorm ersten Namen ein Komma steht?
nun würde ,Hiller,Binder angezeigt werden
Ich möchte aber , dass Hiller,Binder angezeigt wird

mfg
 
Zuletzt bearbeitet:
Dort wo du
PHP:
WHERE name='".$_POST['name']."'");
hast solltest du auch unbedingt mysql_real_escape_string verwenden! Alles was aus Userinput kommt (GET, POST, Cookies) muss grundsätzlich entweder überprüft (z.B. dass es sicher eine Zahl ist) oder eben escaped werden.

Dein Problem ist ja schon eins im Datenbankentwurf. Ich würde halt eine Tabelle Personen nehmen mit:
- PersonenID (autoincrement, Primärschlüssel)
- Name
- Vorname
- hatAuto (y oder n), Key hierauf
- FahrerID (0 wenn er schon Auto hat oder keinen Fahrer zugeordnet hat, ansonsten eben die PersonenID des Fahrers), Key hierauf

Über entsprechende SQL-Join-Abfragen kann man alles dann sehr schön lösen. Du brauchst dann z.B. in der oberen Tabellen keinen löschen sondern nur eine Abfrage mit hatAuto=n und FahrerID=0. In der unteren wäre es am Einfachsten wenn du eine normale Query nach hasAuto=y machst und dann pro Zeile eine zusätzliche Abfrage nach den Beifahrern erstellst (Abfrage mit where FahrerID = PersonenID). Über ne Subquery oder Join wirds wohl bisschen schwierig für den Anfang und solange du kein Großprojekt baust reicht das auch performancemäßig ;)
Aber du kannst sicher nicht erwarten, dass dir hier jemand eine fertige Lösung bastelt...

Und wie kann ich die Namen mit einem Komma trennen, ohne dass vorm ersten Namen ein Komma steht?
Füge einfach alle Namen zu einem Array und mach dann ein implode() mit nem Komma.
 
Zuletzt bearbeitet:
Zurück
Oben