[SQL] Kriege mithilfe von PHP keine Daten in meine DB

Dieses Thema im Forum "Webentwicklung" wurde erstellt von ChrIzZ1337, 27. Januar 2012 .

  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
     
  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 -.-
     
  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
     
  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
     
  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
     
  6. 28. Januar 2012
    AW: Kriege mithilfe von PHP keine Daten in meine DB

    push =)wurde edited
     
  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']
     
  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
     
  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.
     
  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 =/
     
  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.
     
  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 ...
     
  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="..."
     
  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?
     
  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 */;
     
  16. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.