Checkbox Werte(tinyint(1)) aus Mysql-DB auslesen und neue Werte einfügen

alessandro_91

Grünschnabel
Hallo Zusammen

Ich muss mich erneut an euch wenden, da ich seit längerem an ein Problem hänge..

Beschreibung:
In einer Datenbank habe ich Attribute mit dem Datentyp tinyint(1) sprich entwerde den Wert 1 oder 0.
Nun soll meine PHP-Seite die Werte dieses Attributes auslesen.
Wenn der Wert des Attributes 0 ist, soll die Checkbox auf der PHP-Seite nicht angewählt werden, steht hingegen eine 1 im Attribut, soll die Checkbox angewählt sein.

Ich habe bereits die möglichkeit, alle Werte auslesen zu lassen (und als Text oder Zahl anzeigen zu lassen)

Wie ich nun die Checkboxen ansteuer soll weiss ich nicht.. :-/

Hier ein Codeabschnitt:

PHP:
<FORM name="readvalues" method="GET" action="kundenbearbeiten.php" >
<?php
echo "Die Enter-Taste bewirkt NUR das Auslesen der Werte";
echo "</br>";   
echo "Kundennummer:";               
?>
    <input type='text' name='kdnr'  required='required'>   
    <input type='submit' name='readvalues' value='Werte Auslesen'>
    <input type='submit' name='writevalues' value='Werte in Datenbank schreiben'">
                                  
<?php
//Um die Fehlermeldung der Initial-Variable(welche am Anfang Leer ist) zu unterdrücken setzen wir folgende If-Schleife:  
if (isset($_GET['kdnr']) AND $_GET['kdnr']){   
$temp = $_GET['kdnr'];   
}           

if (isset($_GET['kdnr']) AND $_GET['kdnr']){                   
$result = send_sql($globalDbName, "Select * from kundentbl where debitor =".$_GET['kdnr']."");
    while ($zeile=mysql_fetch_array($result)){
          echo "Debitor:";
          echo "</br>";
          echo "<input type='text' name='debitor' value=".$zeile['debitor'].">";
          echo "</br>";
          echo "Firma:";
          echo "</br>";
          echo "<input type='text' name='firma' value='".$zeile['firma']."'>";
          echo "</br>";
          echo "Checkbox:";
          echo "</br>";
          echo "<input type='checkbox' name='check' value='".$zeile['check']."'>";
// Hier kann ich den Wert des Tinyint(1) so nicht auslesen.. ist ja irgendwie logisch^^ wie kann ich den Wert nun korrekt in diese Checkbox eintragen?
}                           
          }

if(isset($_GET['writevalues']) AND $_GET['writevalues']){
 send_sql($globalDbName,"Update kundentbl set debitor=".$_GET['debitor'].",
                                  firma='".$_GET['firma']."',  
                                  check='".$_GET['check']."'  <<<<< Hier müsste ich den neuen Wert in die Datenbank übermitteln
                                  where debitor=".$temp."");

echo "<meta http-equiv=\"refresh\" content=\"0; URL=kundenbearbeiten.php\">";
//um das erneute auslesen der Daten zu verhindern(ohne dies, würde nach senden der SQL-Inj. die alte Werte wider in den Feldern stehen, obwohl die neuen bereits in der Datenbank geschrieben wurden)
                                           
}
?>
</FORM>


Mir ist klar dass im Code Sicherheitslücken sind und nicht so schön für die Profis ist.. Mir geht es in erster linie darum das es funktioniert.. Die Seite wird nur im Intranet(von unseren Mitarbeiter) benutz.

Ich hoffe irgend jemand kann mir helfen..

Vielen Dank im Voraus

Grüsse
Alessandro
 
Hi ComFreek

Vielen Dank für deine Hilfestellung habe es nun geschafft die Werte korrekt auslesen zu lassen (Checkbox wird ausgewählt, wenn eine 1 in der Datenbank steht)
und auch die Werte korrekt in die Datenbank einzuschreiben(Bei ausgewählter checkbox wird eine 1 in die Datenbank geschrieben:

Hier die Codes:

Werte auslesen:



PHP:
if (isset($_GET['kdnr']) AND $_GET['kdnr']){  
                            $temp = $_GET['kdnr'];  
                        }
if(isset($temp) and $temp){
if ($temp > 0) {
    $result = send_sql($globalDbName, "
       SELECT  *
       FROM    kundentbl
       WHERE   debitor = '" . $sqle($temp) . "'
   ");
    while ($row = mysql_fetch_array($result)) {
        $debitors[] = $row;
    }
}                  
                      
}
HTML:
 <form name="readvalues" method="get" action="kundenbearbeiten.php">
        Die Enter-Taste bewirkt NUR das Auslesen der Werte<br>
        Kundennummer: <input type="text" name="kdnr" maxlength="6" required="required">
  
        <input type="submit" name="readvalues"  value="Werte Auslesen">
        <input type="submit" name="writevalues" value="Werte in Datenbank schreiben">
  
        <?php foreach ($debitors as $debitor) : ?>
             <br>
            Debitor:<br>
            <input type="text" name="debitor" value="<?=$e($debitor['debitor'])?>"><br>
  
            Firma:<br>
            <input type="text" name="firma" value="<?=$e($debitor['firma'])?>"><br>
  
       
            FW:<br>
            <input type="checkbox" name="fw" "<?php
                if($debitor['fw'] == 1){
                            echo"value='1' checked='checked'";
                }
            else{
                            echo"value='0'";
            }
            ?>"><br>
           <?php endforeach; ?>
  </form>

Werte einschreiben (NEUER KUNDE)

PHP:
if(isset($_GET['kundeerstellen']) AND $_GET['kundeerstellen']){
                      
            if($_GET['fw'] == 'on'){
                $fw = 1;  
            }
            else{
                $fw = 0;
            }
       
            send_sql($globalDbName,"
                insert into kundentbl(
                debitor,
                firma,
                fw
                )
              
                values
                (".$_GET['debitor'].",
                '".$_GET['firma']."',
                ".$fw."'
                )");
              
            }
?>

Werte einschreiben (BESTEHENDER KUNDE):

PHP:
if(isset($_GET['writevalues']) AND $_GET['writevalues']){
    send_sql($globalDbName,"Update kundentbl set debitor=".$_GET['debitor']." where debitor=".$temp."");
    send_sql($globalDbName,"Update kundentbl set firma='".$_GET['firma']."' where debitor=".$temp."");
  
    if($_GET['fw'] == 'on'){
                 send_sql($globalDbName,"Update kundentbl set fw=1 where debitor=".$temp."");
    }
    else {
                send_sql($globalDbName,"Update kundentbl set fw=0 where debitor=".$temp."");
    }
                                 
    echo "<meta http-equiv=\"refresh\" content=\"0; URL=kundenbearbeiten.php\">"; //das andere mit Location:kundenbearbeiten.php und so ging nicht... so macht er was ich möchte :)
}

Hoffe man versteht ein bisschen die Logik dahinter..

Der Code ist nicht Professionell gestaltet ich weiss.. aber es funktioniert :)

P.S. bitte den Thread schliessen
 

Neue Beiträge

Zurück