php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 08.12.2011, 14:29  
kun
Neuer Benutzer
 
Registriert seit: 08.12.2011
Beiträge: 3
PHP-Kenntnisse:
Anfänger
kun befindet sich auf einem aufstrebenden Ast
Standard PHP MYSQL Update per Checkbox

Hallo zusammen,

ich habe schon zu meinem Problem schon ein bisschen recheriert komme aber nicht weiter. Ich hoffe jemand kann mir(PHP Anfänger) weiterhelfen.
Und zwar möchte ich über ein dynamisch generiertes Formular welches Daten aus der Datenbankholt meine Checkbox auswählen können und an die Datenbank die Werte 0 und 1 senden für aktiv oder inaktive.
Mein Problem ist, dass ich nicht ganz damit klar komme, wie ich die Werte 0 oder 1 der gwählten Felder, welches gechecked oder unchecked wurde an den UPDATE synthax weitergeben kann.

Hier mal mein Code soweit ich gekommen bin.

PHP-Code:
<form id="formular" action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="POST">
<?php
include "include/connect.php";

    
// SQL Daten werden abgefragt aus der Datenbank und ...
    
$query "SELECT * FROM tbl_bilder";
    
$result mysql_query($query) or die ("Keine Datenbankabfrage m&ouml;glich");
    
$numofrows mysql_num_rows($result);

// ...in eine Tabelle ausgeben mit einer for-schleife
echo "<table class=\"tabelle\" border=\"0\">\n";
echo 
"<tr class=\"head\">
        <th></th>
        <th>ID</th>
        <th>Bildname</th>
        <th>Aktive</th>
    </tr>\n"
;

    for(
$i 0$i $numofrows$i++) {
        
$row mysql_fetch_array($result);

        if(
$i 2) {
            echo 
"<tr class=\"blue\">";
        } 
        else {
            echo 
"<tr class=\"lightblue\">";
        }
                
//hier ist die checkbox 
//die checkbox wird checked wenn in der Datenbank eine 1 eingetragen wurde // das klappt soweit ausserdem übergebe ich die bild_id
    
echo"<td><input  type='checkbox' name='checkbox[]'id='".$row["bild_id"]."' value='".$row["bild_id"]."' "
        if (
$row["aktive"] == "1") { echo "checked";} 
    echo 
"></td>";
    
    echo
'<td>'.$row["bild_id"].'</td>
         <td>'
.$row["bild_name"].'.png<br></td>
         <td>'
.$row["aktive"].'</td>';
    echo 
"</tr>";
    }
echo 
"</table>";


?>

<input type="submit" name="submit" value="submit">
</form>

<?php

//Checkbox abschicken
if (isset($_POST['submit'])) {

    
$check $_POST['checkbox'];
    
$bild_id $_POST['bild_id'];

    foreach (
$check AS $value) {
        
        
//hier liegt mein Problem 
        //ich weiß nicht so richtig wie ich die werte 0,1 übermitteln soll 
        
        
mysql_query("UPDATE tbl_bilder SET aktive = '$aktive' WHERE bild_id = $bild_id");

    } 
// Ende von foreach
}// Ende der If Schleife
kun ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 08.12.2011, 14:38  
Benutzer
 
Registriert seit: 27.03.2006
Beiträge: 60
PHP-Kenntnisse:
Anfänger
Dadelu ist in Verruf geraten
Standard

Hi

Ändere mal diese Zeile
HTML-Code:
input  type='checkbox' name='checkbox[]'id
zu

HTML-Code:
input  type='checkbox' name='checkXY' id
Und dann kannst du die Auswertung so machen wie hier beschrieben:
http://www.php-space.info/php-tutori...n,mit,php.html
Dadelu ist offline   Mit Zitat antworten
Alt 08.12.2011, 14:39  
Erfahrener Benutzer
 
Registriert seit: 25.09.2009
Beiträge: 2.114
PHP-Kenntnisse:
Fortgeschritten
BlackScorp wird schon bald berühmt werdenBlackScorp wird schon bald berühmt werden
Standard

naja das Problem ist, gebe mal dein $_POST array mit print_r aus, du wirst sehen dass die nicht aktivierten Checkboxes garnicht drinstehen.

du müsstest also vorher erstmal alle einträge aus der Datenbank auslesen und dann in der schleife prüfen

PHP-Code:
if(isset($:POST['checkbox'][$row["bild_id"]]) dann wurde das bild aktiviert 
__________________
Mein kleines Projekt
-Cruel Online-
5 von 3 Leuten können kein Bruchrechnen
BlackScorp ist offline   Mit Zitat antworten
Alt 08.12.2011, 14:41  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Ein Checkbox-Wert wird nur übertragen, wenn die Box beim Request angehakt war.

Entweder (A) du fragst ab, ob es einen Wert im POST Array gibt, oder (B) du setzt VOR jede Checkbox ein hidden-field, das eine "0" als Standarwert schickt (bei angekreuzter Checkbox wird das hidden-field durch den Checkbox value überschrieben).

A:
PHP-Code:
if (isset($_POST['<Name der Checkbox>'])) {
  
// Box war angehakt
}
else {
  
// Box war nicht angehakt

B:
PHP-Code:
<input type="hidden" name="<Name der checkbox>" value="0" />
<input type="checkbox" name ="<Name der checkbox>" value="1" />

<?php
if (isset($_POST['<Name der checkbox>']) {
  
$value $_POST['<Name der checkbox>'];
  
// $value == 0 -> Checkbox war nicht angehakt
  // $value == 1 -> Checkbox war angehakt 
}
?>
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline   Mit Zitat antworten
Alt 09.12.2011, 11:57  
kun
Neuer Benutzer
 
Registriert seit: 08.12.2011
Beiträge: 3
PHP-Kenntnisse:
Anfänger
kun befindet sich auf einem aufstrebenden Ast
Standard

Nach einigen Versuchen klappt es soweit einigermaßen.
Ich habe die Version mit dem hidden Feld genommen von lstegelitz.
Jetzt bin ich da angekommen das ich alle Werte in der Datenbank auf 0 oder 1 setzen kann. Aber wie komme ich an die bild_id aus der datenbank heran, weil im value der Werte 0 oder 1 gesetzt sind.
Bei Beispielen (Insert,Delete ;update habe ich nicht gefunden) die ich gesehen habe wurde nämlich die ID ins Value Feld eingesetzt was auch Sinn macht, aber bei mir geht das ja jetzt nicht mehr.
Wie bekomme ich jetzt die ID(bild_id) sodass ich nur bestimmte Werte updaten kann.
Vielen dank für die Hilfe.


PHP-Code:
<?php
    
// SQL Daten werden abgefragt aus der Datenbank und ...
    
$query "SELECT * FROM tbl_bilder";
    
$result mysql_query($query) or die ("Keine Datenbankabfrage m&ouml;glich");
    
$numofrows mysql_num_rows($result);

// ...in eine Tabelle ausgeben
echo "<table class=\"tabelle\" border=\"0\">\n";
echo 
"<tr class=\"head\">
        <th></th>
        <th>ID</th>
        <th>Bildname</th>
        <th>Aktive</th>
    </tr>\n"
;

    for(
$i 0$i $numofrows$i++) {
        
$row mysql_fetch_array($result);

        if(
$i 2) {
            echo 
"<tr class=\"blue\">";
        } 
        else {
            echo 
"<tr class=\"lightblue\">";
        }
                
//hier ist die checkbox //die checkbox wird checked wenn in der Datenbank eine 1 eingetragen wurde 
    
echo"<td>
            <input type='hidden' name='checkbox' id='"
.$row["bild_id"]."' value='0'/>
            <input type='checkbox' name='checkbox' id='"
.$row["bild_id"]."' value='1' "
        if (
$row["aktive"] == "1") { echo "checked";} 
    echo 
"></td>\n";
    echo
'<td>'.$row["bild_id"].'</td>
         <td>'
.$row["bild_name"].'.png</td>
         <td>'
.$row["aktive"].'</td>';
    echo 
"</tr>";
    }
echo 
"</table>";


?>

<input type="submit" name="submit" value="submit">
</form>

<?php


if (isset($_POST['checkbox'])) {

    
$value $_POST['checkbox'];


        if(
$value=="1"){
            
mysql_query("UPDATE tbl_bilder SET aktive ='0' where bild_id = $bild_id " );
            echo 
"Wert wurde auf 0 gesetzt";
        }
        else if(
$value=="0"){
            
mysql_query("UPDATE tbl_bilder SET aktive = '1' where bild_id = $bild_id " );
            echo 
"Wert wurde auf 1 gesetzt";
        }
}



echo 
"<pre>";
print_r($_POST);
echo 
"<pre>";

?>
kun ist offline   Mit Zitat antworten
Alt 09.12.2011, 12:12  
Neuer Benutzer
 
Registriert seit: 09.12.2011
Beiträge: 4
PHP-Kenntnisse:
Anfänger
FiAnKO befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von kun Beitrag anzeigen
Nach einigen Versuchen klappt es soweit einigermaßen.
Ich habe die Version mit dem hidden Feld genommen von lstegelitz.
Jetzt bin ich da angekommen das ich alle Werte in der Datenbank auf 0 oder 1 setzen kann. Aber wie komme ich an die bild_id aus der datenbank heran, weil im value der Werte 0 oder 1 gesetzt sind.
Bei Beispielen (Insert,Delete ;update habe ich nicht gefunden) die ich gesehen habe wurde nämlich die ID ins Value Feld eingesetzt was auch Sinn macht, aber bei mir geht das ja jetzt nicht mehr.
Wie bekomme ich jetzt die ID(bild_id) sodass ich nur bestimmte Werte updaten kann.
Vielen dank für die Hilfe.


PHP-Code:
<?php
    
// SQL Daten werden abgefragt aus der Datenbank und ...
    
$query "SELECT * FROM tbl_bilder";
    
$result mysql_query($query) or die ("Keine Datenbankabfrage m&ouml;glich");
    
$numofrows mysql_num_rows($result);

// ...in eine Tabelle ausgeben
echo "<table class=\"tabelle\" border=\"0\">\n";
echo 
"<tr class=\"head\">
        <th></th>
        <th>ID</th>
        <th>Bildname</th>
        <th>Aktive</th>
    </tr>\n"
;

    for(
$i 0$i $numofrows$i++) {
        
$row mysql_fetch_array($result);

        if(
$i 2) {
            echo 
"<tr class=\"blue\">";
        } 
        else {
            echo 
"<tr class=\"lightblue\">";
        }
                
//hier ist die checkbox //die checkbox wird checked wenn in der Datenbank eine 1 eingetragen wurde 
    
echo"<td>
            <input type='hidden' name='checkbox' id='"
.$row["bild_id"]."' value='0'/>
            <input type='checkbox' name='checkbox' id='"
.$row["bild_id"]."' value='1' "
        if (
$row["aktive"] == "1") { echo "checked";} 
    echo 
"></td>\n";
    echo
'<td>'.$row["bild_id"].'</td>
         <td>'
.$row["bild_name"].'.png</td>
         <td>'
.$row["aktive"].'</td>';
    echo 
"</tr>";
    }
echo 
"</table>";


?>

<input type="submit" name="submit" value="submit">
</form>

<?php


if (isset($_POST['checkbox'])) {

    
$value $_POST['checkbox'];


        if(
$value=="1"){
            
mysql_query("UPDATE tbl_bilder SET aktive ='0' where bild_id = [color="Red"]$bild_id[/color] " );
            echo 
"Wert wurde auf 0 gesetzt";
        }
        else if(
$value=="0"){
            
mysql_query("UPDATE tbl_bilder SET aktive = '1' where bild_id = [color="Red"]$bild_i[/color]d " );
            echo 
"Wert wurde auf 1 gesetzt";
        }
}



echo 
"<pre>";
print_r($_POST);
echo 
"<pre>";

?>
Gib dir mal diese Variable $bild_id mit einem echo aus!

Und du wirst feststellen das sie nicht deklariert sind!
FiAnKO ist offline   Mit Zitat antworten
Alt 09.12.2011, 12:47  
kun
Neuer Benutzer
 
Registriert seit: 08.12.2011
Beiträge: 3
PHP-Kenntnisse:
Anfänger
kun befindet sich auf einem aufstrebenden Ast
Standard

Ich weiß das die Variable bild_id nicht deklariert ist
Da liegt im Moment mein Problem ich komme nicht darauf wie genau ich an die bild_id herankomme.
Ich gebe die ID im Input Feld der Checkbox aus per "id='".$row["bild_id"]."'"
was auch funzt, weiter unten im SQL-UPDATE Teil benötige ich die bild_id ja um zu unterscheiden welche checkbox zu welchen Datensatz passt.
kun ist offline   Mit Zitat antworten
Alt 09.12.2011, 13:40  
Erfahrener Benutzer
 
Registriert seit: 03.08.2010
Beiträge: 1.141
PHP-Kenntnisse:
Anfänger
hausl wird schon bald berühmt werdenhausl wird schon bald berühmt werden
Standard

Zitat:
PHP-Code:
<input type='hidden' name='checkbox' id='".$row["bild_id"]."' value='0'/> 
<
input type='checkbox' name='checkbox' id='".$row["bild_id"]."' value='1' "; 
Die id die Du im HTML Tag vergibts hat "nichts" mit PHP zu tun, das ist die id des HTML Elements das Du so zB mittels CSS formatieren könntest.

Dieses Feld hättest Du derzeit nach absenden des Formulares unter dem Namen "checkbox" mit dem Wert 0 oder 1 im $_POST. Kannst ja mal ein print_r($_POST) machen.

LG
__________________
Keine Zahl != ein Zeichen das keine Zahl ist

Geändert von hausl (09.12.2011 um 13:44 Uhr).
hausl ist offline   Mit Zitat antworten
Alt 09.12.2011, 13:57  
Neuer Benutzer
 
Registriert seit: 09.12.2011
Beiträge: 4
PHP-Kenntnisse:
Anfänger
FiAnKO befindet sich auf einem aufstrebenden Ast
Standard

Was mir noch aufgefallen ist </form> <---- wo ist der Anfang?
FiAnKO ist offline   Mit Zitat antworten
Alt 09.12.2011, 14:11  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Tipp:
Code:
<input type='hidden' name='checkbox[<bild_id>]' value='0'/> 
<input type='checkbox' name='checkbox[<bild_id>]' value='1' />
So könntest du aus dem Namen der Checkbox (bzw. aus dem Schlüssel des "checkbox"-Arrays im POST Array) erfahren, zu welchem Datensatz der Wert (0/1) gehört.
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Datenbank update mit Checkbox Michelangelo PHP Einsteiger 2 02.02.2011 09:34
[Erledigt] MYSQL update über Button frustrated PHP Tipps 2010 4 02.03.2010 20:13
[Erledigt] Update Bild aus mysql Datenbank. YEP PHP Tipps 2009 3 05.12.2009 23:48
[Erledigt] Update Problem wegen MySQL Version ? JanM Datenbanken 16 15.11.2009 22:35
MySQL UPDATE: Feld überall / in allen Tabellen updaten Lightware Datenbanken 13 25.09.2009 12:44
checkbox inhalte weiter verarbeiten mit mysql DB will_php_lernen PHP Tipps 2009 5 06.09.2009 22:32
mySQL UPDATE gibt Fehler aus Tyrra PHP Tipps 2009 12 11.08.2009 18:03
MySQL UPDATE funktioniert nicht dampfrakete Datenbanken 16 20.02.2009 11:33
[Erledigt] Problem beim Mysql UPDATE mastertnt PHP Tipps 2009 4 14.02.2009 17:26
MySQL Server startet nicht mehr richtig... Datenbanken 16 03.03.2006 19:40
Update in mysql funzt nicht maeck PHP Tipps 2005-2 4 27.06.2005 22:52
Error nach mySQL update: mysql_fetch_array() PHP Tipps 2005 5 04.02.2005 17:16
MySQL UPDATE Befehl funktioniert nicht PHP Tipps 2005 6 24.01.2005 15:03
mysql update query mit mehreren Tabellen funktioniert nicht PHP-Fortgeschrittene 5 08.01.2005 16:29
php / Mysql Update auf neuste Version PHP Tipps 2007 5 05.01.2005 19:34

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
checkbox php mysql, mysql update submit, mysql update mit checkbox, php mysql update checkbox with 0 or 1, checkbox php submit

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:29 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum