[Frage] PHP hilfe

NarutoXD

Stamm User
Hallo ^^

ich hab ein kleines problem ^^
das script soll dazu dienen das ein datensatz in meine mysql datenbank kommt.
der code müsste soweit stimmt aber irgend was muss fehlen....
naja die angeben zu host und pw fehlen bewusst.
aber der code scheint wie gesagt zu gehen, da ich kein fehler bekomme also wird es was sein wo übersehe...
man sieht den wald vor lautern bäumen nicht und so ^^

Sagt es geht aber kein neuer datensatz da...

PHP:
	$connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die
	mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen."); 
	$name = $_POST["name"];
	$bänderae = $_POST["bänderae"];
	$bänderab = $_POST["bänderab"];
	$bänderaf = $_POST["bänderaf"];
	$preis = $_POST["preis"];
	$bänderdf = $_POST["bänderdf"];
	$verlag = $_POST["verlag"];
	
	readfile('header.html');
	if ('POST' == $_SERVER['REQUEST_METHOD']) {
	    if (!isset($_POST['name'], $_POST['bänderae'], $_POST['bänderab'], $_POST['bänderaf'], $_POST['preis'], $_POST['bänderdf'], $_POST['verlag'])) {
        die ('Benutzen sie nur Formulare von der Homepage.');
    }
    if (('' == $name = trim($_POST['name'])) or 
            ('' == $bänderae = trim($_POST['bänderae'])) or
            ('' == $bänderab = trim($_POST['bänderab'])) or
			('' == $bänderaf = trim($_POST['bänderaf'])) or
			('' == $preis = trim($_POST['preis'])) or
			('' == $bänderdf = trim($_POST['bänderdf'])) or
			('' == $verlag = trim($_POST['verlag']))) 
			{
        die ('Bitte füllen sie das Formular vollständig aus.');
    }
    $sql = 'INSERT INTO
                mangal(name, bänderae, bänderab, bänderaf, preis, bänderdf, verlag)
            VALUES
                ("$name", "$bänderae", "$bänderab", "$bänderaf", "$preis", "$bänderdf", "$verlag")';
    $stmt = $db->prepare($sql);
    if (!$stmt) {
        die ('Es konnte kein SQL-Query vorbereitet werden: '.$db->error);
    }
	echo '<p class="info">Mangalisteneintrag hinzugefügt. <a href="mangal3.php">Zurück zur Mangalist</a>.</p>';
	}
	readfile('formular.html');
	readfile('footer.html');
?>
naja ich danke schon mal ^^
 

Zero

Chief 0perating 0fficer
Teammitglied
Admin
da ich dein script nicht kenne:
sicher dass $_POST das richtige hier ist?

umlaute zu verwenden ist extrem scheisse. das solltest noch abändern.

post dein formular mal mit dazu
 

NarutoXD

Stamm User
das mit dem umlauten ist ein ne schlecht angewohnheit von mir ^^'''

umlaute hab ich raus.....


HTML:
<form action="mangal3.php" method="post">
    <fieldset>
        <legend>Neue Serie</legend>
        <table border="1">
		<tr><td><label>Name:</td><td><input type="text" name="name" /></label></td></tr>
        <tr><td><label>BA:</td><td><input type="text" name="bänderae" /></label></td></tr>
		<tr><td><label>BAiB:</td><td><input type="text" name="bänderab" /></label></td></tr>
		<tr><td><label>BAdF:</td><td><input type="text" name="bänderaf" /></label></td></tr>
		<tr><td><label>Preis:</td><td><input type="text" name="preis" /></label></td></tr>
		<tr><td><label>BdF:</td><td><input type="text" name="bänderdf" /></label></td></tr>
		<tr><td><label>Verlag:</td><td><input type="text" name="verlag" /></label></td></tr>
        <tr><td colspan="2"><input type="submit" name="formaction" value="Eintragen" /></td></tr>
		</table>
    </fieldset>
</form>
 

Zero

Chief 0perating 0fficer
Teammitglied
Admin
kk.
dann würd ich mal sagen:
PHP:
$stmt->execute()
fehlt ;P


bsp:
PHP:
$sql = 'DELETE FROM Rechteliste WHERE ID = ?';

if (!$stmt = $db->prepare($sql)) {
    return $db->error;
}
if (!$stmt->execute()) {
    return $stmt->error;
}
$stmt->close();
 

NarutoXD

Stamm User
danke ^^

naja das einzige was ich bis jetzt in php gemacht hab ist nur eine anzeige von datensätze...

nur bekommt jetzt prepare ein error wegen ein non-objekt....
 

Zero

Chief 0perating 0fficer
Teammitglied
Admin
k

du hast den strichpunkt nach der Anweisung gemacht?
und erst ein prepare und dann ein execute ^^



Anders geht z.b. auch so:
PHP:
// Aufbau der Datenbankverbindung 
$connectionid  = mysql_connect ("host", "user", "pw"); 
if (!mysql_select_db ("database", $connectionid)) 
{ 
  die ("Keine Verbindung zur Datenbank"); 
} 

// SQL-Anweisung erstellen 
  $sql = "INSERT INTO ".
    "benutzerdaten (Nickname, Kennwort, bla, blub) ".
  "VALUES ('".$value["Nickname"]."', '".
                       md5 ($value["Kennwort"])."', '', '')"; 
  mysql_query ($sql); 

  if (mysql_affected_rows ($connectionid) > 0) 
  { 
    echo "Benutzer erfolgreich angelegt.<br>\n"; 
  } 
  else 
  { 
   echo "Fehler beim Anlegen der Benutzer.<br>\n"; 
  }
das geht auch und ist etwas einfacher zu verstehen.

edit
$value ist ein 2-dimensionales array. daher der Aufruf mit den []
einfach das komplett durch normales ersetzten und gut ist ^^
 
Zuletzt bearbeitet:

Zero

Chief 0perating 0fficer
Teammitglied
Admin
gut.
dein mysqli sollte das query auch kennen.
umgekehrt aber nicht ;P
daran hab ich gar nicht mehr gedacht ^^
 
Oben