Wird denn mysql_query() erfolgreich ausgeführt? D.h. siehst Du den Eintrag in der Datenbank?
Moin,
ich habe ein Problem und sehe den Wald vor lauter Bäumen nicht.
Habe mich an eines der Tutorials hier im Forum gehalten, doch ist es mir einfach nicht möglich, Daten in die DB abzuspeichern.
Vielleicht entdeckt ja jemand mit geschulteren Augen das Problem...
Ich bekomme letzlich immer die Ausgabe "Fehler: Daten nicht gespeichert.".
Inhalt der dbconnect.php:PHP-Code:<?PHP
if (isset( $_POST['speichern'] ))
{
$_POST = get_magic_quotes_gpc() ? array_map( 'stripslashes', $_POST ) : $_POST;
$basispaket = isset( $_POST['basispaket'] ) ? 1 : 0;
$branchenbrief = isset ( $_POST['branchenbrief'] ) ? 1 : 0;
$broschuere = isset ( $_POST['broschuere'] ) ? 1 : 0;
$merkblaetter = isset ( $_POST['merkblaetter'] ) ? 1 : 0;
$datum = $_POST['datum'];
$mitarbeiter = $_POST['mitarbeiter'];
include 'dbconnect.php';
$sql = "INSERT INTO `stufe1`
(`datum`, `mitarbeiter`, `basispaket`, `branchenbrief`, `broschuere`, `merkblaetter`)
VALUES(
" .$datum. ",
'" .mysql_real_escape_string( $mitarbeiter ). "',
" .$basispaket. ",
" .$branchenbrief. ",
" .$broschuere. ",
" .$merkblaetter. "
)";
mysql_query( $sql );
if (mysql_affected_rows() == 1)
{
echo "gespeichert";
}
else
{
echo "Fehler: Daten nicht gespeichert";
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="formular" id="formular" >
<table border=0">
<tr><td>Datum: <input type="text" name="datum" value="dd.mm.yyyy"</td><td>Mitarbeiter: <input type="text" name="mitarbeiter" value=""</td></tr>
<tr><td><br/><b>Erstinformation: Versenden/Aushändigen von Infomaterial</b><br/><br/></td></tr>
<tr><td><input type="checkbox" name="basispaket" value="Basispaket" >Basispaket</td></tr>
<tr><td><input type="checkbox" name="branchenbrief" value="Branchenbrief" >Branchenbrief</td></tr>
<tr><td><input type="checkbox" name="broschuere" value="Broschüre" >Broschüre</td></tr>
<tr><td><input type="checkbox" name="merkblaetter" value="Merkblätter" >Merkblätter</td></tr>
<br/>
<tr><td><input type="submit" name="speichern" id="speichern" value="speichern" /></td></tr>
</table>
</form>
<p><a href="stufe2.html">>>> Stufe 2 <<<</a> <a href="stufe3.html">>>> Stufe 3 <<<</p>
</body>
</html>
PHP-Code:<?php
$dbname="asd";
$dbhost="localhost";
$dbuser="asd";
$dbpass="asd";
mysql_connect($dbhost,$dbuser,$dbpass) or die ( "Fehler: Die Datenbank konnte nicht erreicht werden." . mysql_error());
mysql_select_db($dbname) or die ( "Fehler: Keine Verbindung zur Tabelle möglich" . mysql_error());
?>
Wird denn mysql_query() erfolgreich ausgeführt? D.h. siehst Du den Eintrag in der Datenbank?
Bei der Fehlermeldugn weisst du ja schonmal wo du anfangen kannst rückwärts zu suchen. Hilfreich ist dabei sowas wie
Dann kannst du schonmal SQL-Fehler debuggen.Code:mysql_query($sql) or die($sql.mysql_error())
Hey,
das hat mir schonmal weitergeholfen, danke!
Ein Feld innerhalb der Tabelle war anders benannt.
Konnte jetzt einige Datensätze einfügen.
Allerdings scheint es noch Probleme mit dem Datum zu geben.
Gibt es da eine Möglichkeit unterschiedliche Schreibweisen eines Datums so umzuformen, dass sie in der MySQL-Schreibweise angepasst werden?
Also z.B. 18.08.2010 -> 2010-08-18 ?
// Ich sehe grade, dass in der DB als Datum nur 0000-00-00 gespeichert wird.
Da muss wohl noch ein weiterer Fehler existieren...
Geändert von el_matador (18.08.2010 um 09:54 Uhr)
Kannst du von Hand mit explode() machen, oder die Datetime-Klassen benutzen.
Code:$from = 'd.m.Y H:i'; $to = 'Y-m-d H:i:s'; $date = DateTime::createFromFormat($from, '18.8.2010 9:57'); echo $date->format($to);
werd ich gleich probieren.
noch funktioniert etwas nicht mit der übergabe des datums.
wie oben schon erwähnt, wird nur 0000-00-00 in der db gespeichert.
hab schon ein paar sachen probiert, leider ohne erfolg.
sieht jemand meinen fehler?
Grüße vom Griechen,
Cybergreek!
everygain Translator - eine Firefox-Erweiterung, damit der Grieche Euch besser versteht
so, hab jetzt noch ein problem.
hab mir ein loginscript besorgt, welches passwort und nick ursprünglich in einer datei beinhaltet.
das wollte ich anpassen, sodass sie nicht mehr aus einer date, sondern aus der db entnommen werden.
ich finde jedoch den fehler nicht. nach dem login werde ich immer auf die fehlerseite weitergeleitet.
hab dabei wieder ein tutorial aus dem forum genutzt...
hier der code:
PHP-Code:<?php
session_start();
include('config.php');
//Datenbankanbindung
$dbname="bla";
$dbhost="localhost";
$dbuser="asd";
$dbpass="asd";
// anfang
$conid = mysql_connect( $dbhost, $dbuser, $dbpass ) or die( 'Verbindungsfehler!' );
if (is_resource( $conid ))
{
mysql_select_db( $dbname, $conid ) or die( 'Datenbankfehler!' );
}
$sql1 = "SELECT `mitarbeiter` FROM `benutzer` WHERE LOWER(`mitarbeiter`) = '" .mysql_real_escape_string( $uname ). "' ";
$ergebnis1 = mysql_query( $sql1, $conid ) or die($sql.mysql_error());
$uname = mysql_fetch_assoc($ergebnis1);
$sql2 = "SELECT `passwort` FROM `benutzer`WHERE `passwort` = '" .mysql_real_escape_string( $passwort ). "' ";
$ergebnis2 = mysql_query( $sql2, $conid ) or die($sql.mysql_error());
$pword = mysql_fetch_assoc($ergebnis2);
//Resets logout
unset($_GET['logout']);
//Fetches username and password variables
$username = strtolower( trim( $_POST['username'] ) );
$password = md5( trim( $_POST['passwort'] ) );
//Checks and validates password and accepts or displays errors
if($uname == $username){
if($pword == $password){
$_SESSION['loggedin'] = True;
header('Location: '.$target);
}
else
{
$_SESSION['loggedin'] = "";
echo $error;
//Notify if config settings allow.
if($notify == "yes"){
$to = $email;
$subject = "PHP Login Notification: Warning";
$msg = "PHP Login has detected a failed login attempt.
The login used the details:
username: $username
password: $password";
$from = $email;
$headers = "From: $from";
mail($to,$subject,$msg,$headers);
}
//End notify if.
}
}
else
{
$_SESSION['loggedin'] = "";
echo $error;
//Notify if config settings allow.
if($notify == "yes"){
$to = $email;
$subject = "PHP Login Notification: Warning";
$msg = "PHP Login has detected a failed login attempt.
The login used the details:
username: $username
password: $password
------
Powered by creativeben.co.uk php login.";
$from = $email;
$headers = "From: $from";
mail($to,$subject,$msg,$headers);
}
//End notify if.
}
?>
$uname ist nicht definiert. "echo" hilft hier auch ungemein - einfach alle Variablen ab Fehlermeldung ausgeben lassen.
echo $uname, $username, $pword, $password, ... Oder halt einen Editor wie Notepad++ nehmen, der dir alle Übereinstimmungen des markierten Wortes farblich hervorhebt.
ich habe nun den teil
in diesen geändertPHP-Code:$sql1 = "SELECT `mitarbeiter` FROM `benutzer` WHERE LOWER(`mitarbeiter`) = '" .mysql_real_escape_string( $uname ). "' ";
$ergebnis1 = mysql_query( $sql1, $conid ) or die($sql.mysql_error());
$uname = mysql_fetch_assoc($ergebnis1);
$sql2 = "SELECT `passwort` FROM `benutzer`WHERE `passwort` = '" .mysql_real_escape_string( $passwort ). "' ";
$ergebnis2 = mysql_query( $sql2, $conid ) or die($sql.mysql_error());
$pword = mysql_fetch_assoc($ergebnis2);
jedoch wird immernoch nichts in $uname und $pword übergeben. woran liegt das?PHP-Code:$sql = "SELECT mitarbeiter AND Passwort FROM benutzer WHERE LOWER(mitarbeiter) = '.mysql_real_escape_string($_POST(username)).' AND passwort = '.mysql_real_escape_string($_POST(password)).' ";
$ergebnis = mysql_query( $sql, $conid ) or die(mysql_error());
while( $row = mysql_fetch_array($ergebnis) )
{
$uname = $row[0];
$pword = $row[1];
}
mysql_free_result($ergebnis);
Ich hab jetzt nicht weiter geschaut, aber vielleicht hilft das schon:
=>PHP-Code:SELECT mitarbeiter AND Passwort
PHP-Code:SELECT mitarbeiter, Passwort
Grüße vom Griechen,
Cybergreek!
everygain Translator - eine Firefox-Erweiterung, damit der Grieche Euch besser versteht
daran lag es leider nicht...![]()
Grüße vom Griechen,
Cybergreek!
everygain Translator - eine Firefox-Erweiterung, damit der Grieche Euch besser versteht
das hab ich bereits getan.
echos geben für die beiden variablen nichts aus.
die sql abfrage hingegen funktioniert...
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)