php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 16.10.2005, 11:13  
Benutzer
 
Registriert seit: 26.09.2003
Beiträge: 98
wizzardxx
Standard checkboxen

Hallo,
ich habe hier ein Problem mit checkboxen.
Ich habe hier eine Container Klasse (gab es mal als Workshop im Internet)
die es erlaubt bei einem mehrseitigem Formular hin und zur�ck zu navigieren. Das funktioniert mit text und radioboxen auch einwandfrei.
Jetzt komme ich an eine Stelle im Formular wo ich checkboxen verwenden m�chte. Die werte der checkboxen werden weitergegeben allerdings werden die angeklickten checkboxen nicht angezeigt.

PHP-Code:
<?PHP
// Textfelder funktionieren
<input type="text" name="text1" value="<?=$container->fields[text1]; ?>" size="30">

// Radiobutton funktionieren
<input type="radio" name="datei_name" value="<? echo $daten[datei_name] ?>" <? echo $container->fields[datei_name]==$daten[datei_name] ? 'checked':''?> >

//Das Problem checkboxen
<input type="checkbox" name="type[]" value="<? echo $row[2?><? echo $container->fields[type]==$row[2] ? 'checked':''?> >
?>
Die checkboxen sind in einer while schleife.

print_r($container->fields); zeigt mir das die eingegebenen Werte der
checkbox auch �bergeben werden. Nur beim zur�ck Navigieren werden die ausgew�hlten checkboxen nicht angezeigt.
Code:
[type] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
            [3] => 4
        )
Ich poste die Container klasse mal mit:
PHP-Code:
<?PHP
class c_container
{
    var 
$fields;
    var 
$containername;
    var 
$isSet=0//Objektstatus

function c_container($name)
{
    
$this->containername=$name;
if(
$_SESSION[$this->containername])
{
  
$this $_SESSION[$this->containername];
  
$this->isSet=1;
}
else
        
$_SESSION[$this->containername]=$this;
}

function 
setObj($arr)
{
    if(
is_array($arr))
    {
            foreach(
$arr as $key=>$field)
            {
             
                 
$this->fields[$key]= $field;
             }
        
$this->isSet=1;
        
$_SESSION[$this->containername]=$this;
        
    }
}

function 
getField($id="")
    {
        
//attribut zur�ckgeben
        //wenn id mit�bergeben wird, dann spezielles sonst alle attribute
        
$att = ($id)?$this->fields[$id]:$this->fields;
        return 
$att;
    }


function 
deleteField($id="")
{
        if(
$id)
        {
            unset(
$this->fields[$id]);
            
$this->isSet=1;
            
$_SESSION[$this->containername]=$this;
        }
}


function 
clearContainer()
    {
        
//wert reinitialisieren.
        
$this->fields=array();
        
$this->isSet=0;
      
$_SESSION[$this->containername]=$this;
    }


function 
testdelux($cont,$level=0)
{
        
//testschleife (rekursiv)
        
$level++;
        foreach(
$cont as $key=>$wert)
      {
          if(
is_array($wert))
              
$this->testdelux($wert,$level);
            else
                echo 
"LEVEL: $level KEY: $key WERT: $wert 
"
;
        }
}

}
?>
wizzardxx ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 16.10.2005, 14:15  
Gast
 
Beiträge: n/a
Standard

input/checkbox funktioniert wie input/radio.
Zitat:
<input type="checkbox" name="type[]" value="<? echo $row[2] ?>" <? echo
$container->fields[type]==$row[2] ? 'checked':''; ?> >
Das sieht schon anders aus als die Zeilen davor. fields[type], $row[2] ....kommt davort alles nicht vor. Wie sollen wir also den Fehler erkennen können? Die Glaskugeln sind mal iweder in der Reinigung.

Bei http://www.php.net/manual/de/language.types.array.php den Abschnitt "Warum ist $foo[bar] falsch?" bearbeiten.
Werte testweise ausgeben lassen.
echo 'type: ', $container->fields['type'], ', row2:', $row[2];
 
Alt 16.10.2005, 15:05  
Benutzer
 
Registriert seit: 26.09.2003
Beiträge: 98
wizzardxx
Standard

Code:
Das sieht schon anders aus als die Zeilen davor. fields[type], $row[2] ....kommt davort alles nicht vor. Wie sollen wir also den Fehler erkennen können? Die Glaskugeln sind mal iweder in der Reinigung.
Ja das sieht anders aus weil die Radioboxen paar Seiten vorher verabeitet werden und die Daten nur aus einer Tabelle gelesen werden.
Bei den checkboxen lese ich mit Left Join 2 tabellen aus.

Das mit den Arrays (Warum ist $foo[bar] falsch?) habe ich geändert.
echo 'type: ', $container->fields['type'], ', row2:', $row[2];
Zeigt mir folgendes an:
type: Array, row2:1
type: Array, row2:2
type: Array, row2:3 usw.
Das ist auch alles korrekt. Es wird die id von jeder checkbox angezeigt.
Es wird auch alles korrekt auf die nächste Seite weitergegeben.
Aber wenn ich den zurück Button anklicke sind die häkchen nicht mehr vorhanden.
Ich poste auch mal die SQL abfrage.
PHP-Code:
<?
$alt 
=0
$result mysql_query("SELECT a.id, a.art, b.id, b.art_id, b.type, b.preis
From
    schokoladen_art AS a
LEFT JOIN
    schokoladen_type AS b
ON
    a.id = b.art_id"
) OR die (mysql_error());      
            
  while(
$row=mysql_fetch_array($result)) {

   if(
$row['0'] != $alt) {
       
   echo 
"[b]$row['1'][/b]";
   echo 
"
"
;

 
$alt $row['0'];
 } 
?><input type="checkbox" name="type[]" value="<? echo $row['2'?><? echo $container->fields['type']==$row['2'] ? 'checked':''?> ><?
   
echo $row['4'];
   echo 
"
"
;
....


<
input type="submit" name="site5" value="zurück" style="font-family:Verdana;font-size:11px">
<
input type="submit" name="site7" value="weiter" style="font-family:Verdana;font-size:11px">
?>
wizzardxx ist offline  
Alt 16.10.2005, 15:36  
Gast
 
Beiträge: n/a
Standard

Zitat:
type: Array, row2:1
type: Array, row2:2
type: Array, row2:3 usw.
Das ist auch alles korrekt.
sicher?
Wann ist dann $container->fields[type]==$row[2] aus
Zitat:
<? echo $container->fields[type]==$row[2] ? 'checked':''; ?>
erfüllt? Wann ist die Zeichenkette 'Array' gleich einer Zahl?
 
Alt 16.10.2005, 16:17  
Benutzer
 
Registriert seit: 26.09.2003
Beiträge: 98
wizzardxx
Standard

Code:
Wann ist die Zeichenkette 'Array' gleich einer Zahl?
ähmmm ok
habe type in id geändert.

<? echo $container->fields[id]==$row[2] ? 'checked':''; ?>

id: Array, row2:1
id: Array, row2:2

aber das ändert an mein Problem nichts
wizzardxx ist offline  
Alt 16.10.2005, 16:32  
Gast
 
Beiträge: n/a
Standard

Natürlich nicht. Array ist einfach nicht gleich 1 oder 2.
Wo der Fehler liegt und woher 'Array' kommt, kann ich Dir wirklich nicht sagen.
Vielleicht beim Befüllen von $container, vielleicht sogar schon vorher. Keine Ahnung.
Ist $container->fields['id'] ein Feld?
PHP-Code:
<?php echo gettype($container->fields['id']); ?>
Wenn ja, musst Du ein Element auswählen für den Vergleich mit einer Zahl. Wenn nein, hast Du schon vorher einen Fehler gemacht.
 
Alt 16.10.2005, 18:53  
Benutzer
 
Registriert seit: 26.09.2003
Beiträge: 98
wizzardxx
Standard

Also ich denke mal das die Klasse für checkboxen nicht geeignet ist.
Selbst wenn ich cheboxen zum Testen erstelle die nicht Dynamisch sind funktioniert es nicht. Leider gibt es den Workshop über diese Klasse nicht mehr. Den ersten Teil habe ich noch über den Google cache bekommen aber
die anderen Teile sind definitiv weg. Muss ich mir halt was anderes überlegen. Trotzdem danke für deine Hilfe Bruchpilot.
wizzardxx ist offline  
Alt 16.10.2005, 22:58  
Gast
 
Beiträge: n/a
Standard

Kann ich mir kaum vorstellen, da checkbox, radio, select, text alles gleich verschickt und behandelt wird.
Wobei ich denn Sinn dieser Klasse eh nicht verstehe. Welchen Vorteil gegenüber $_SESSION['sessionname']['name']='wert'; hat die Klasse?
 
 


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
[Erledigt] Max Anzahl Checkboxen Hu5eL JavaScript, Ajax und mehr 2 25.06.2008 15:37
Checkboxen und PHP errox PHP Tipps 2008 3 09.12.2007 21:23
Zustand der Checkboxen auslesen Pimbolie1979 PHP Tipps 2007 4 10.07.2007 20:39
Aktivieren einer Checkbox aktiviert viele andere Checkboxen buggybugga HTML, Usability und Barrierefreiheit 3 12.03.2007 16:23
alle checkboxen auswählen? $$$ ThiKool $$$ HTML, Usability und Barrierefreiheit 8 26.07.2005 21:05
(inhalte) der checkboxen aus mysql auslessen PHP Tipps 2005-2 4 07.06.2005 14:02
Mehrere Checkboxen anwählen um mehrere Einträge zu löschen PHP Tipps 2005 7 08.05.2005 04:10
Problem mit auslesen von Checkboxen PHP Tipps 2005 2 08.03.2005 20:10
aktive Checkboxen begrenzen! Geht das?? 18inch HTML, Usability und Barrierefreiheit 9 09.01.2005 04:27
Umfrage-Formular mit Checkboxen und MySQL PHP Tipps 2004-2 10 26.11.2004 18:20
[Erledigt] checkboxen ankreuzen HTML, Usability und Barrierefreiheit 1 19.10.2004 14:22
$_POST und nicht geklickte Checkboxen PHP Tipps 2004 5 29.09.2004 21:41
Checkboxen übernehmen+prüfen+eintragen PHP Tipps 2004 8 09.09.2004 08:39
Auswertung von Checkboxen PHP Tipps 2004 21 23.08.2004 04:41
Checkboxen value übergeben ?? PHP Tipps 2004 15 15.08.2004 23:17

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
echo $row 2->name;, checkboxen werden nicht angezeigt php, php checkboxen nicht angezeigt, php checkbox aus mysql befühlen, klasse checkbox in php, php werte checkbox container

Alle Zeitangaben in WEZ +2. Es ist jetzt 08:10 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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.