Formular auswerten und in Datenbank einfügen?

thehacker

Anhänger der Apachen
Hallo,
ich habe ein kleines Projekt. Ich habe mir zum einfügen in die db ein Script geschrieben.
Mein Problem?
1. Ich kenne mich mit Post nicht aus :O
2. Ich weiss nicht wie ich daten jetzt in die Datenbank einfüge

Meine Frage:
Wie mache ich das per Post? und wie werde ich nach dem einfügen in die DB wieder auf backend.php weiter gelietet?
Und wie füge ich überhaupt die Daten in die DB?
Was muuss in dersave.php stehen?

Hilfe wäre extrem nett.

Script:
Backend.php

PHP:
<?php
    error_reporting(E_ALL);
    include("mysql.php");
    include("functions.php");

    session_start();
    include("autologout.php");
?>
<html>

<head>

<title>Suchmaschinen Backand</title>
<link rel="stylesheet" type="text/css" href="styles.css" />
</head>
<body>
<div id="container">
<div id="header"><h1>Willkommen im Backend</a></h1></div>
  <div id="wrapper">
    <div id="content">
      <p><strong>Willkommen im Backend</strong></p>
		<p>
		<form action="save.php" method="post">
		
		Titel: <br>
			<input type="text" name="title" size="25">
				<br>
		Link: <br>
			<input type="text" name="link" size="25">
				<br>
		Keywords: <br>
			<textarea name="keyword" cols="50" rows="10"></textarea>
				<br>
		Beschreibung: <br>
			<textarea name="beschreibung" cols="50" rows="10"></textarea>
			<input type="submit" value="Einfügen">
				
		
		</form>
		</p>      
      </div>
  </div>
  <div id="navigation">
    <p><strong>Navigation Here</strong></p>
    <ul>
      <li><a href="http://www.free-css.com/">Free CSS Templates</a></li>
      <li><a href="http://www.free-css.com/free-css-layouts.php">Free CSS Layouts</a></li>
    </ul>
  </div>
  <div id="extra">
    <p><strong>More stuff here.</strong></p>
    <p>sit malesuada lacus pellus parturpiscing. Pellenterdumat maecenatoque cras a magna nibh et quis diam ames et. Laoremvolutpat ac dolor eget eget temper lacus vestibus velit lacus venean. Magnaipsum tellus morbi leo aliquat nulla convallis pellentesque.</p>
  </div>
  <div id="footer">
    <p>Footer</p>
  </div>
</div>
</body>
</html>


Danke schon mal TheHacker
 
Auf die Daten in $_POST kannst du in save.php so zugreifen:

PHP:
$title = $_POST['title']; // << hier wird der Text aus dem Formular im Feld mit dem Namen "title" in eine Variable $title geschrieben.

Wie du das dann in deine DB überträgst kann ich dir nicht 100%ig sagen, nur ungefähr andeuten:

PHP:
$title = $_POST['title']; // Abholen aus dem Formular
$title = mysql_real_escape_string( $title ); // Absichern gegen Injection
// Das muss noch für $link und $keyword erledigt werden
$link = ...
$keyword = ...

// Query zusammen bauen
$query = "INSERT INTO mein_tabellenname (title, link, keyword) VALUES ('$title', '$link', '$keyword')";

// und ausführen
mysql_query( $query ) or die( mysql_error() );

Nichts für ungut, aber hast du dir da nicht ein etwas zu großes Projekt vorgenommen, wenn es schon an den elementarsten Dingen fehlt?
 
Zuletzt bearbeitet:
Auf die Daten in $_POST kannst du in save.php so zugreifen:

PHP:
$title = $_POST['title']; // << hier wird der Text aus dem Formular im Feld mit dem Namen "title" in eine Variable $title geschrieben.

Wie du das dann in deine DB überträgst kann ich dir nicht 100%ig sagen, nur ungefähr andeuten:

PHP:
$title = $_POST['title']; // Abholen aus dem Formular
$title = mysql_real_escape_string( $title ); // Absichern gegen Injection
// Das muss noch für $link und $keyword erledigt werden
$link = ...
$keyword = ...

// Query zusammen bauen
$query = "INSERT INTO mein_tabellenname (title, link, keyword) VALUES ('$title', '$link', '$keyword')";

// und ausführen
mysql_query( $query ) or die( mysql_error() );

Nichts für ungut, aber hast du dir da nicht ein etwas zu großes Projekt vorgenommen, wenn es schon an den elementarsten Dingen fehlt?


Ersten danke 2. Ist es ein kleines projekt
 
Noja, ich messe es daran, was du in dem anderen Thread gefragt hast. Übrigens verstößt Full-Quote gegen die Netiquette (Voll-Zitat), nur als Hinweis.
 
Naja, ganz so ist es nicht, aber vielleicht solltest du beim quoten darauf achten, nur den Teil des Zitats zu übernehmen, auf den sich deine Antwort bezieht. Vor allem, wenn deine Antwort nur ein paar Worte ist. Nun aber genug Standpauke gehalten ;-)
 
Hallo thehacker,

Hier erstmal die Schritte zum Speicher in ner DB:
PHP:
// Verbindungsdaten (vor allem Passwort + DB-Name müssen natürlich angepasst werden!) 
$db_server  = 'localhost:3306';
$db_user    = 'root';
$db_pwd     = 'passwort';
$db_name    = 'websitedata';

// Verbindung
$dbc = mysql_connect($db_server, $db_user, $db_pwd);
$select_db  = mysql_select_db($db_name, $dbc);

In meiner Signatur findest du die hierzu passende Workbench + DB-Server von MySQL.
(Wahrscheinlich arbeitest du mit XAMPP, dann hast du das sowieso schon)

Um die DB konsistent zu halten, musst du eine ID verwenden und diese abfragen um mit der nächst höheren speichern zu können:
PHP:
// Abfrage der höchsten ID
$sql = "SELECT MAX(id) as maxid FROM yourTable";
$query = mysql_query($sql, $dbc);
$id_obj = mysql_fetch_object($query);
$id = ($id_obj->maxid)+1;

Wie du speicherst, hat saftmeister ja schon beschrieben.

Wenns Probleme beim speichern gibt, helfen oft folgende (bereinigende) Funktionen:
PHP:
$attribut = stripslashes($attribut);
$attribut = mysql_real_escape_string($attribut);
$attribut = "'" . $attribut . "'";

Weil ich nicht dein ganzes Projekt kenne, kann ich dir keine Komplettlösung liefern, hoffentlich helfen dir meine Tipps,
javaDeveloper2011
 
PHP:
// Abfrage der höchsten ID
$sql = "SELECT MAX(id) as maxid FROM yourTable";
$query = mysql_query($sql, $dbc);
$id_obj = mysql_fetch_object($query);
$id = ($id_obj->maxid)+1;

Frage: Was genau soll damit bezweckt werden? MySQL hat eine interne Funktionalität, wenn auf eine Spalte ein Primärschlüssel gelegt wird, und AUTO_INCREMENT eingestellt ist, braucht man die nächste ID nicht zu berechnen, das mach MySQL selbst. Bei einem Insert braucht man die Spalte auch nicht befüllen, das macht MySQL selbst.

Nur so nebenbei.
 
Habe es so gemacht und es passt :D danke schön wie bekomme ich jetzt aber bei erfolg eine Meldung angezeigt?
 
Zuletzt bearbeitet:
Das bedeutet, das es in der Tabelle mit dem Namen "search" keine Spalte mit dem Namen "keyword" gibt. Tippfehler? Prüfe noch mal im phpMyAdmin nach, ob es diese Spalte überhaupt gibt und ob die Namen stimmen.

Übrigens "desciption" sieht auch seltsam aus.
 
Zurück