Formularverarbeitung - wie am besten?

Vielen Dank, das anlegen hat geklappt. Nun muss ich "nur" noch das Formular in die Datenbank speichern können und anschließen jenes ausgeben. Aber das wird schon werden - Danke nochmals!

Lieben Gruß
Muckel
 
Guten Tag,

wenn ich es richtig verstanden habe, schaut der Grundbefehl so aus:
PHP:
mysql_query('INSERT INTO
                 schmerzen(schmerz_id, datum, morgens, mittags, abends, tiefst, mittel, hoechst)
             VALUES (
                 "ID",
                 "datum",
                 "morgens",
                 "mittags",
				 "abends",
				 "tiefst",
				 "mittel",
				 hoechst")
            ') or die (mysql_error());

als erstes mit schmerzen die Tabelle und danach in den Klammern die Zellen, oder? Und unter Values dann die Werte, die ich eintragen möchte. Ist das soweit richtig?

Der Wert ID soll automatisch um eines höher gehen und das datum soll automatisch erstellt werden. Bei morgens, mittags und abends möchte ich Zahlenwerte eines Formulars (select Auswahlfeld):
HTML:
<table border="1" width="80%">
		<tr>
			<td align="left">zur&uuml;ck</td>
			<td colspan="4"  align="center">Tag, d. Datum</td>
			<td align="right">vorw&auml;rts</td>
		</tr>
		<tr  align="center">
			<td>Morgens</td>
			<td>Mittags</td>
			<td>Abends</td>
			<td>H&ouml;chstwert</td>
			<td>Mittelwert</td>
			<td>Tiefstwert</td>
		</tr>
		<tr  align="center">
			<td><select name="morgens">
					<option>1</option>
					<option>2</option>
					<option>3</option>
					<option>4</option>
					<option>5</option>
					<option>6</option>
					<option>7</option>
					<option>8</option>
					<option>9</option>
					<option>10</option>
				</select></td>
			<td><select name="mittags">
					<option>1</option>
					<option>2</option>
					<option>3</option>
					<option>4</option>
					<option>5</option>
					<option>6</option>
					<option>7</option>
					<option>8</option>
					<option>9</option>
					<option>10</option>
				</select></td>
			<td><select name="abends">
					<option>1</option>
					<option>2</option>
					<option>3</option>
					<option>4</option>
					<option>5</option>
					<option>6</option>
					<option>7</option>
					<option>8</option>
					<option>9</option>
					<option>10</option>
				</select></td>
			<td>wird berechnet</td>
			<td>wird berechnet</td>
			<td>wird berechnet</td>
		</tr>
	</table>
entgegen nehmen. Wie übernehme ich dann die Felder dieses Formulars? (Das Formular als solches geht an die speichern.php
HTML:
<form action="speichern.php" method="post" accept-charset="ISO-8859-1">

Kann ich mit php die Werte für mittel (=Mittelwert), hoechst (=Höchstwert) und tiefst (=Tiefstwert) berechnen und auch gleich eintragen lassen?

Ich weiß, viele Fragen - hoffe sehr, dass ihr mir helfen könnt.
Gruß und vielen Dank
Muckel
 
Das Feld ID ist auto_increment, also wird es automatisch um 1 erhöht wenn du NIX einträgst, also einfach leer lassen =)

Das Feld mit dem Timestamp machst du per PhpMyAdmin einfach auf Default mit Current Timestamp, dann lässt du das Feld auch beim Füllen leer und schon ist immer der aktuelle Timestamp drin

Mittel und so weiter errechnest du einfach noch vor der Query aus den eingegebenen Daten im Script, dann einfach den errechneten Wert per Query speichern

e:/ hast da wieder einen Fehler mit der schmerzen_id, hast wieder schmerz_id geschrieben
 
Guten Tag zusammen,

ich habe nun versucht, mein Formular in die Datenbank zuspeicher. Doch leider bekam ich diesen Fehler:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' , , "4", "5", "6")' at line 5

nach dem wäre ja meine Syntax falsch, doch ich finde den Fehler nicht. Es handelt sich um diesen PHP-Code:
PHP:
$link = mysql_connect('localhost', 'user', 'passwort') or die(mysql_error());

mysql_select_db("Doku"); //Datenbank auswaehlen

mysql_query(' INSERT INTO `schmerz` (`schmerz_id`, `datum`, `morgens`, `mittags`, `abends`, `tiefst`, `mittel`, `hoechst`) 
	VALUES (
		NOW(),
		NOW(),
		'.$_[POST]['morgens'].',
		'.$_[POST]['mittags'].',
		'.$_[POST]['abends'].',
		"4",
		"5",
		"6");') or die (mysql_error());


mysql_query(' INSERT INTO `medikamente` (`medi_id`, `datum`, `Mmedikament`, `Mmorgens`, `Mmittags`, `Mabends`, `Mnachts`, `Mbedarf`) 
	VALUES (
		NOW(),
		NOW(),
		'.$_[POST]['Mmedikament'].',
		'.$_[POST]['Mmorgens'].',
		'.$_[POST]['Mmittags'].',
		'.$_[POST]['Mabends'].',,
		'.$_[POST]['Mnachts'].',
		'.$_[POST]['Mbedarf'].');') or die (mysql_error());

mysql_query(' INSERT INTO `allgemein` (`befinden_id`, `datum`, `Mmedikament`, `Mmorgens`, `Mmittags`, `Mabends`, `Mnachts`, `Mbedarf`) 
	VALUES (
		NOW(),
		NOW(),
		'.$_[POST]['Abefinden'].');') or die (mysql_error());

mysql_close ($link);
mit dem ich dieses Formular in die DB speichern möchte:
HTML:
<?php
$timestamp = time();
$datum = date("D, d.m.Y",$timestamp);
$uhrzeit = date("H:i",$timestamp);
?> 
<?php  echo "<h1>$datum</h1>"; ?>
<form action="speichern.php" method="post" accept-charset="ISO-8859-1">
<fieldset><legend>Schmerzdokumentation</legend>
	<p>Trage hier bitte ein, wie hoch Deine Schmerzen sind. Beachte dabei bitte, dass Du eine Skala von 0 bis 10 hast. 
	<em>(0=keine Schmerzen und 10=Maximale Schmerzen)</em></p>
	<table border="1" width="80%">
		<tr>
			<td align="left">zur&uuml;ck</td>
			<td colspan="4"  align="center">Tag, d. Datum</td>
			<td align="right">vorw&auml;rts</td>
		</tr>
		<tr  align="center">
			<td>Morgens</td>
			<td>Mittags</td>
			<td>Abends</td>
			<td>H&ouml;chstwert</td>
			<td>Mittelwert</td>
			<td>Tiefstwert</td>
		</tr>
		<tr  align="center">
			<td><select name="morgens">
					<option>1</option>
					<option>2</option>
					<option>3</option>
					<option>4</option>
					<option>5</option>
					<option>6</option>
					<option>7</option>
					<option>8</option>
					<option>9</option>
					<option>10</option>
				</select></td>
			<td><select name="mittags">
					<option>1</option>
					<option>2</option>
					<option>3</option>
					<option>4</option>
					<option>5</option>
					<option>6</option>
					<option>7</option>
					<option>8</option>
					<option>9</option>
					<option>10</option>
				</select></td>
			<td><select name="abends">
					<option>1</option>
					<option>2</option>
					<option>3</option>
					<option>4</option>
					<option>5</option>
					<option>6</option>
					<option>7</option>
					<option>8</option>
					<option>9</option>
					<option>10</option>
				</select></td>
			<td>wird berechnet</td>
			<td>wird berechnet</td>
			<td>wird berechnet</td>
		</tr>
	</table></fieldset>
<fieldset><legend>Medikamente</legend>
	<p>Trage hier bitte ein, welche Medikamente Du in welcher Dosis wann einnimmst.</p>
	<table border="1" width="80%">
		<tr>
			<td align="left">zur&uuml;ck</td>
			<td colspan="4"  align="center">Tag, d. Datum</td>
			<td align="right">vorw&auml;rts</td>
		</tr>
		<tr  align="center">
			<td>Medikament</td>
			<td>Morgens</td>
			<td>Mittags</td>
			<td>Abends</td>
			<td>Nachts</td>
			<td>Bedarf</td>
		</tr>
		<tr  align="center">
			<td><input name="Mmedikament" type="text" size="10"></td>
			<td><input name="Mmorgens" type="text" size="10"></td>
			<td><input name="Mmittags" type="text" size="10"></td>
			<td><input name="Mabends" type="text" size="10"></td>
			<td><input name="Mnachts" type="text" size="10"></td>
			<td><input name="Mbedarf" type="text" size="10"></td>
		</tr>
	</table></fieldset>
<fieldset><legend>Allgemeinbefinden</legend>
	<p>Beschreiben uns hier bitte, wie Du dich heute fühlst und was Dir aufgefallen ist.</p>
	<textarea name="Abefinden" cols="100" rows="15"></textarea></fieldset>
<p align="center"><input type="submit" value=" Absenden ">
<input type="reset" value=" Abbrechen "></p>
</form>

Das ich die Werte aus dem Formular mit $_['POST']['FELD'] entnehme ist doch richtig, oder?

Vielen Dank für eure Hilfe!
Lieben Gruß
Muckel
 
Hi,
Zahlenwerte ohne Anführungszeichen. Und Texte (strings) mit:
(Und das heisst $_POST und nicht $_[post])
PHP:
$sql = 'INSERT INTO
            `schmerz`
            (
                `schmerz_id`,
                `datum`,
                `morgens`,
                `mittags`,
                `abends`,
                `tiefst`,
                `mittel`,
                `hoechst`
            ) 
        VALUES
        (
            NOW(),
            NOW(),
            "'.$_POST['morgens'].'",
            "'.$_POST['mittags'].'",
            "'.$_POST['abends'].'",
            4,
            5,
            6
        )';
if( !mysql_query( $sql ) )
{
    echo mysql_error();
}
or die kannst du auch weglassen und gegen if(...) eintauschen.
 
Zuletzt bearbeitet:
Guten Tag,

vielen Dank für die schnelle Antwort. Es hat für die Tabelle schmerz auch funktioniert. Doch in der Zelle schmerz_id wird das Jahr geschrieben: 2008, was bei einer zweiten Eingabe dann einen Fehler verursacht, da die id ja schon vorhanden wäre.

Als zweites würde ich gerne wissen, wie ich das mit der zweiten und dritten Tabelle löse, kann ich einfach hinter dem:
PHP:
$sql = 'INSERT INTO `schmerz` (`schmerz_id`, `datum`, `morgens`, `mittags`, `abends`, `tiefst`, `mittel`, `hoechst`) 
    VALUES(
    NOW(),
    NOW(),
        "'.$_POST['morgens'].'",
        "'.$_POST['mittags'].'",
        "'.$_POST['abends'].'",
        4,
        5,
        6
        )';if( !mysql_query( $sql ) ) {echo mysql_error();}

nochmals mit dem 'INSERT INTO ... beginnen? Denn wenn ich das gleiche wie oben einfach kopiert habe und nur die Tabelle und dessen Felder (sowie die Formular Felder) geändert habe, hatte es nicht funktioniert.

Das mit dem $_[POST] hatte ich aus einem Buch, was ich wohl entsorgen kann.

Vielen Dank nochmal!
LG Muckel
 
Zeige bitte immer den Code dazu, sonst müssen wir hier raten. :)

P.S.: Um welches Buch handelt es sich denn? Damit man das nicht unbedingt weiterempfiehlt.
 
schmerz_id dürfte doch auto_increment sein? wenn nicht, dann musst du auch einen wert dafür übergeben, sollte es auto_increment sein, ganz löschen oder einen leeren String dafür anbieten.

Atm wird "Now()" in schmerz_id gespeichert
 
Guten Abend Loomes um den Code, den ich im Thread habe. Die Frage bezog sich darauf, ob ich aus dem dieses machen kann:
PHP:
$link = mysql_connect('localhost', 'user', 'passwort') or die(mysql_error());

mysql_select_db("Doku"); //Datenbank auswaehlen

$sql = 'INSERT INTO `schmerz` (`schmerz_id`, `datum`, `morgens`, `mittags`, `abends`, `tiefst`, `mittel`, `hoechst`) 
    VALUES(
    NOW(),
    NOW(),
        "'.$_POST['morgens'].'",
        "'.$_POST['mittags'].'",
        "'.$_POST['abends'].'",
        4,
        5,
        6
        )';if( !mysql_query( $sql ) ) {echo mysql_error();}  
		
'INSERT INTO `medikamente` (`medi_id`, `datum`, `Mmedikament`, `Mmorgens`, `Mmittags`, `Mabends`, `Mnachts`, `Mbedarf`) 
    VALUES(
    NOW(),
    NOW(),
        "'.$_POST['Mmedikament'].'"
		"'.$_POST['Mmorgens'].'",
        "'.$_POST['Mmittags'].'",
        "'.$_POST['Mabends'].'",
        "'.$_POST['Mnachts'].'",
        "'.$_POST['Mbedarf'].'"
        )';if( !mysql_query( $sql ) ) {echo mysql_error();}  

'INSERT INTO `allgemein` (`befinden_id`, `datum`, `beschreibun`) 
    VALUES(
    NOW(),
    NOW(),
        "'.$_POST['Abefinden'].'"
        )';if( !mysql_query( $sql ) ) {echo mysql_error();}  


mysql_close ($link);
Sprich wie ich das zweite und dritte insert into dahinter baue. Und ich würde gerne nach dem Eintragen in in die einzelnen Tabellen gerne einen Text ausgeben wie z.B. "Die Schmerz-Werte wurden eingetragen", wenn es keinen Fehler gab und am Ende eine Weiterleitung auf eine Datei, wenn dieses geht.

Das Buch ist nicht auf dem freien Markt verfürbar, da es noch geschrieben wird. Haben diesen (Tipp?)Fehler aber weiter gemeldet.

Gruß und vielen Dank
Muckel

Guten Abend CookieBuster,

schmerz_id ist wie die anderen auch
  • int(10)
  • UNSIGNED
  • auto_increment

Und gespeichert wird es mit NOW(), . Wie mache ich daraus einen "leeren String"?

Vielen dank und einen schönen Abend
Muckel
 
Zurück