#1 27. Januar 2012 Kriege mithilfe von PHP keine Daten in meine DB Hey Leute, ich bin gerade an einem Uniprojekt am basteln. Es gibt eine Note auf das Ergebnis. Nun habe ich eine website gebastelt, die designed und alles ist chick. Leider funktioniert das wichtigste nicht: das eintragen von form daten in eine sql Datenbank. ich verwende xampp mit phpmyadmin (ich glaube die neueste Version). Das hier ist der Code vom Formular (noch völlig unformatiert) Code: <form action="index.php?page=kontakt" method="post"> Titel <input type="text" name="titel" value="Titel" /> Interpret <input type="text" name="interpret" value="Interpret" /> Album <input type="text" name="album" value="Album" /> Jahr <input type="text" name="jahr" value="Jahr" /> Wie viele Sterne gibst du dem Song? <form> <input type="radio" name="eins" value="Ein" /> Ein <input type="radio" name="zwei" value="Zwei" /> Zwei <input type="radio" name="drei" value="Drei" /> Drei <input type="radio" name="vier" value="Vier" /> Vier <input type="radio" name="fuenf" value="Fuenf" /> Fünf <input type="submit" value="Senden" /> <input type="reset" value="Löschen" /> </form> <? error_reporting(E_ALL ^ E_NOTICE); ## Hier deklariere ich die Variablen für die Befragung unten $titel = $_GET['titel']; $inter = $_GET['interpret']; $album = $_GET['album']; $jahr = $_GET['jahr']; $eins = $_GET['eins']; $zwei = $_GET['zwei']; $drei = $_GET['drei']; $vier = $_GET['vier']; $fuenf = $_GET['fuenf']; if ($eins) { $vote = '1'; } else if ($zwei){ $vote = '2'; } else if ($drei){ $vote = '3'; } else if ($vier){ $vote = '4'; } else if ($fuenf){ $vote = '5'; }; ## Verbindung mit Datenbank herstellen $connection = mysql_connect('localhost', 'root', ''); if (!$connection){ die('keine Verbindung möglich:' . mysql_error() ); } ## Datenbank "musikcharts" auswählen $db = mysql_select_db ('musikcharts'); if (!$db) { die('die Datenbank ist nicht erreichbar:' . mysql_error() ); } ## Hier deklariere ich die Variablen für die Befragung unten $id =1; $titel = $_GET['titel']; $inter = $_GET['interpret']; $album = $_GET['album']; $jahr = $_GET['jahr']; $eins = $_GET['eins']; $zwei = $_GET['zwei']; $drei = $_GET['drei']; $vier = $_GET['vier']; $fuenf = $_GET['fuenf']; if ($eins) { $vote = '1'; } else if ($zwei){ $vote = '2'; } else if ($drei){ $vote = '3'; } else if ($vier){ $vote = '4'; } else if ($fuenf){ $vote = '5'; }; ## Datensatz Hinzufügen in die Tabelle $sql= "INSERT INTO musik(`titel`, `interpret`, `album`, `jahr`, `like`) VALUES (`$titel`,`$inter`,`$album`,`$jahr`,`$vote`)"; $result = mysql_query($sql); ## Gucken ob der Datensatz drin' ist if (!$result){ die('Ungültige Abfrage:' . mysql_error() ); } echo "Daten wurden eingefügt"; ## Verbindung von Datenbank trennen mysql_close($connection); ?> Es geschieht einfach nichts, wenn ich auf "senden" klicke. es werden nur alle Daten resettet, mehr nicht =/ Google und ich sind mit unserem Latein am Ende Bitte helft! Chris + Multi-Zitat Zitieren
#2 28. Januar 2012 AW: Kriege mithilfe von PHP keine Daten in meine DB mal ganz grob: du versendest die daten per POST, und fragst sie mit GET ab -.- + Multi-Zitat Zitieren
#3 28. Januar 2012 AW: Kriege mithilfe von PHP keine Daten in meine DB oh hab was ausgetestet ... vergessen zurückzuändern. Code: Ungültige Abfrage:Unknown column '' in 'field list' das ist der fehler, den mir masql_error() zurückgibt EDIT: was muss ich denn unter <form action= ... eintragen? ich glaube da drin liegt der fehler + Multi-Zitat Zitieren
#4 28. Januar 2012 AW: Kriege mithilfe von PHP keine Daten in meine DB du musst im VALUES teil " oder ' verwenden. mit `...` sprichst du felder der tabelle an + Multi-Zitat Zitieren
#5 28. Januar 2012 AW: Kriege mithilfe von PHP keine Daten in meine DB Ich raff das nicht mit POST und GET ... ich habe verstanden, dass GET die Werte in der Adresszeile wiedergibt und nicht durch einen header. bei POST werden diese durch einen header weitergegeben. Soweit so gut. ich habe einmal eine php datei, die mir die Tabelle, die bisher erschaffen wurde ausgibt per while Schleife etc. Neben jedem datensatz in der Tabelle ist ein Button, mithilfedessen ich die idLied des jeweiligen Datensatzes übertragen möchte, um den datensatz in einer eigenen tabelle anzuzeigen/zu editieren. Nun ist es so, dass wenn ich auf den "edit" button klicke, der eigentlich ein submit button ist mit nem anderen namen und value, bei der GET Methode alles übergeben wird und ich alles sehen kann und bei der POST methode nicht Es ist natürlich klar, dass ich in beiden phps die Methode angleiche. Jetzt kommt das Mysterium, was ich nicht verstehe: Code: xxx/index.php?page=edit&idLied=X wird übertragen aber nicht entgegengenommen von der edit.php! Somit stehen keinerlei Werte in der edit-Tabelle. wieso ist das so? ich stehe absolut auf dem schlauch... ich habe schon 1000 google seiten zum Thema Post und GET gelesen aber irgendwie komm ich nicht auf das Ergebnis =( Der Link zur Website befindet sich ganz unten! view.php Code: <html> <body> <table style="color:white;"> <? include ("include/db.inc.php"); $sql = "SELECT * FROM musik"; $result = mysql_query($sql); while ($line = mysql_fetch_array($result)) { ?> <tr> <td><?PHP echo $line[interpret];?></td> <td><?PHP echo $line[titel];?></td> <td><?PHP echo $line[album];?></td> <td><?PHP echo $line[like];?></td> <td><a href="index.php?page=edit&idLied=<? echo $line[idLied];?>"><input type="submit" name="edit" value="Bearbeiten" /></a></td> <td><a href="index.php?page=delete&idLied=<? echo $line[idLied];?>"><input type="submit" name="delete" value="Löschen" /></a></td> </tr> <?PHP } mysql_free_result($result); mysql_close(); ?> </table><br> <a href="index.php?page=music"><input type="button" name="insert" value="Neuer Eintrag" /></a> </body> </html> edit.php Code: <html> <body> <? ## Variable deklarieren $idLied = $_POST['idLied']; $button = $_POST['button']; ## Connect zur Datenbank include("include/db.inc.php"); if ($button==" OK " ) { mysql_query(' UPDATE musik SET interpret = "' . $_POST['interpret'] . '", titel = "' . $_POST['titel'] . '", jahr = "' . $_POST['jahr'] . '", like = "' . $_POST['like'] . '" WHERE idLied = "' . $_POST['idLied'] . '" '); mysql_close(); ?> Die Daten wurden eingetragen<br> <a href="index.php?page=view">zur Übersicht</a> } else { $sql = "SELECT * FROM musik WHERE idLied = '$idLied'"; $result = mysql_query($sql); $line = mysql_fetch_array($result) ?> <form action="index.php?page=edit&idLied=<? echo $_POST['idLied']; ?>" method="POST"> Der Interpret <input type="text" name="interpret" value="<? echo $line[interpret]; ?>"><br> Der Titel <input type="text" name="titel" value="<? echo $line[titel]; ?>"><br> Das Jahr <input type="text" name="interpret" value="<? echo $line[jahr]; ?>"><br> Dein Voting <input type="radio" name="vote" value="<? echo $line[like]; ?>" /> Ein <input type="radio" name="vote" value="<? echo $line[like]; ?>" /> Zwei <input type="radio" name="vote" value="<? echo $line[like]; ?>" /> Drei <input type="radio" name="vote" value="<? echo $line[like]; ?>" /> Vier <input type="radio" name="vote" value="<? echo $line[like]; ?>" /> Fünf <input type="submit" name="button" value=" OK " /> </form> <? } ?> </body> </html> http://chr1skayone.dyndns.biz/Pruefung/index.php?page=view das hier ist bis ich den PC ausschalte der link zut view.php. Danke Chris + Multi-Zitat Zitieren
#6 28. Januar 2012 AW: Kriege mithilfe von PHP keine Daten in meine DB push =)wurde edited + Multi-Zitat Zitieren
#7 28. Januar 2012 AW: Kriege mithilfe von PHP keine Daten in meine DB $_GET -> foo.php?name=wert ergibt im script: PHP: $_GET [ 'name' ] == 'wert' $_POST wird "unsichtbar" über die HTTP-header gesendet. in deinem script seh ich aber nix von $_GET. PHP: interpret = '$interpret' versuch ma $_GET['interpret'] + Multi-Zitat Zitieren
#8 28. Januar 2012 AW: Kriege mithilfe von PHP keine Daten in meine DB habs gemacht aber es ändert sich nichts =/ ich aktualisiere sofort mal mein script hier 2 posts über mir ... ich bin echt am Ende mit meinem Latein -> verzweiflung macht sich breit, weil ich den Fehler nicht sehe =( -> aktualisiert + Multi-Zitat Zitieren
#9 28. Januar 2012 AW: Kriege mithilfe von PHP keine Daten in meine DB hat dir irgendwer gesagt, dass du $_GET / $_POST als normale variablen ansprechen kannst? sieht nämlich sehr danach aus. egal ob $_GET oder $_POST -> du musst die variablen darüber ansprechen. also $button -> $_GET['button'] bzw. $_POST['button'] (je nach dem) usw. dann zu deinem UPDATE query, mach es so: PHP: mysql_query ( ' UPDATE musik SET interpret = "' . $_POST [ 'interpret' ] . '", titel = "' . $_POST [ 'titel' ] . '", jahr = "' . $_POST [ 'jahr' ] . '", like = "' . $_POST [ 'like' ] . '" WHERE idLied = "' . $_POST [ 'idLied' ] . '"' ); merke: mach es so übersichtlich wie möglich. SQL/PHP sind leerzeichen/zeilen egal. + Multi-Zitat Zitieren
#10 28. Januar 2012 AW: Kriege mithilfe von PHP keine Daten in meine DB danke für den Tip! Ich mache das jetzt alles übersichtlicher, dennoch besteht das selbe Problem wie vorhin. =( -> irgendwas hab ich da verkuddel-muddelt ... aber ich finde nicht, was es ist hm jetzt funktioniert alles so wie es soll, nur dass die daten nicht eingetragen werden =/ + Multi-Zitat Zitieren
#11 28. Januar 2012 AW: Kriege mithilfe von PHP keine Daten in meine DB Dann Teile auskommentieren und schauen, wo der Fehler liegt, wenn du aus den Fehlermeldungen nicht schlau wirst. + Multi-Zitat Zitieren
#12 28. Januar 2012 AW: Kriege mithilfe von PHP keine Daten in meine DB schon alles probiert ... ich verstehe einfach nicht, dass das hier: Code: <form action="/Pruefung/index.php?page=edit&idLied=<? echo $_GET['idLied']; ?>" method="[b]GET[/b]"> Der Interpret <input type="text" name="interpret" value="<? echo $line[interpret]; ?>"> Der Titel <input type="text" name="titel" value="<? echo $line[titel]; ?>"> Das Jahr <input type="text" name="interpret" value="<? echo $line[jahr]; ?>"> Dein Voting <input type="radio" name="vote" value="<? echo $line[like]; ?>" /> Ein <input type="radio" name="vote" value="<? echo $line[like]; ?>" /> Zwei <input type="radio" name="vote" value="<? echo $line[like]; ?>" /> Drei <input type="radio" name="vote" value="<? echo $line[like]; ?>" /> Vier <input type="radio" name="vote" value="<? echo $line[like]; ?>" /> Fünf <!-- OK Button --> <input type="submit" name="button" value=" OK " /> </form> folgendes liefert: Code: index.php?interpret=Interpret&titel=Titel&interpret=Jahr&button=+OK+ und ich im prinzip auf der index.php bin ohne dass etwas passiert. und folgendes: Code: <form action="/Pruefung/index.php?page=edit&idLied=<? echo $_GET['idLied']; ?>" method="[b]POST[/b]"> Der Interpret <input type="text" name="interpret" value="<? echo $line[interpret]; ?>"> Der Titel <input type="text" name="titel" value="<? echo $line[titel]; ?>"> Das Jahr <input type="text" name="interpret" value="<? echo $line[jahr]; ?>"> Dein Voting <input type="radio" name="vote" value="<? echo $line[like]; ?>" /> Ein <input type="radio" name="vote" value="<? echo $line[like]; ?>" /> Zwei <input type="radio" name="vote" value="<? echo $line[like]; ?>" /> Drei <input type="radio" name="vote" value="<? echo $line[like]; ?>" /> Vier <input type="radio" name="vote" value="<? echo $line[like]; ?>" /> Fünf <!-- OK Button --> <input type="submit" name="button" value=" OK " /> </form> liefert: Code: http://localhost/Pruefung/index.php?page=edit&idLied=5 und ich bin auf der edit seite, aber es geschieht nichts ... + Multi-Zitat Zitieren
#13 28. Januar 2012 AW: Kriege mithilfe von PHP keine Daten in meine DB Code: Der Interpret <input type="text" name="interpret" value="<? echo $line[interpret]; ?>"> Der Titel <input type="text" name="titel" value="<? echo $line[titel]; ?>"> Das Jahr <input type="text" name="interpret" value="<? echo $line[jahr]; ?>"> schau dir die input-felder mal ganz genau an, achte auf name="..." + Multi-Zitat Zitieren
#14 28. Januar 2012 AW: Kriege mithilfe von PHP keine Daten in meine DB okay habs geändert =( doof von mir ... hat sich trotzdem nichts geändert =/ habe jetzt mal folgendes eingebaut, um zu gucken ob mit post/get was übetragen wird : Code: <? if ($_GET['idLied'] == NULL && $_POST['idLied'] == NULL) { echo 'GET und POST wurden nicht übergeben!'; } elseif ($_POST['idLied'] == NULL) { echo 'GET ' . $_GET['idLied']; } elseif ($_GET['idLied'] == NULL) { echo 'POST ' . $_POST['idLied']; } ?> und es wird ein GET übertragen ... nun habe ich das problem, dass wenn ich den input method auf Get stelle, dass page=edit nicht mitübertragen wird ... woran liegt des? + Multi-Zitat Zitieren
#15 28. Januar 2012 AW: Kriege mithilfe von PHP keine Daten in meine DB hier sin übrigens die Dateien ge-RARt http://dl.dropbox.com/u/37491714/Pruefung.rar und das hier ist die SQL-Datei Code: -- phpMyAdmin SQL Dump -- version 3.4.5 -- http://www.phpmyadmin.net -- -- Host: localhost -- Erstellungszeit: 28. Jan 2012 um 20:12 -- Server Version: 5.5.16 -- PHP-Version: 5.3.8 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; -- -- Datenbank: `musikcharts` -- -- -------------------------------------------------------- -- -- Tabellenstruktur für Tabelle `musik` -- CREATE TABLE IF NOT EXISTS `musik` ( `idLied` int(11) NOT NULL AUTO_INCREMENT, `titel` varchar(50) DEFAULT NULL, `interpret` varchar(50) DEFAULT NULL, `album` char(50) DEFAULT NULL, `jahr` char(4) DEFAULT NULL, `like` tinyint(1) DEFAULT NULL, PRIMARY KEY (`idLied`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=60 ; -- -- Daten für Tabelle `musik` -- INSERT INTO `musik` (`idLied`, `titel`, `interpret`, `album`, `jahr`, `like`) VALUES (1, 'Dockyard', 'Paul Kalkbrenner', 'Berlin Bla', '2008', 5), (2, 'Titel', 'Interpret', 'Album', 'Jahr', 3), (3, 'Titel', 'Interpret', 'Album', 'Jahr', 3), (4, 'Titel', 'Interpret', 'Album', 'Jahr', 3), (5, 'Titel', 'Interpret', 'Album', 'Jahr', 3), /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; + Multi-Zitat Zitieren