Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Eingabe kann nicht in Datenbank eingefügt werden

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Eingabe kann nicht in Datenbank eingefügt werden

    Hallo! Ich habe die Datenbank Reifendruck mit der Tabelle Einstellungen.
    Ein PHP-Seite enthält einen input type="radio" mit den beiden Optionen "letzte Werte anzeigen" und "vergangene Messungen anzeigen".
    Klickt der Benutzer eine der beiden Optionen an, soll die Eingabe in (DB)Reifendruck-> (Tabelle) Einstellungen-> (Spalte)Zeitangabe gespeichert werden. Wird die Seite erneut geladen, soll diese die letzte Benutzereingabe aus der Spalte Zeitangabe lesen um die richtige Option angekreuzt darzustellen.
    Allerdings funktioniert das Einlesen in die Datenbank nicht richtig.

    Der PHP-code lautet:
    PHP-Code:
    //Abfrage der Zeitangabe und Ablegen in $Anzeigeoption_db 
    $myquery "SELECT Zeitangabe FROM  `einstellungen`" ;        
    $query mysql_query($myquery);                    
    $data= array();
    while (
    $row mysql_fetch_array($query)) {
    $Anzeigeoption_db $row ['Zeitangabe'];
    }
                            
    //Eingabe des Formulars1 lesen und in $Anzeigeoption_eg ablegen        
    $Anzeigeoption_eg = ($_POST['Zeitangabe']);
                        
    /*falls Eingabe vorhanden, gilt diese und wird in der Datenbank aktualisiert, falls keine Eingabe vorhanden, soll der Wert aus der Datenbank für Darstellung benutzt werden*/
    if(empty($Anzeigeoption_eg)){
    $Anzeigeoption $Anzeigeoption_db;
    }
    else{
    $myquery "UPDATE `einstellungen`
            SET    Zeitangabe    = '
    $Anzeigeoption_eg'";        
    $query mysql_query($myquery);    
    $Anzeigeoption $Anzeigeoption_eg;    
    }
                            
    //Ausgabe des Formulars Anzeigeoptionen je nach Einstellungen
    if($Anzeigeoption=="vergangene_Messungen"){
    include(
    "form_version1.php");
    }
    else{
    include(
    "form_version2.php");

    in form_version1.php befindet sich das Formular, mit "vergangene_Messungen" =checked und in form_version2.php
    ist aktuelle_Messung angekreuzt.

    form_version2.php:

    PHP-Code:
    <body>    
    <
    form action="einstellungen.php" target="_self" name="anzeigeoption" method="post" class="formular1"

    <
    span class="radiobox">
    <
    input type="radio" name="Zeitangabe" value="vergangene_Messungen"vergangene_Messungen  
    </span>
                    
    <
    span class="radiobox">
    <
    input type="radio" name="Zeitangabe" value="aktuelle_Messung"  checkedaktuelle_Messung                 
    </span> <br>
        
    </
    form>
    </
    body


  • #2
    Kannst du genauer sagen, wo dein Problem liegt?

    - Du weißt offensichtlich wie man radio buttons erstellt. Weißt du auch, wie man sie gruppiert?*
    - Dann muss du ja nach dem Absenden des Formulars nur aus $_POST den passenden Wert auslesen
    - Den kannst du z. B. als Boolean (in der DB TinyInt) interpretieren und dann in der Tabelle speichern. Weißt du z. B. wie man etwas in eine Tabelle einträgt (Stichwort INSERT INTO) und ausliest?
    - Beim Generieren der Seite musst du den Wert natürlich auslesen und die beiden Radio-Buttons entsprechend vorbereiten.*

    * = Lektüre: http://de.selfhtml.org/html/formular...m#radiobuttons

    Kommentar


    • #3
      Ok mein erster Post hat sich nun, da du deinen Code mit gepostet hast, erledigt, daher nun ein neuer Versuch.

      PHP-Code:
      while ($row mysql_fetch_array($query)) { 
      $Anzeigeoption_db $row ['Zeitangabe']; 

      Dir ist klar, dass das alle Abfrageergebnisse durchläuft und nur das letzte in $Anzeigeoption_db speichert? Ist das so gewollt, weil die Tabelle immer nur genau einen Eintrag (eine Zeile) besitzen wird?

      PHP-Code:
      if(empty($Anzeigeoption_eg)){ 
      $Anzeigeoption $Anzeigeoption_db

      Wenn $Anzeigeoption_eg leer ist speicherst du es in $Anzeigeoption? Wozu denn das?

      PHP-Code:
      $myquery "UPDATE `einstellungen` 
              SET    Zeitangabe    = '
      $Anzeigeoption_eg'"
      Das funktioniert nur, sofern es bereits einen Datensatz (Eintrag/Zeile) in der Tabelle gibt! UPDATE kann nur etwas bereits bestehendes ändern! Das heißt irgendwann musst du mal INSERT INTO machen, um initial etwas in die Tabelle zu schreiben. Erst danach funktioniert UPDATE. Du könntest dir also ein (simples) Installationsskript bauen das einmal das hier ausführt:
      Code:
      INSERT INTO einstellungen (zeitangabe) VALUES (0)
      (Sofern 0 ein sinnvoller Anfangswert ist)

      Kommentar


      • #4
        Tut mir Leid, habe aus Versehen sofort auf Veröffentlichen geklickt. Ich hoffe das Problem ist jetzt klarer dargestellt.

        Kommentar


        • #5
          Vielen Dank für die rasche Antwort. Ja, die Tabelle Einstellungen besteht lediglich aus einem Eintrag, der immer wieder aktualisiert werden soll. Das dürfte deshalb kein Problem sein, oder?

          Kommentar


          • #6
            Hab noch was dazu editiert. Ich hab meinen Post auch vorschnell veröffentlicht

            Kommentar


            • #7
              Vielleicht sind die Variablen etwas verwirrend gewählt. Der Index _db steht für Datenbank, _eg steht für Eingabe
              Wenn die Eingabe leer ist, speichere ich $Anzeigeoption_db (Der Wert, den ich anfangs aus der Datenbank auslese) in $Anzeigeoption. Ist jedoch eine Eingabe vorhanden, speichere ich $Anzeigeoption_eg (Der Wert der eben eingegeben wurde) in $Anzeigeoption. Anfangs soll die Seite den Datenbankwert für eine korrekte Darstellung nutzen, sobald eine Eingabe vorliegt, dann diesen Wert.
              Ein Tabelleneintrag liegt schon vor, den habe ich manuell erstellt. Fällt dir vielleicht noch etwas auf?
              Möglicherweise die Reihenfolge oder Syntax...?

              Kommentar


              • #8
                Ok mit den Bezeichnungen hast du mich in der Tat verwirrt. :P

                Kommentar


                • #9
                  Vielen Dank für deine Hilfe monolith. Letztlich hat sich herausgestellt, dass der Benutzer keine Schreibrechte auf der Datenbank hatte.

                  Kommentar


                  • #10
                    Schon interessant, warum man in Quellcodes selten sowas wie

                    http://de2.php.net/manual/de/functio...ected-rows.php

                    und

                    http://de2.php.net/manual/de/function.mysql-error.php

                    findet. Würde die Fehlersuche deutlich vereinfachen.

                    Obwohl man eigentlich die MySQL-Extension sowieso nicht mehr nutzen sollte, sondern auf MySQLi umsteigen sollte.
                    Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

                    Kommentar

                    Lädt...
                    X