• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

PHP mysql anbindung problem

Lus1ra

Neues Mitglied
Hallo Leute,
ich soll mit php eine Anbindung an eine Mysql Datenbank schreiben( schule ). Die Daten kommen aus einem Formular und sollen mit php in eine Datenbank geschrieben werden. Mein problem ist dass die Syntax richtig zu sein scheint nur werden die Daten in der Datenbank nicht geändert :/



Formular Code
<form action="preisaenderung.php" method="post">
<form>

neuer Preis<br><input type="text" name="preis" size="20" ><br>
artikelnummer<br><input type="text" name="artnummer" size ="20"><br>
<input type="submit" value="ändern">
<input type="reset" value="reset">






</form>




PHP CODE
<?php

$preis = $_POST["preis"];
$artnummer = $_POST["artnummer"];
$preisalt = mysql_query("SELECT * FROM 'artnummer' WHERE ".$artnummer.";");

$dbh = mysql_connect("localhost","root", "");
mysql_select_db("gemüse");

$sql = "UPDATE 'artnummer' SET 'preis'=".$preis." WHERE ".$artnummer.";";
if($preis==$preisalt)echo "Der Preis wurde nicht korrekt geaendert ";
else echo"Der neue Preis ist " .$preis; echo" euro ";




?>
 
Hallo Leute,
ich soll mit php eine Anbindung an eine Mysql Datenbank schreiben( schule ). Die Daten kommen aus einem Formular und sollen mit php in eine Datenbank geschrieben werden. Mein problem ist dass die Syntax richtig zu sein scheint nur werden die Daten in der Datenbank nicht geändert :/



Formular Code
<form action="preisaenderung.php" method="post">
<form>

neuer Preis<br><input type="text" name="preis" size="20" ><br>
artikelnummer<br><input type="text" name="artnummer" size ="20"><br>
<input type="submit" value="ändern">
<input type="reset" value="reset">






</form>




PHP CODE
<?php

$preis = $_POST["preis"];
$artnummer = $_POST["artnummer"];
$preisalt = mysql_query("SELECT * FROM 'artnummer' WHERE ".$artnummer.";");

$dbh = mysql_connect("localhost","root", "");
mysql_select_db("gemüse");

$sql = "UPDATE 'artnummer' SET 'preis'=".$preis." WHERE ".$artnummer.";";
if($preis==$preisalt)echo "Der Preis wurde nicht korrekt geaendert ";
else echo"Der neue Preis ist " .$preis; echo" euro ";




?>

Ich weiß ja nicht, was die Schulen heutzutage noch lehren aber das ist aufjedenfall nicht korrekt. Bevor du überhaupt weiter machst, solltest du von MySQL auf MySQLi oder PDO umsteigen. Als nächste würde ich auf Umlaute im Datenbanknamen verzichten. Gleiches gilt für Dateinamen.

HTML:
<form action="preisaenderung.php" method="post">
<form>
Nun zu deinem Quellcode. Abgesehen davon das er nicht wirklich schön ist, hast du zwei mal einen Form-Tag geöffnet.

PHP:
$preis = $_POST["preis"];
$artnummer = $_POST["artnummer"];
$preisalt = mysql_query("SELECT * FROM 'artnummer' WHERE ".$artnummer.";");
$dbh = mysql_connect("localhost","root", "");
mysql_select_db("gemüse");
$sql = "UPDATE 'artnummer' SET 'preis'=".$preis." WHERE ".$artnummer.";";
if($preis==$preisalt)echo "Der Preis wurde nicht korrekt geaendert ";
else echo"Der neue Preis ist " .$preis; echo" euro ";

Fällt dir was auf? Du musst natürlich erst zu deinem Server und Datenbank verbinden bevor du einen Abfrage ausführst. Hier findest du ein paar Beispiele zu SELECT-Abfragen mit MySQLi.
 
Entschuldigung falls ich mich unklar ausgedrückt hab, Das Formular ist natürlich eine extra datei sowie die PHP Datei. Deswegen sieht das seltsam aus ich wollte nur möglichst viel in den Post reinkriegen und dachte es wird gleich verstanden!
Und habe ich mich nicht mit diesem befehl damit verbunden ?
"
  1. $dbh = mysql_connect("localhost","root", "");
  2. mysql_select_db("gemüse");
 
Entschuldigung falls ich mich unklar ausgedrückt hab, Das Formular ist natürlich eine extra datei sowie die PHP Datei. Deswegen sieht das seltsam aus ich wollte nur möglichst viel in den Post reinkriegen und dachte es wird gleich verstanden!
Und habe ich mich nicht mit diesem befehl damit verbunden ?
"
  1. $dbh = mysql_connect("localhost","root", "");
  2. mysql_select_db("gemüse");

Ja hast du, aber erst nachdem dem du deine Abfrage ausführst.
 
Hm ok ich habe die beiden befehle nun nach oben verschoben und der Wert wird in der Datenbank leider trotzdem nicht geändert :/
 
Der ganze PHP-Code ist völliger Blödsinn.
PHP:
$sql = "UPDATE 'artnummer' SET 'preis'=".$preis." WHERE ".$artnummer.";";
Das ist nur eine Zuweisung, davon bekommt die Datenbank herzlich wenig mit und somit wird auch nichts verändert.
PHP:
if($preis==$preisalt)
Hier werden Äpfel mit Birnen verglichen.

Ich empfehle dir dringends die Grundlagen zu lernen und auch mal etwas logisch zu denken. Meist auch sehr hilfreich, wenn man den Quellcode ordentlich einrückt, damit man nicht den Überblick verliert
 
Hm ok ich habe die beiden befehle nun nach oben verschoben und der Wert wird in der Datenbank leider trotzdem nicht geändert :/
Weil dein PHP-Code allgemein keinen Sinn ergibt. Ich glaube dir ist nicht wirklich bewusst, was du in den einzelnen Zeilen überhaupt machst.

PHP:
$preis = $_POST["preis"]; // Hier übergibst du deine Daten aus dem Formular 
$artnummer = $_POST["artnummer"]; // Hier übergibst du deine Daten aus dem Formular 

// Soweit so gut ...

/*
* Was machst du hier?
* Ausgesprochen: Wähle alle Spalten der Tabelle "artnummer" aus WO $artnummer
* Da kann ja wohl was nicht stimmen ;)
*/
$preisalt = mysql_query("SELECT * FROM 'artnummer' WHERE ".$artnummer.";");

// Hatte ich schon erwähnt...
$dbh = mysql_connect("localhost","root", "");
mysql_select_db("gemüse");

/*
* Was machst du hier?
* Hier definierst du zwar dein SQL-Statement aber führst es nirgendswo aus.
* Abgesehen davon ist das Statement wieder falsch.
*/
$sql = "UPDATE 'artnummer' SET 'preis'=".$preis." WHERE ".$artnummer.";";

// Warum trennst du eine If-Verzweigung mit einem Simikolon?
if($preis==$preisalt)echo "Der Preis wurde nicht korrekt geaendert ";
else echo"Der neue Preis ist " .$preis; echo" euro ";

Ich schreibe dir mit Absicht keinen kompletten Quellcode hierhin, du sollst ja auch lernen.
Schau dir am besten mal das Tutorial von Schattenbaum dazu an.
 
PHP:
$preisalt = mysql_query("SELECT * FROM 'artnummer' WHERE ".$artnummer.";");
Hier kracht es doch auch schon. Die Select-Anweisung wird so nicht funktionieren.
 
Ich bin ja dabei die Grundlagen zu lernen . Mit für die Schule war gemeint in im Unterricht zum erlernen dieser :/ .
@bdt600 aber mit UPDATE verändert man doch einen Eintrag in der Datenbank oder etwa nicht ?
mysql_query($sql);
dieser Befehl sollte doch eigentlich den Befehl anwenden den ich vorher zugewiesen habe
 
Warum kann diese so nicht funktionieren ?
Siehe mein Beitrag..

Ich bin ja dabei die Grundlagen zu lernen . Mit für die Schule war gemeint in im Unterricht zum erlernen dieser :/ .
@bdt600 aber mit UPDATE verändert man doch einen Eintrag in der Datenbank oder etwa nicht ?
mysql_query($sql);
dieser Befehl sollte doch eigentlich den Befehl anwenden den ich vorher zugewiesen habe
Wo hast du denn bitte diese Anweisung stehen?

Bitte beachte doch @bdt600 und meinen Beitrag. Versuche erstmal dir die Grundlagen anzueignen und zu verstehen, was die einzelnen Zeilen und Funktionen bewirken.
 
Mir ist schon bewusst was die einzelnen Zeilen bewirken aber das ist alles noch relativ frisch. Ich bin ja dankbar für jede Hilfe aber muss das alles mit so einem negativen Unterton geschehen ?

hier mein 2. Versuch

<?php

$preis = $_POST["preis"];
$artnummer = $_POST["artnummer"];


$dbh = mysql_connect("localhost","root", "");
mysql_select_db("gemüse");


$preisalt = mysql_query("SELECT * FROM 'artnummer' WHERE ".$artnummer.";");
$sql = "UPDATE 'artnummer' SET 'preis'=".$preis." WHERE ".$artnummer.";";

mysql_query($sql);
mysql_query($preisalt);

if($preis==$preisalt)
{
echo "Der Preis wurde nicht korrekt geaendert ";
}
else echo"Der neue Preis ist " .$preis; echo" euro ";




?>
 
Auch wenn das falsch ist, die hier einen Quellcode vor die Nase zu klatschen, den du nicht verstehst, hier mal in groben Zügen:
PHP:
<?php
   if (isset($_POST['preis']))
   {
      $dbh = mysql_connect("localhost","root", "")
         or die ("Connection to DB-Server failed");
      
      mysql_select_db("gemüse")
         or die ("Database not found");

      $query = "Update
                   `artnummer`
                 set
                   `preis`='" . mysql_real_escape_string($_POST['preis']) . "'
                 where
                   `artnummer`='" . mysql_real_escape_string($_POST['artnummer']) . "'";
                
      mysql_query($query)
        or die ("MySQL-Error: " . mysql_error());
     
      echo "Preis erfolgreich aktualisiert";
   }
?>
 
Mir ist schon bewusst was die einzelnen Zeilen bewirken aber das ist alles noch relativ frisch. Ich bin ja dankbar für jede Hilfe aber muss das alles mit so einem negativen Unterton geschehen ?

hier mein 2. Versuch

<?php

$preis = $_POST["preis"];
$artnummer = $_POST["artnummer"];


$dbh = mysql_connect("localhost","root", "");
mysql_select_db("gemüse");


$preisalt = mysql_query("SELECT * FROM 'artnummer' WHERE ".$artnummer.";");
$sql = "UPDATE 'artnummer' SET 'preis'=".$preis." WHERE ".$artnummer.";";

mysql_query($sql);
mysql_query($preisalt);

if($preis==$preisalt)
{
echo "Der Preis wurde nicht korrekt geaendert ";
}
else echo"Der neue Preis ist " .$preis; echo" euro ";




?>
Hier geschieht nichts mit negativem Unterton. Ich mag es nur nicht, wenn man nicht liest und nicht ausprobiert. Darfst du jetzt nicht böse nehmen aber wenn du wüsstest was genau du dort machst würdest du feststellen das es Schwachsinn ist.

@bdt600 was ist los? Warum so nett? xD
 
Man kann auch etwas lesen ausprobieren und es trotzdem nicht verstehen deswegen muss man ja nich gleich grummelig werden :( .
Das problem die Befehle "isset" und "mysql_real_escape_string " sind mir nicht bekannt und wir haben sie im Unterricht nicht verwendet deswegen ist das eher unhilfreich aber der Code funktioniert auf jeden Fall.

Wäre es nicht möglich mein Problem mit den wenigen Bekannten Befehlen zu lösen ?
 
Man kann auch etwas lesen ausprobieren und es trotzdem nicht verstehen deswegen muss man ja nich gleich grummelig werden :( .
Das problem die Befehle "isset" und "mysql_real_escape_string " sind mir nicht bekannt und wir haben sie im Unterricht nicht verwendet deswegen ist das eher unhilfreich aber der Code funktioniert auf jeden Fall.

Wäre es nicht möglich mein Problem mit den wenigen Bekannten Befehlen zu lösen ?

PHP:
if (isset($_POST['preis'])) // isset() Prüft, ob eine Variable existiert und nicht NULL ist.
   {
      $dbh = mysql_connect("localhost","root", "") // Verbinde zu localhost
         or die ("Connection to DB-Server failed"); // Wenn Verbindung nicht möglich ist STIRB!!!
   
      mysql_select_db("gemüse") // Wähle die gewünschte Datenbank aus
         or die ("Database not found"); // Wenn diese nicht vorhanden ist STIRB!!!

/*
* mysql_real_escape_string() ruft die Funktion mysql_real_escape_string der MySQL-Bibliothek auf, die folgende
* Zeichen mit einem Backslash ('\') versieht: \x00, \n, \r, \, ', " und \x1a.
*/
      $query = "Update
                  `artnummer`
                set
                  `preis`='" . mysql_real_escape_string($_POST['preis']) . "'
                where
                  `artnummer`='" . mysql_real_escape_string($_POST['artnummer']) . "'";
             
      mysql_query($query)
        or die ("MySQL-Error: " . mysql_error());
   
      echo "Preis erfolgreich aktualisiert";
   }
 
PHP:
if (isset($_POST['preis'])) // isset() Prüft, ob eine Variable existiert und nicht NULL ist.
   {
      $dbh = mysql_connect("localhost","root", "") // Verbinde zu localhost
         or die ("Connection to DB-Server failed"); // Wenn Verbindung nicht möglich ist STIRB!!!
  
      mysql_select_db("gemüse") // Wähle die gewünschte Datenbank aus
         or die ("Database not found"); // Wenn diese nicht vorhanden ist STIRB!!!

/*
* mysql_real_escape_string() ruft die Funktion mysql_real_escape_string der MySQL-Bibliothek auf, die folgende
* Zeichen mit einem Backslash ('\') versieht: \x00, \n, \r, \, ', " und \x1a.
*/
      $query = "Update
                  `artnummer`
                set
                  `preis`='" . mysql_real_escape_string($_POST['preis']) . "'
                where
                  `artnummer`='" . mysql_real_escape_string($_POST['artnummer']) . "'";
            
      mysql_query($query)
        or die ("MySQL-Error: " . mysql_error());
  
      echo "Preis erfolgreich aktualisiert";
   }
vielen dank!
 
deswegen ist das eher unhilfreich aber der Code funktioniert auf jeden Fall.
Ja LMAA, sowas hab' ich aber echt noch nicht gehört. Funktioniert zwar aber hilft nicht. Einfach Weltklasse! Wenn es hier einen "Troll des Monats" geben würde, wärst du mit dem Satz ganz weit oben.

Wenn dir eine Funktion nicht bekannt ist, dann könntest du ja mal in der Doku (ja, die gibt es tatsächlich) nachsehen.
 
Ja LMAA, sowas hab' ich aber echt noch nicht gehört. Funktioniert zwar aber hilft nicht. Einfach Weltklasse! Wenn es hier einen "Troll des Monats" geben würde, wärst du mit dem Satz ganz weit oben.

Wenn dir eine Funktion nicht bekannt ist, dann könntest du ja mal in der Doku (ja, die gibt es tatsächlich) nachsehen.
Funktioniert ist aber in meinem Problem nicht hilfreich weil ich es ja mit den wenigen Befehlen lösen sollte/wollte welche mir bekannt waren.
 
Zurück
Oben