Zur Navigation

Problem mit einfügen in Mysql

1 mar123

Ich bin gerade dabei meinen ersten eigenen Blog zu programmieren!
Leider bekomme ich es nicht hin, dass Kommentare gespeichert werden! Irgendetwas klappt da nicht mit Mqsql!
Könntest du vielleicht mal kurz schauen was da schief läuft?

ausgabe.php:
<?php

require ("config.inc.php");

//Nachricht Anfang

$satz = mysql_query("SELECT * FROM $dbtabelle WHERE newsid = '$auswahl'");

include("kommentar.php");

$row = mysql_fetch_array($satz);
extract($row);

$inhalt=nl2br($newsinhalt);


echo "
<h1>$newstitel </h1>
<span class='small'>$newsrubrik</span>
<p>$newsdatum</p>
<p>$inhalt</p>
<p>$newsurl</p>
<p>$newsautor</p>
<a href='index.php' class='latestnews'>Zur&uuml;ck</a>

$komanzahl
";

//Nachricht Ende
if ($kcheck == "ok") {
echo "
<p>
Vielen Dank -
Kommentar
wurde gesichert!
<7p>
";
} else if ($kcheck == "fehler") {
echo "
<p>
- FEHLER -
 Kommentar konnte nicht angelegt werden.
 Versuchen Sie es bitte erneut!
</p>
";
}
//Kommentarausgabe

while ($krow = mysql_fetch_array($komsatz)) {
extract($krow);
$nr++;

$kominhalt=nl2br($kominhalt);

echo "
    <p>&nbsp;Kommentar $nr</p>
      <p class='small'>$komdatum</p>
    <p>$kominhalt</p>
    <a href='mailto:$komemail' target='_blank' class='contentblack'>$komname</a>
    <a href='$komhome' target='_blank' class='autor'>[ homepage ]</a>
";
}
//Kommentarformular
echo "
<h2>Kommentar</h2>
<form name='kommformular' method='post' action='index.php?action=ausgabe&auswahl=$newsid'>
";
if($_POST["ksenden"] && empty($_POST["kname"])){
echo "Du musst noch deinen Namen eingeben!"; 
} 
echo "<p><label for='name'>Name:</label>
<input id='name' type='text' name='kname' value='' maxlength='255' /></p>
";
if($_POST["ksenden"] && empty($_POST["kmail"])){ 
echo "Deine Email-adresse fehlt!";
}
echo "
<p><label for='mail'>E-mail:</label>
<input id='mail' type='text' name='kmail' value='' maxlength='255' /></p>
";
echo "
<p><label for='website'>Website</label>
<input id='website' type='text' name='khome' value='' maxlength='255' /></p>
";
if($_POST["ksenden"] && empty($_POST["kinhalt"])){ 
echo "Du musst noch einen Kommentar zur Seite abgeben!";
} 
echo "
<p><label for='comm'>Comment:*</label>
<textarea id ='comm' name='kinhalt' rows='6' cols='10'></textarea></p>

<input type='submit' name='ksenden' value='Senden' class='contentblack'>
<input type='reset' name='losch' value='L&ouml;schen' class='contentblack'>
</form>
";
?>

und hier noch die include-datei kommentar.php:
<?php
if  (isset($_POST["ksenden"]) && $kname != "" && kinhalt != "" && kmail != "" ) {

function daten_reiniger($inhalt) {
if (!empty($inhalt)) {
	$inhalt = strip_tags($inhalt);
	$inhalt = htmlspecialchars($inhalt);
	$inhalt = trim($inhalt);
	$inhalt = stripslashes($inhalt);
}
return $inhalt;
}


foreach ($_POST as $key=>$element) {
	//Eingaben Filtern
	${"f_".$key} = daten_reiniger($element);
}

$kdatum=date("Y-m-d H:i:s");

$komsatzw = mysql_query("INSERT INTO $dbkomtabelle VALUES('','$kdatum','$f_kname','$f_kmail','$f_khome','$f_kinhalt')");

$kpruf = mysql_affected_rows();

if ($kpruf) {
	$kcheck = "ok";
} else {
	$kcheck = "fehler";
}
}


$komsatz = mysql_query("SELECT * FROM $dbkomtabelle WHERE knewsid='$auswahl' ORDER BY kid DESC");
$komanzahl = mysql_num_rows($komsatz);

?>

02.11.2005 14:34

2 Jörg Kruse

Der Kommentar befindet sich nicht in der Datenbank (Überprüfung z.B. mit PHPmyAdmin), so dass der FEhler nicht bei der Ausgabe liegen könnte?

Du kannst dir mit mysql_error() mögliche MySQL Fehler ausgeben lassen:

$komsatzw = mysql_query("INSERT INTO $dbkomtabelle VALUES('','$kdatum','$f_kname','$f_kmail','$f_khome','$f_kinhalt')");

echo mysql_error();

aber eigentlich sollte das...
$kpruf = mysql_affected_rows();

... schon prüfen, ob etwas angekommen ist

mfG Jörg

02.11.2005 15:16

3 mar123 (Gast)

Ja genau, dann kommt dieser fehler:

Column count doesn't match value count at row 1

02.11.2005 15:45

4 Jörg Kruse

Die Anzahl der Spalten in der Tabelle $dbkomtabelle stimmt nicht überein mit der Anzahl der Werte, die du einfügen möchtest. Am besten wäre es, wenn du in der INSERT Query in KLammern noch konkret die Namen der Felder angibst, in welche die Werte eingefügt werden sollen

$komsatzw = mysql_query("INSERT INTO $dbkomtabelle (spalte1,spalte2,spalte3,spalte4,spalte5,spalte6) VALUES('','$kdatum','$f_kname','$f_kmail','$f_khome','$f_kinhalt')");

mfG Jörg

02.11.2005 16:41 | geändert: 02.11.2005 16:43

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]