Checkbox Array übergeben

ayhank

Mitglied
Hi Leute, ich weiß es gibt einige Beiträge über Checkbox und Update in der DB, aber ich werd aus den nicht schlau, ich bin neuling aber.... kommen wir zum Problem.


Ich möchte User freigeben, daher ruf ich die Inhalte meiner DB in einer Tabelle auf, diese wird wieder gegeben alles stimmt, nur kann ich auf dieses Array nicht zugreifen egal wie ich es anstelle, ich wollte fragen ob mir jemand auf die sprünge helfen kann. Ich will mit der vergabe des hakens ein update auslösen in der db das freigabe.

PHP:
    <?php
     
         $verbindung = mysql_connect("localhost", "root", "")
			or die ("Fehler im System");

			mysql_select_db("salayth")
			or die ("Verbidung zur Datenbank war nicht möglich...");
                        
                        $abfrage = "select * FROM student WHERE freigabe = '1'";
                
                        $ergebnis = mysql_query($abfrage);
?>
     
<form method="post" action="adminview.php?page=log">
<table align="center" border="1">
    <tr>
       
        <th>id</th>
        <th>Email</th>
        <th></th>
        <th>Anrede</th>
        <th>Freigabe</th>
        
    </tr>
<?php

        while ($row = mysql_fetch_assoc($ergebnis)) {

?>
    <tr>
        
        
        <td><?php print $row["email"]; ?></td>
        <td><?php print $row["java1"]; ?></td>
        <td><?php print $row["anrede"]; ?></td>
        <td><?php print $row["freigabe"]; ?></td>

        <td><input name="box[]" type="checkbox" value="<?php print $row["id"]; ?>"  /></td>
    </tr>
    
<?php

        }

?>
    <tr>
        <td><input name="weiter" type="submit" value="Weiter" /></td>
     
    </tr>

    
    <?php
   
     
           $verbindung = mysql_connect("localhost", "root", "")
			or die ("Fehler im System");

			mysql_select_db("salayth")
			or die ("Verbidung zur Datenbank war nicht möglich...");                                                          
                        
                        $abfrage = "UPDATE student SET freigabe='2' WHERE '".$row["id"]."'  = id ";
                        
    }
    ?>
    </table>
</form>
würde mich über feedback freuen

hab es mit foreach probiert, aber damit hat es auch nicht funktioniert, kann halt machen was ich will, ich komm nicht an die ids ran, die über die checkbox ausgewählt wurden

PHP:
<?php
     
         $verbindung = mysql_connect("localhost", "root", "")
			or die ("Fehler im System");

			mysql_select_db("salayth")
			or die ("Verbidung zur Datenbank war nicht möglich...");
                          $id = $_POST['id'];
          
          if (isset($_POST['Verifizieren']))
          {
              if(empty($id) || $id == 0)
              {
                  echo "Sie müssen einen User wählen";
              }
             else
            {
               $impid = implode(",",$id);
               $aendern = "UPDATE student SET freigabe = 2 WHERE id in '".$impid."' ";
               echo"$aendern";
               if($aendern == 'true'){
                   
                   echo "Erfolgreich freigegben";
               }  else {
               echo "ne doch nicht";    
               }
            }
          }
 
                        
                        $abfrage = "select * FROM student WHERE freigabe = '1'";
                
                        $ergebnis = mysql_query($abfrage);
?>
     
<form method="post" action="adminview.php?page=log">
    
<table width="50%" align="center" border="1" cellpadding="4">
    
    <tr>
       
        <th>id</th>
        <th>Email</th>
        <th>Freigabe</th>
        <th>Verifizieren</th>
        
    </tr>
<?php

        while ($row = mysql_fetch_assoc($ergebnis)) {

?>
    <tr>
        <td align="center"><?php print $row["id"]; ?></td>
        <td><?php print $row["email"]; ?></td>
        <td align="center"><?php print $row["freigabe"]; ?></td>
        <td align="center"><input name="id[]" type="checkbox" value="<?php print $row["id"]; ?>" /></td>
    </tr>
    
<?php

        }

?>
     
          </table>
    </br>
    </br>
    
    <div align="center">
        <input name="Verifizieren" type="submit" value="Verifizieren" style="width: 100px; height: 30px" />
        <input name="reset" type="submit" value="Abbrechen" style="width: 100px; height: 30px"/>
        
        </br>
        </br>
    </div>

hab jetzt eigentlich alles gemacht ******, aber er lädt die zwei nicht in die datenbank, schauts euch mal an bei gelegenheit
 
hab ich gemacht, der hat nen problem mit dem implode, der greift da nicht zu, die query ist in ordnung. gib das ja auch o aus, mit echo"aendern", hat den niemand nen tip^^
 
Dann lass dir mal $id und $impid mittels var_dump() ausgeben.

Aber ganz ehrlich. ich habe noch nicht begriffen was nicht geht. Was für ein o wird beim Update-QUery?
 
das komische ist, der sql befehl mit in ist ja nicht möglich in phpmyadmin, da nimmt er ihn aber an, so wird der nicht akzeptiert, ich weiß auch nicht was falsch ist, liegt es daran das bei id, die meldung undefined index kommt?, aber er lädt die ids rein, die ich auswähle

habs gemacht, und im string der übergeben wird ist 2, liegt es daran ?, weil 2 ne zahl ist und kein string ?, sondern ein value ? aber das doch das gleiche eigenltich
 
ayhank hat gesagt.:
da nimmt er ihn aber an, so wird der nicht akzeptiert,
Ja was jetzt. Funktioniert er oder nicht? Die Aussagen widersprechen sich zu 180 Grad

2 ist eine Zahl. Du machst darauf ein implode(). Das ist immer noch 2.
Daraus machst du ein IN() (ohne die Klammern)

Entweder du machst ein IN() ,mit Klammern, oder deine Werteliste ist immer nur ein Wert. Dann kannst du dir den implode() sparen
 
also es funktioniert, damit meinte ich nur, das es vom aufbau her korrekt ist, aber nicht das macht was ich will^^

keine ahnung was da nicht stimmt, haste nen tipp wo ich das erarbeiten kann ?
 
das soll ja mein admin modus sein, indem ich user freigebe, beim registriern krieg ich ne mail und jeder kriegt die 1 in sein profil geladen in der db, dann möchte ich die eins zu ner zwei setzten, und so die freigeben.

das ist die ausgabe,

einmal der sql befehl UPDATE student SET freigabe = 2 WHERE id IN 15,20

var dump string(5) "15,20" array(2) { [0]=> string(2) "15" [1]=> string(2) "20" }
 
Das sollte eigentlich ein Fehler geben. Der IN-Befehl ist mit Klammern (siehe Beitrag #10)
SQL:
... WHERE id IN (15, 20)
 
Zuletzt bearbeitet von einem Moderator:
Zurück