php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 30.10.2005, 19:12  
Gast
 
Beiträge: n/a
Standard [Erledigt] Checkboxgenerierung per Schleife

Hallo,

ich habe ein kleines Problem. Sehe vielleicht auch den Wald vor lauter Bäume nicht.
Also es gab dies bezüglich schon einige Threads in diesem Forum, aber keines was mir weitergeholfen hätte.

Ich generiere dynamisch mein Formular aus der Datenbank(Selectboxen ,Radiobuttons,Textfelder, Checkboxen). Das ganze funktioniert auch.
Sowohl selektierte Boxen und gefüllte Textfelder nach verlassen des Formulars (Step back) wieder anzeÃ*gen lassen, als auch das speichern der Einträge dem Benutzer zugeordnet.
Das einzige Problem das ich dabei habe ist fast schon banal. Habe hunderte sachen ausprobiert, also for,while, foreach...usw. bekomme es aber nicht hin.

Die angeclickten Checkboxen werden in einem Session-Array gespeichert und in einer Schleife verglichen. Allerdings werden die Checkboxfelder je nach geclickten Checkboxen multipliziert. Das heißt es gibt 5 Einträge in der Datenbank , ich clicke zwei an, und habe dann alle Checkboxen doppelt, die angeclickten bleiben allerdings dann angeclickt.

Mein Code:

PHP-Code:
<?php
//gibt es ein Sessionarray, wurden also werte geclickt, dann...
elseif((isset($sess_Checkbox)) && (count($sess_Checkbox)> 0)){
      
      
//$a_Data ist das Datenbank Array mit den möglichen Checkboxen
       
for($i=0;$i<count($a_Data);$i++){
         
         
//die angecklickten Boxen  
         
foreach($sess_Checkbox as $key => $val){                              
          
$strHTMLBox .= 
               
"<tr><td>".$a_Data[$i]['DESC']."</td><td>  
                <input type='checkbox' name ='aBox[] ' 
                   value=\"" 
$a_Data[$i]['SID'] . "\"/ ";
            
                
//ist Box angeclickt dann checked
                 
if($a_Data[$i]['SID'] == $val){   
              
$strHTMLBox .= "checked>";
          }
          
$strHTMLBox .= "</td></tr>";
       }
//foreach Ende
    
}//for Ende
}//elseif Ende
?>
Hoffe ihr könnt mir helfen

Gruß
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 30.10.2005, 19:22  
Gast
 
Beiträge: n/a
Standard

Schreibe an den Anfang des Scriptes die Zeile
PHP-Code:
error_reporting(E_ALL); 
Richtig debuggen
1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
2. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
3. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde (oder auch nicht).
4. Schritt 3 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
5. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
6. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
7. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

Die Ausgaben per echo kann man sich ersparen, in dem man einen Debugger benutzt, was eigentlich selbstverständlich sein sollte.

Gruß
phpfan
  Mit Zitat antworten
Alt 30.10.2005, 19:38  
Gast
 
Beiträge: n/a
Standard

Danke für die Standardantwort.

Das Script geht, das ganze sieben seitige Formularscript macht was es soll.
Ich habe in diesem oben angesprochene Punkt einfach nur ein Denkfehler
und nach etlichen Versuchen hängt man dann einfach fest, dachte an einen kleinen Hilfsansatz.

Es ist klar das je mehr Boxen ich clicke je mehr Werte hat die foreach Schleife und je mehr boxen werden dann auch angezeigt.

Wie ich das umgehen kann das wäre doch eine Hilfe,
bytheway: error_reporting ist garantiert kein Neuland für mich, nur in dem Fall hilft es mir reichlich wenig...
  Mit Zitat antworten
Alt 30.10.2005, 19:49  
Gast
 
Beiträge: n/a
Standard

YES,YES -- es geht,

kurz ein Kaffee an der frische Luft und alles ist klar.

Habe einfach die foreach Schleife direkt vor der if abfrage eingesetzt.
PHP-Code:
<?php
   
foreach($sess_Checkbox as $key => $val){
         if(
$a_Data[$i]['SID'] == $val){   
              
$strHTMLBox .= "checked>";
         }
?>
coole Sache...
  Mit Zitat antworten
Alt 30.10.2005, 19:55  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

PHP-Code:
<?php
//$a_Data ist das Datenbank Array mit den möglichen Checkboxen
       
for($i=0;$i<count($a_Data);$i++){
         
         
//die angecklickten Boxen  
         
foreach($sess_Checkbox as $key => $val){
?>
Wozu gehst du pro möglicher Checkbox nochmal alle angeklickten Checkboxen durch und

PHP-Code:
<?php
 
if($a_Data[$i]['SID'] == $val){   
           
$strHTMLBox .= "checked[u]>[/u]";
        } 
?>
fehlt hier nicht ein "else", das den <input>-Tag schließt oder warum tust du das nur, wenn die Checkbox angeklickt ist?
Zergling-new ist offline   Mit Zitat antworten
Alt 30.10.2005, 20:05  
Gast
 
Beiträge: n/a
Standard

Hi, das mit der else ist richtig, habe sie hier weggelassen,wegen Übersicht. tue das also nicht nur wenn Checkbox angeclickt ist.

Zu Punkt eins,

Ich muss doch wenn die daten in einer Schleife generiert werden und ich die Checkboxen wieder anzeigen möchte die Schleife der Checkboxgenerierung bei Formularaufruf durchgehen und die Werte die in der Session stehen also die values der CB vergleichen, weil leer bedeutet CB nicht geclickt.
Der User clickt bei Formular Seite5 Checkboxen an, geht zurück zu Seite 3,4 Und dann wieder zu Seite 5 -- dann sollen, und werden jetzt, alle zuvor gecklickten Checkboxen wieder als angeclickt angezeigt.

Diese Werte werden dann auch , funktioniert auch , dem User zugeordnet in der DB gespeichert.

Oder verstehe ich deine Frage falsch..
  Mit Zitat antworten
Alt 02.11.2005, 07:37  
Erfahrener Benutzer
 
Registriert seit: 27.11.2004
Beiträge: 149
nsane
nsane eine Nachricht über ICQ schicken
Standard

sowas wie mir else würd ich zukünftig dazuschreiben
sonst denken wir doch, dass dein code falsch sei
nsane 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
Schleife nach Tastendruck beenden schnurzli PHP Tipps 2006 7 24.03.2006 18:56
Warum wird die erste Schleife nur einmal durchlaufen ? PHP Tipps 2006 12 03.03.2006 20:04
array als Schleife verwenden cyberholic Datenbanken 6 12.01.2006 13:14
Problem mit FOR Schleife PHP Tipps 2007 4 02.12.2005 13:18
[Erledigt] While schleife in while schleife = nur ein datensatz?! PHP Tipps 2005-2 9 28.10.2005 12:48
for Schleife -> unterbrechen, Befehl einfügen, fortsetzen PHP Tipps 2005-2 7 10.10.2005 21:05
while schleife in einer while schleife beim tmpl-sys PHP Tipps 2005-2 0 27.07.2005 15:07
While Schleife Beatbox Off-Topic Diskussionen 8 19.05.2005 21:55
while schleife beenden PHP Tipps 2005 3 29.03.2005 20:35
IF ELSEIF ELSEIF ELSE mit While Schleife PHP Tipps 2005 9 04.03.2005 23:27
Variabel aus while schleife ausserhalb der schleife nutzen PHP Tipps 2005 8 12.02.2005 18:04
problem mit for schleife und str_replace PHP Tipps 2005 7 23.01.2005 23:51
Problem mit ner schleife PHP Tipps 2004-2 3 24.11.2004 10:50
resultausgabe mit while schleife in pdf dokument PHP Tipps 2004 2 23.09.2004 14:56
versteh diese do-while schleife nicht PHP Tipps 2004 5 08.09.2004 16:54

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
checkbox 2 ausgaben, datenbankarray in checkboxen, js checkbox array nur geclickte in neues array, per radiobutton datensätze aus while schleife auswählen, http://www.php.de/php-fortgeschrittene/33157-erledigt-checkboxgenerierung-per-schleife.html, mehrere pdfs in einer foreach schleife generieren, for schleife step 2 javascript, checkbox php abfragen ohne foreach

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