daten per php-forumlar in db

  • #1
R

reik

Aktives Mitglied
Themenersteller
Dabei seit
29.05.2005
Beiträge
42
Reaktionspunkte
0
hallo liste,

hmm ich habe ein problem mit dem verständis hinsichtlich wie ich daten in eine datenbank über ein formular eintragen kann.

nachdem ich mit etwas mühen und schummeln (zugeb :\ ) entlich ein formular zusammengebaut habe kriege ich eine fehlermeldung mit der ich überhaupt nichts anfagen kann.

--> Column count doesn't match value count at row 1
Warning: Cannot modify header information - headers already sent by (output started at E:\webserver\xxx\test.php:92) in E:\webserver\xxx\test.php on line 98

mein quelltext ist

Code:
<?php

include(include_databasefunction.php);

if (isset($_GET[submit])){
// Der Submit - Button wurde gedrückt
//      -> die Werte müssen überprüft
// und bei Gültigkeit in die DB eingefügt werden

 // wir gehen von der Gültigkeit der Daten aus
 $DatenOK = 1;

 // es gab noch keine Fehlermeldung
 $error = ;

  if (!isset($_GET[id])){
  // es wurde kein Komementar eingegeben
  $DatenOK = 0;
  $error .= Ein Eintrag ohne Komemntar mach nicht viel;
  $error .=  Sinn, oder?<br>\n;
  $daten[id] = ;
 }
 else {
  $daten[id] = $_GET[id];
 }
 
 if (!isset($_GET[titel])){
  // es wurde kein Name eingegeben
  $DatenOK = 0;
  $error .= Es muß ein Name eingegeben werden<br>\n;
  $daten[titel] = ;
 }
 else {
  $daten[titel] = $_GET[titel];
 }

 if (!isset($_GET[beschreibung])){
  // es wurde kein Komementar eingegeben
  $DatenOK = 0;
  $error .= Ein Eintrag ohne Komemntar mach nicht viel;
  $error .=  Sinn, oder?<br>\n;
  $daten[beschreibung] = ;
 }
 else {
  $daten[beschreibung] = $_GET[beschreibung];
 }
 
  if (!isset($_GET[date_new])){
  // es wurde kein Komementar eingegeben
  $DatenOK = 0;
  $error .= Ein Eintrag ohne Komemntar mach nicht viel;
  $error .=  Sinn, oder?<br>\n;
  $daten[date_new] = ;
 }
 else {
  $daten[date_new] = $_GET[date_new];
 }

  if (!isset($_GET[date_edit])){
  // es wurde kein Komementar eingegeben
  $DatenOK = 0;
  $error .= Ein Eintrag ohne Komemntar mach nicht viel;
  $error .=  Sinn, oder?<br>\n;
  $daten[date_edit] = ;
 }
 else {
  $daten[date_edit] = $_GET[date_edit];
 }

  if (!isset($_GET[kommentar])){
  // es wurde kein Komementar eingegeben
  $DatenOK = 0;
  $error .= Ein Eintrag ohne Komemntar mach nicht viel;
  $error .=  Sinn, oder?<br>\n;
  $daten[kommentar] = ;
 }
 else {
  $daten[kommentar] = $_GET[kommentar];
 }

 if ($DatenOK){
  // Daten waren OK -> also in DB eintragen
  mysql_query(sprintf('insert into t_micom 
                (id,titel,beschreibung,date_new,date_edit,kommentar)
             VALUES (now(),%s,%s,%s,%s,%s,%s)',
			addslashes($daten[id]),
			addslashes($daten[titel]),
			addslashes($daten[beschreibung]),
			addslashes($daten[date_new]),
			addslashes($daten[date_edit]),
			addslashes($daten[kommentar])));
  echo mysql_error();

  // Alles eingetragen -> zurück zur Übersicht
  header('Location: http://'.$_SERVER[HTTP_HOST].
	  substr($_SERVER[PHP_SELF],0,
		 strrpos($_SERVER[PHP_SELF],'/'))
	  .'/');
  // und fertig...
  die();
 }

}
else {
 $daten[id] = ;
 $daten[titel] = ;
 $daten[beschreibung] = ;
 $daten[date_new] = ;
 $daten[date_edit] = ;
 $daten[kommentar] = ;
}
?>

<html>
<head>
<title>Neuer Eintrag in unser GB</title>
<style type=text/css>
<!--
.Stil1 {font-size: 2px}
-->
</style>
</head>
<body>
<p>
 <?php
if ($submit && !$DatenOK){
 // Das Formular wurde schon abgeschickt aber die Daten
 // waren nicht OK
 // -> Fehlermeldung ausgeben
 echo <h2>Fehler:</h2>\n;
 echo $error;
}

// Formular anzeigen
?>
<form action=<?php echo $_SERVER[PHP_SELF];?> 
   method=GET>
</p>
<p> ID:
 <span class=Stil1>...</span>
 <input type=text name=id size=5 maxlength=5
 value=<?php echo $daten[id]; ?>>
 <span class=Stil1> ....</span>Titel: 
 <span class=Stil1>..</span>
 <input type=text name=titel size=50 maxlength=255
 value=<?php echo $daten[titel]; ?>>
 <br>
 Einstellung Testsystem: 
 <input type=text name=date_new size=10 maxlength=10
 value=<?php echo $daten[date_new]; ?>>
 <span class=Stil1> </span>Einstellung Echtsystem:
 <input type=text name=date_edit size=10 maxlength=10
 value=<?php echo $daten[date_edit]; ?>>
<br><br>
 Beschreibung:<span class=Stil1> .......</span>Kommentar:<br>
 <textarea rows=10 cols=50 wrap=virtual name=kommentar>
<?php echo $daten[kommentar]; ?> 
 </textarea>
 <span class=Stil1>........</span>
 <textarea rows=10 cols=50 wrap=virtual name=beschreibung>
<?php echo $daten[beschreibung]; ?> 
 </textarea>
 <br><br>
 <input type=submit name=submit value=Absenden>
</p>
</body>
</html>
also mal von der etwas stil in html und soweiter abgesehen - ich habe keinen plan was er mir in zeile 98 bzw. 92 bemängelt. vielleicht sehe ich ja den wald vor lauter bäumen nicht mehr - doch für andere ist es unter umständen ein leichtes mein denkfehler zu finden?!!?

gruß
reik
 
  • #2
Code:
<?php

include(include_databasefunction.php);

if (isset($_POST[submit])){
// Der Submit - Button wurde gedrückt
//      -> die Werte müssen überprüft
// und bei Gültigkeit in die DB eingefügt werden

	/**
	* Damit keine leeren Werte kommen, z.B. nur ein Space ;-)
	*/
	foreach($_POST as $key => $val) {
		$_POST[$key] = trim($val);	
	}
	
 // es gab noch keine Fehlermeldung
 $error = ;

 if (empty($_POST[id])){
  // es wurde kein ???? eingegeben
  $error .= Ein Eintrag ohne ???? Sinn, oder?<br>\n;
 }
 else {
  $sql .= id='.mysql_escape_string($_POST[id]).', ;
 }
 
 if (empty($_POST[titel])){
  // es wurde kein ???? eingegeben
  $error .= Ein Eintrag ohne ???? Sinn, oder?<br>\n;
 }
 else {
  $sql .= titel='.mysql_escape_string($_POST[titel]).', ;
 }

 if (empty($_POST[beschreibung])){
  // es wurde kein ???? eingegeben
  $error .= Ein Eintrag ohne ???? Sinn, oder?<br>\n;
 }
 else {
  $sql .= beschreibung='.mysql_escape_string($_POST[beschreibung]).', ;
 }
 
 if (empty($_POST[date_new])){
  // es wurde kein ???? eingegeben
  $error .= Ein Eintrag ohne ???? Sinn, oder?<br>\n;
 }
 else {
  $sql .= date_new='.mysql_escape_string($_POST[date_new]).', ;
 }

 if (empty($_POST[date_edit])){
  // es wurde kein ???? eingegeben
  $error .= Ein Eintrag ohne ???? Sinn, oder?<br>\n;
 }
 else {
  $sql .= date_edit='.mysql_escape_string($_POST[date_edit]).', ;
 }

 if (empty($_POST[kommentar])){
  // es wurde kein Komementar eingegeben
  $error .= Ein Eintrag ohne Komementar Sinn, oder?<br>\n;
 }
 else {
  $sql .= kommentar =->.mysql_escape_string($_POST[kommentar]).', ;
 }

 if (empty($error)){
  // Daten waren OK -> also in DB eintragen
		$query = INSERT INTO t_micom SET .$sql;
		$query = @ereg_replace(,$, , trim($query));
		mysql_query($query);
  echo mysql_error();

  // Alles eingetragen -> zurück zur Übersicht
  header('Location: http://'.$_SERVER[HTTP_HOST].
	  substr($_SERVER[PHP_SELF],0,
		 strrpos($_SERVER[PHP_SELF],'/'))
	  .'/');
  // und fertig...
  die();
 }

}
else {
 $_POST = false;
}
?>

<html>
<head>
<title>Neuer Eintrag in unser GB</title>
<style type=text/css>
<!--
.Stil1 {font-size: 2px}
-->
</style>
</head>
<body>
<p>
 <?php
if ($_POST[submit] && $error != ){
 // Das Formular wurde schon abgeschickt aber die Daten
 // waren nicht OK
 // -> Fehlermeldung ausgeben
 echo <h2>Fehler:</h2>\n;
 echo $error;
}

// Formular anzeigen
?>
<form action=<?php echo $_SERVER[PHP_SELF];?> method=POST>
</p>
<p> ID:
 <span class=Stil1>...</span>
 <input type=text name=id size=5 maxlength=5
 value=<?php echo $_POST[id]; ?>>
 <span class=Stil1> ....</span>Titel: 
 <span class=Stil1>..</span>
 <input type=text name=titel size=50 maxlength=255
 value=<?php echo $_POST[titel]; ?>>
 <br>
 Einstellung Testsystem: 
 <input type=text name=date_new size=10 maxlength=10
 value=<?php echo $_POST[date_new]; ?>>
 <span class=Stil1> </span>Einstellung Echtsystem:
 <input type=text name=date_edit size=10 maxlength=10
 value=<?php echo $_POST[date_edit]; ?>>
<br><br>
 Beschreibung:<span class=Stil1> .......</span>Kommentar:<br>
 <textarea rows=10 cols=50 wrap=virtual name=kommentar>
<?php echo $_POST[kommentar]; ?> 
 </textarea>
 <span class=Stil1>........</span>
 <textarea rows=10 cols=50 wrap=virtual name=beschreibung>
<?php echo $_POST[beschreibung]; ?> 
 </textarea>
 <br><br>
 <input type=submit name=submit value=Absenden>
</p>
</body>
</html>

Habs ma auf POST umgebaut, sonst kann dir jeder Hanswurst über die Adresszeile das GB füllen ;)
Zusätzlich hab ich noch ne foreach Schleife reingebaut in der Leerräume vor und hinter dem String entfernt werden.
Ansonsten könnte das Formular abgeschickt werden wenn in jedem Feld nur ein Leerschritt (Space) drinn ist ;)


!! Nicht getestet, nur ma so frei Schnauze gemacht ;) !!



Nachtrag:

Naja, und ob der User die ID selbst eintragen muss wage ich stark zu bezweifeln ;)

Noch ein Nachtrag ;)

Wenn du das so schreibst:
Code:
 <textarea rows=10 cols=50 wrap=virtual name=kommentar>
<?php echo $_POST[kommentar]; ?> 
 </textarea>

hast du pauschal eine Leerzeile/Break in deiner Textarea.
So ist es korrekt:
Code:
 <textarea rows=10 cols=50 wrap=virtual name=kommentar><?php echo $_POST[kommentar]; ?></textarea>
 
  • #3
hi PCDConny,

danke erstmal fürs durchgucken - ich werde das gleich ausprobieren und so.

doch der user soll die id eintragen - wie ich schon sagte ich habe das ganze eigentlich geklaut wo und an meine bedürfnisse angepasst (da ich eigentlich garnicht programmieren kann aber naja ...)

gruß
reik

UPDATE:

ok geändert und funktioniert!!! als nächstes müsste ich das so umbasteln das ich einen datensatz verändere. mal sehen ob ich das selbst hinkriege ....

nochmal danke für deine hilfe PCDConny
 
Thema:

daten per php-forumlar in db

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.961
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben