themannr1
Goto Top

Datensatz an MySQL übergeben im selben Formular

Hallo allerseits

Liebe Leute..
Folgendermassen. Ich möchte einen Datensatz in der MySQL-Tabelle abspeichern. Tabelle besitzt nur einen Attribut "Projekttitel" jetzt im Testfall. Im selben Formular soll alles geschehen. Ich scheitere kläglich..

Ich bedanke mich für jegliche Tipps und Tricks schon mal im Voraus, falls Ihr einen Fehler entdeckt oder es besser wisst, wie man es macht.

Danke und viele Grüsse

<html><head> <title> </title>
</head>
<?php
	include ("dbopen.inc.php");  
?>
<body >

<?php
  if (isset($_GET['submit'])) {  
    $ausgabe = '';  
    $fehler = '';  
    
    if (isset($_GET['Projekttitel']) && !is_array($_GET['Projekttitel']) && $_GET['Projekttitel'] != '') {  
		$ausgabe .= "INSERT INTO test (ID) VALUES ('$_GET[Projekttitel]');";  

    } else {
      $fehler .= 'Fehler !! ';  
    }
}
?>

<h3> EINTRAGEN HIER:</h3> <br>
<a href="index.php">Startseite</a><br><br>  

<form action="<?php echo htmlspecialchars ($_SERVER['PHP_SELF']); ?>" method="GET">  

 <input type="text" name="Projekttitel" size="30" value="<?php  
if (isset($_GET['Projekttitel']) && is_array ($_GET['Projekttitel'])) {  
	echo htmlspecialchars ($_GET['Projekttitel']);  
}
?>" /> Projekttitel:<br /><br />  



<br /> <br />
<input type="submit" name="submit" value="Speichern" />  

</form>
</body>
</html>

Content-Key: 166335

Url: https://administrator.de/contentid/166335

Printed on: April 23, 2024 at 13:04 o'clock

Member: Xaero1982
Xaero1982 May 16, 2011 at 11:31:56 (UTC)
Goto Top
Hi,

was steht in der dbopen.Inc.php?

Sehe hier nämlich nichts von SQL in deinem "Script".

Google doch mal php + mysql

VG
Member: EvilMoe
EvilMoe May 16, 2011 at 12:38:37 (UTC)
Goto Top
Hallo

$_GET['Projekttitel'] != '') {
$ausgabe .= "INSERT INTO test (ID) VALUES ('$_GET[Projekttitel]');";

und wo soll der SQL Befehl ausgeführt werden?
Dir fehlt ein mysql_query($ausgabe) oder ein $DB->query($ausgabe) je nachdem was du verwendest.

Davon abgesehen ist es tödlich wie du programmierst, du lässt eine Eingabe in einem SQL Befehl ohne diese vorher zu validieren.
Schau dir mal ein kapitel PHP/MySQL SQL Injection an.
Member: themannr1
themannr1 May 16, 2011 at 14:51:21 (UTC)
Goto Top
"Tödlich" ist es wie ich programmiere.. :- ) hoffentlich nicht.. :- )

Also das File dient ein und einzig dem Zweck, das Prinzip zu begreifen. Ausgebessert wird es später.
Also: "dbopen.inc.php" enthält folgende Pararameter. Ist aber irrelevant für meine Frage:
<?php
// mysql Verbindung und Aufruf der Datenbank
$server = "localhost";  // MySQL-Server  
$user = "root";  
$pass = "";  
$dbase="test";  

$conn = mysql_connect($server, $user, $pass);
if ($conn)
{
		mysql_select_db($dbase,$conn);
}
else
{
		die("<b>Verbindung zum MySQL-Server konnte nicht hergestellt werden </b>");  
}
?>
Member: themannr1
themannr1 May 16, 2011 at 14:54:53 (UTC)
Goto Top
$ausgabe = '';
$fehler = '';
if (isset($_GET['Projekttitel']) && !is_array($_GET['Projekttitel']) && $_GET['Projekttitel'] != '') {
$ausgabe .= "INSERT INTO test (ID) VALUES ('$_GET[Projekttitel]');";

Hier liegt der Hund begraben :- (
PS.me
Member: ReichMio
ReichMio May 16, 2011 at 15:07:06 (UTC)
Goto Top
Welche Fehlermeldung kriegst den angezeigt ? (stichwort mysql_error() )
Member: EvilMoe
EvilMoe May 16, 2011 at 15:24:17 (UTC)
Goto Top
Wie gesagt, das kann nicht gehen.
Wo fürhrst du deinen SQL Befehl aus?
Alles was du machst ist dein SQL query in einer Variable zu speichern.
Member: themannr1
themannr1 May 16, 2011 at 16:15:17 (UTC)
Goto Top
Folgendes gemacht, ganz kurz:

create table test (
Projekttitel varchar(30) not null,
primary key (projekttitel));

Eintragen kann ich so:
Insert Into test (Projekttitel) values ('Hallo'); -> und es funktioniert

Nun, ich möchte das folgende Prozedere via PHP eintragen können. Nur das. Wie stelle ich es an? :- )

Vielen Dank für das Interesse zeigen und für das Helfen!!
LG
Member: EvilMoe
EvilMoe May 16, 2011 at 16:57:27 (UTC)
Goto Top
Ich habe.dir bereits 2x die Lösung zu deinem Problem gesagt. Wenn du es nicht umsetzt kann ich dir auch nicht mehr helfen.
Member: Xaero1982
Xaero1982 May 16, 2011 at 18:19:39 (UTC)
Goto Top
Hi,

meine Frage ist absolut nicht irrelevant, denn wenn du in der Datei nichts drin stehen hast mit der Datenbank wirst du auch nichts in die DB eintragen können, weil die gar nicht bekannt ist.

Und so isses hier auch ... face-smile

Was du dir ansehen solltest habe ich dir bereits gesagt - so lernst du auch nichts, wenn du nur vorgekautes hinschreibst, was noch dazu nicht zum Ziel führt ...

Aber das sagte Moe ja auch schon ...!

VG
Member: themannr1
themannr1 May 16, 2011 at 18:47:54 (UTC)
Goto Top
also..

was soll ich lesen? kennste empfehlungen?

1) Der Datenbank ist bekannt -> $dbase="test"
2) Ich kann nicht im selben FOrmular ausführen, was ich schon mit über 2 Dateien verteiltes Konstrukt schaffe. Ich habe auf Quellcode gehofft, salominische Wörter kenn ich selbst zu genüge.

Aber nichts desto trotzt. Vielen Dank!
Grüesse.PS
Member: Xaero1982
Xaero1982 May 16, 2011 at 18:56:58 (UTC)
Goto Top
Hi,

du sollst nach PHP und MYSQL googlen.

1) Du kennst sie, die dbopen.inc.php kennt sie, aber das wars ... dir fehlt der entscheidende Punkt, den Moe nannte:

Zitat:
Dir fehlt ein mysql_query($ausgabe) oder ein $DB->query($ausgabe) je nachdem was du verwendest.
Und weiter:
Alles was du machst ist dein SQL query in einer Variable zu speichern.

Du fragst ja nicht mal nach was damit gemeint ist, das zeigt uns dann einfach nur: Du liest nicht das was wir dir schreiben!

2) Keine Ahnung was du damit sagen willst...

Code? Bekommste ... ob du was damit anfangen kannst bezweifel ich, aber wir werden sehen face-smile

database.inc.php
<?php

class Database
{
  private $handler;

  // Constructor zum Verbinden
  public function __construct($host,$user,$pass,$database){
  	if(!$this->handler = mysql_connect($host,$user,$pass))
    	echo "Fehler beim Verbinden...";  
    else {
    	if (!mysql_select_db($database,$this->handler))
	    	echo "Fehler beim Auswählen der database...";  
	}
    return $this->handler;
  }

  // Verbindung zum Datenbankserver
  public function setDB($host,$user,$pass) {
  	if(!$this->handler = mysql_connect($host,$user,$pass))
    	echo "Fehler beim Verbinden...";  
    return $this->handler;
  }

  // Auswahl der Datenbank
  public function selectDB($database) {
	if (!mysql_select_db($database,$this->handler))
    	echo "Fehler beim Auswählen der database...";  
  }

  // Abfrage an Datenbank
  public function SQL($query) {
  	$result = mysql_query($query,$this->handler) or die(mysql_error());
    return $result;
  }

  // Destructor
  function __destruct() {
//  	mysql_close($this->handler);
  }

}
?>

Und weiter mit Beispiel:

<?php
	REQUIRE_ONCE("database.inc.php");  

         $_SESSION['db']=new Database("Server","User","Passwort","Datenbank");  


$result=$_SESSION['db']->SQL("INSERT INTO test  (ID) VALUES ('$_GET[Projekttitel]')");  
Das Formular musst du noch entsprechend einbauen...

Und wie angemerkt ... sql injection hab ich nicht eingebaut ...

VG

[Edit Biber] Codeformatierung auf "type=php" ergänzt [/Edit]
Oh danke face-smile
Member: EvilMoe
EvilMoe May 16, 2011 at 19:31:45 (UTC)
Goto Top
Warum eine eigene Klasse? Nutz doch PDO oder MySQLi und fertig.
Member: Xaero1982
Xaero1982 May 16, 2011 at 19:33:13 (UTC)
Goto Top
Ach das ist ca. von 2006 oder so face-smile

Er wollte Code, nun hat er Code ... face-smile)

VG
Mitglied: 29725
29725 May 24, 2011 at 14:16:09 (UTC)
Goto Top
Zitat von @Xaero1982:
Ach das ist ca. von 2006 oder so face-smile

Er wollte Code, nun hat er Code ... face-smile)

VG

NICHT hilfreich!
Member: EvilMoe
EvilMoe May 24, 2011 at 14:45:15 (UTC)
Goto Top
Die Lösung wurde bereits mehrmals gesagt.
Kann also geschlossen werden.

Meinst du durch deinen beitrag wird es besser?
Member: Xaero1982
Xaero1982 May 24, 2011 at 17:09:44 (UTC)
Goto Top
Zitat von @29725:
> Zitat von @Xaero1982:
> ----
> Ach das ist ca. von 2006 oder so face-smile
>
> Er wollte Code, nun hat er Code ... face-smile)
>
> VG

NICHT hilfreich!

Willst du mich auf den Arm nehmen?!
Wenn du keine Ahnung hast brauchst du keine sinnlosen Kommentare schreiben!

VG
Member: Biber
Biber May 24, 2011 at 17:35:54 (UTC)
Goto Top
[OT]
Kennt ihr denn schon mein immer wieder gern rezitiertes "Fehlende Passgenauigkeit von Anforderungen und Voraussetzungen"?

Ich fürchte, der schon so oft von mir erbettelte 1-Euro-Döner-farbene Haken hängt zwar am Beitrag, ist aber vollkommen irreführend.

@themannr1
Bitte nicht verschnupft reagieren, aber nach meinem Eindruck nützt dir ein egal ob 10zeiliger oder 100seitiger Fertigcode
mit oder ohne Klassen oder Bart noch überhaupt nichts.

Investiere sinnvollerweise erst mal ein, zwei Abende in ein Tutorial zum Thema "mySQL und php".
Von diesen Tutorials gibt es nun wirklich mehr als FDP-WählerInnen in Bremen und sie sind strukturiert und es stehen Wahrheiten darin.

Wenn ich diesen für alle Beteiligten unbefriedigenden Beitrag der Bremer FDP hinterher schicken darf, dann schreib mir bitte eine PN mit Betreff "Ab dafür".
Ansonsten lasse ich ihn hier auch stehen, falls einer von euch ihn mal für eine Bewerbungsmappe braucht.

[Edit 23:30]
Sorry @themannr1 und danke @Xaero1982 für den Hinweis - meine Reaktion war vor allem hervorgerufen durch ChristophDs Kommentar, den ich fälschlicherweise dem Beitragsersteller zugeordnet habe.

Dennoch - ich habe eben nochmal den Beitragsverlauf gelesen.
Zu dem (konstruktiv und ehrlich gemeinten) Hinweis, sich erstmal mit den Grundlagen auseinandersetzen und das strukturiert, stehe ich nach wie vor.
Okay, das Anraunzen lass ich weg.

[/Edit]


Grüße
Biber
[/OT]
Mitglied: 29725
29725 May 25, 2011 at 11:26:00 (UTC)
Goto Top
Edit: