Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Werte eines Datensatzes einzeln auslesen (MySQL)

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Werte eines Datensatzes einzeln auslesen (MySQL)

    ciao! Wie kann ich bei meinem Skript, einen einzelnen Wert aus einer DB holen, ohne das ich einen neune Query mache?

    Also hier z.B.
    PHP-Code:
    case 'checkbox';
    if( !
    $dbresult['name'] == "" )
                {
                    
    $form_checkbox '<input type="'.$form_type.'" option value="'.$form_value.'" checked="'.$form_checked.'">'.$form_text.' *';
                    echo 
    $form_checkbox.$br;
                } 
    Das Problem nun ist, das es diesen Wert für alle Datensätze abfragt, Wenn also ein Inputfeld kein name hat, wird also immer false augegeben, obwohl ich den Wert für die Checkbox überprüfen will.

    Hier mal den Code, vielleicht habe ich was gravierendes falsch gemacht

    PHP-Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de">
    <head>
    <title>PHPFormGen by ME</title>
    </head>


    <body>
    <h3>Pflichtfelder sind mit einem Stern (*) gekennzeichnet!</h3>
    <?php
    include "_includes/db_connect_inc.php";

    $breakes "<br /><br /><br />";
    $br "<br />\n";
    $groups '';
    $type '';


    //query the database
    $myResult01 mysql_query'SELECT * FROM forms ORDER BY groups'$connectID )  or die ("Unable to select from database");



    while ( 
    $dbresult mysql_fetch_assoc($myResult01)) {
        
            
    $form_name $dbresult['name'];
            
    $form_value $dbresult['value'];
            
    $form_required $dbresult['required'];
            
    $form_checked $dbresult['checked'];
            
            
            if ( 
    $groups <> $dbresult['groups'] ) // Wird beim ersten Durchlauf, true ergeben
            
    {
                if ( 
    $type == 'select' )
                {
                    echo 
    "</select>";
                }
                    
                    
                
    // Schliesst das Fieldset immer nach Gruppenende
                
    if ( !$type == '' 
                {
                    echo 
    "</fieldset>\n" $br
                }
                    
                    
                    
                if ( 
    $dbresult['type'] == 'select'  )
                {
                    echo 
    "<fieldset>\n";
                    echo 
    "Gruppe [<strong>" $dbresult['groups'] . "</strong>] \n";
                    echo 
    "<select>\n\t";
                }
                
                
    // RADIO BUTTONS GROUPING
                
                                
                
    if ( $dbresult['type'] == 'radio'  )
                {
                    echo 
    "<fieldset>\n";
                    echo 
    "Gruppe [<strong>" $dbresult['groups'] . "</strong>] \n" $br;
                }
                
                
                
                
                
                
                
            }
            
            
            
            
                    
        switch( 
    $dbresult['type'] )
        {
            case 
    'select';
                    
    $form_select '<option value="' $form_value'">'$form_name .'</option>' "\n\t";
                    echo 
    $form_select;
                    break;
                    
            case 
    'radio';
                
                if( !
    $dbresult['name'] == "" )
                {
                    if( 
    $dbresult['checked'] == "checked" && $dbresult['required'] == true )
                {
                
    $form_01c '<input type="radio" checked="'.$dbresult['checked'].'" name="'.$dbresult['name'].'" value="'.$dbresult['name'].'" > '.$dbresult['name'].' *';
                echo 
    $form_01c $br;
                }
                else if ( 
    $dbresult['checked'] == "checked" && $dbresult['required'] == false )
                    {
                    
    $form_01 "<input type=radio checked='".$dbresult['checked']."' name='".$dbresult['name']."' value='".$dbresult['name']."'>".$dbresult['name']."";
                    echo 
    $form_01 $br;
                    }
                else if ( 
    $dbresult['checked'] == "off" && $dbresult['required'] == true )
                    {
                    
    $form_01 "<input type=radio name='".$dbresult['name']."' value='".$dbresult['name']."'>".$dbresult['name']."*\n";
                    echo 
    $form_01 $br;
                    }
                else
                {
                    
    $form_01 "<input type=radio name='".$dbresult['name']."' value='".$dbresult['name']."'>".$dbresult['name']."";
                    echo 
    $form_01 $br;
                    }
                }
                break;
            
            
    // CASE CHECKBOX
            
    case 'checkbox';
                
                if( !
    $dbresult['name'] == "" )
                {
                    
    $form_checkbox '<input type="'.$form_type.'" option value="'.$form_value.'" checked="'.$form_checked.'">'.$form_text.' *';
                    echo 
    $form_checkbox.$br;
                }        
                    
            
        break;
            
            
            
        }
        
        
    $groups $dbresult['groups'];
        
    $type $dbresult['type'];
        
        
    }


    ?>
    Jetzt ist die Frage, wie ich jetzt einen einzelnen Datensatz auf Fehlerhafte Eingaben oder halt leere Felder in der DB überprüfe.

    Im Anhang die DB.

    Fehlt was kleines, oder muss ich alles komplett umschreiben?

    greet;s satinez
    Angehängte Dateien

  • #2
    Du erstellst eine Ergebnismenge, indem du eine SQL Abfrage startest. Über diese Ergebnismenge wird iteriert (d.h. in einer Schleife wird jeder einzelne Datensatz abgerufen und etwas mit ihm angestellt). Während der Iteration kannst du jeden Datensatz untersuchen.

    Ich denke, es geht dir um die folgende Passage:
    PHP-Code:
            $form_name $dbresult['name'];
            
    $form_value $dbresult['value'];
            
    $form_required $dbresult['required'];
            
    $form_checked $dbresult['checked']; 
    Vor dem Zugriff muss ein Inhalt auf Gültigkeit geprüft werden:
    PHP-Code:
    // Ist das name Feld vorhanden und gefüllt?
    if (isset($dbresult['name']) && !empty($dbresult['name']))
      
    $form_name $dbresult['name'];
    else 
    // war es nicht, also Defaultvalue
      
    $form_name ''
    oder in Kurzschreibweise (ternärer Operator)
    PHP-Code:
    $form_name = (isset($dbresult['name']) && !empty($dbresult['name'])) ? 
          
    $dbresult['name'] :
          
    ''
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      Danke, aber ich verstehe das irgendwie falsch.
      Ich überprüfe doch erst auf leere Felder z.B. wenn der Case eingetroffen ist, oder?

      Wie weiss er denn auf welchen Datensatz ich das beziehe?


      greet;s satinez

      Kommentar


      • #4
        Zitat von satinez Beitrag anzeigen
        Danke, aber ich verstehe das irgendwie falsch.
        Ich überprüfe doch erst auf leere Felder z.B. wenn der Case eingetroffen ist, oder?

        Wie weiss er denn auf welchen Datensatz ich das beziehe?
        Du greifst schon vor irgendwelchen cases auf die Felder eines Datensatzes zu.

        Grundregel in der Programmierung: Bevor du irgendwas mit Daten machst, überprüfe sie! Starte keine Aktion mit ungeprüften Werten. Stichpunkt: Validierung
        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

        Kommentar


        • #5
          Hmm ok, aber wenn ich nach Öffnung des Cases

          PHP-Code:
          if( !$dbresult['name'] == "" && ! $dbresult['value'] == "" )
          {
          echo 
          'bla';

          Validiere dann ist es ja immernoch vorher oder?

          Kommentar


          • #6
            Es werden Warnungen erzeugt, wenn du ohne vorhergehende Prüfung auf eine Variable zugreifst, die nicht existiert!
            Ausnahmen bilden dabei die Funktionen isset() und empty(), die für genau diesen Zweck da sind: Ohne Meldung überprüfen, ob überhaupt etwas da ist.

            Und schau dir bitte deine while Schleife nochmal an - VOR jeglichen if-Abfragen kommt, relativ weit oben direkt unter dem Schleifenkopf, der Zugriff auf verschiedene Arrayelemente (siehe auch #2).

            Nochmal ein verkürztes Beispiel, beachte die Kommentare im Code:
            PHP-Code:
            // Schleifenkopf
            while ( $dbresult mysql_fetch_assoc($myResult01)) {
                    
            // Zugriff auf Arrayelemente OHNE Prüfung
                    
            $form_name $dbresult['name'];
                    
            $form_value $dbresult['value'];
                    
            $form_required $dbresult['required'];
                    
            $form_checked $dbresult['checked'];
                    
                    ...

            // Wenn der type=select Fall eintritt, werden die $form_* Variablen verwendet... 
            // diese wurden aber vorher nicht überprüft, d.h. $form_name [I]kann[/I] leer sein!
               
            switch( $dbresult['type'] )
                {
                    case 
            'select';
                            
            $form_select '<option value="' $form_value'">'$form_name .'</option>' "\n\t";
                            echo 
            $form_select;
                            break; 
            Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

            Kommentar


            • #7
              Danke

              Kommentar

              Lädt...
              X