php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 13.02.2008, 14:27  
Neuer Benutzer
 
Registriert seit: 12.02.2008
Beiträge: 7
0815_Skripter
Standard [Problem] Checkbox setzt Wert "1" oder "0&

Hallo PHP-Freunde,

habe ein Formular, dass Spalten aus der Tabelle ausliest.
Eine Spalte davon heißt cb_status. Hier gibt es nur zwei Werte, einmal Null und Eins. Ist die Spalte Null, soll die ganze Zeile nicht angezeigt werden, wenn diese Eins ist, dann doch.
Dies wird durch Checkboxen umgesetzt. Ist die Checkbox aktiviert, ist die Spalte 1, ansonsten 0.

Leider habe ich das Problem, dass die Zuordnung nicht stimmt, trotz allen Angaben.

Hier mal der Code.
Formular 1
PHP-Code:
<form name="01" method="post" action="02.php">
<?
echo '


<table width="700" border="1" cellspacing="0" cellpadding="3">
<tr>
<td class="Stil4">AB*</td>
<td class="Stil4">Parameter</td>
<td class="Stil4">Parameterwert</td>
</tr>'
;
for(
$z=0;$z<count($bezeichner);$z++)
{
if(
$cb_status=="1")
{
echo
"<input type="checkbox" name="status[]" value="'.$cb_zustand[$z].'" checked>";
}
else
{
echo 
"<input type="checkbox" name="status[]" value="'.$cb_zustand[$z].'" checked>";
}
echo
'
test=1;
echo'
<td width="300" class="Stil3">'.$bezeichner[$z].'</td>        
<
td width="400" class="Stil4"><input type="text" size="65" name="wert[]" value="'.$wert[$z].'" readonly="readonly"></td>
</
tr>';
}
        
echo '
<input type="button" onclick="history.back()" value="Zurück">
<
input type="submit" name="gesendet" value="Weiter"></td>
</
tr></table>;
Alle Arrays werden mit POST ins andere Formular geschickt und so in die Datenbank geschrieben:

PHP-Code:
if(isset($_POST['status']))
{
for(
$z=0;$z<count($pos);$z++)
{
$query_para "UPDATE tabelle SET tabelle.cb_status = '1'
WHERE tabelle.id = '"
.$id[0]."'
AND tabelle.position = '"
.$pos[$z]."'
AND tabelle.werteid= '"
.$werteid[$z]."'
AND tabelle.prdkat_id = '"
.$prdkat[$z]."'";
$result=mysql_query($query_para); 
}
}
echo 
mysql_error(); 
Wo könnte der Hacken liegen?

Gruß.
0815_Skripter ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 13.02.2008, 15:16  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

  1. Du siehst schon am Syntax-Highlighting, dass da im ersten Script ein Syntaxfehler ist
  2. Rücke deinen Code vernünftig ein, so kann man den ja nicht lesen
  3. Das eigentliche Probelm dürften die Register_globals sein. Aber genauer sehe ich mir den Code erst an, wenn Punkt 2 erfüllt ist
__________________
Gruss
L
lazydog ist offline  
Alt 13.02.2008, 15:59  
Neuer Benutzer
 
Registriert seit: 12.02.2008
Beiträge: 7
0815_Skripter
Standard

Leider kann ich meine Eingabe nicht editieren, also nochmal hier zusammengerückt.

Formular 1
PHP-Code:
echo 

 
<table width="700" border="1" cellspacing="0" cellpadding="3"> 
<tr> 
<td class="Stil4">AB*</td> 
<td class="Stil4">Parameter</td> 
<td class="Stil4">Parameterwert</td> 
</tr>'

for(
$z=0;$z<count($bezeichner);$z++) 

    if(
$cb_status=="1"
    { 
        echo
"<input type="checkbox" name="status[]" value="'.$cb_zustand[$z].'" checked>"
    } 
        else 
        { 
            echo 
"<input type="checkbox" name="status[]" value="'.$cb_zustand[$z].'" checked>"
        } 
    echo

    test=1; 
    <td width="300" class="Stil3">'
.$bezeichner[$z].'</td>         
    <td width="400" class="Stil4"><input type="text" size="65" name="wert[]" value="'
.$wert[$z].'" readonly="readonly"></td> 
    </tr>'


         
echo 
'<input type="button" onclick="history.back()" value="Zurück"> 
<input type="submit" name="gesendet" value="Weiter"></td> 
</tr></table>'

Alle Arrays werden mit POST ins andere Formular geschickt und so in die Datenbank geschrieben:

PHP-Code:
if(isset($_POST['status']))
{
    for(
$z=0;$z<count($pos);$z++)
    {
        
$query_para =  "UPDATE tabelle SET tabelle.cb_status = '1'
                        WHERE tabelle.id = '"
.$id[0]."'
                        AND tabelle.position = '"
.$pos[$z]."'
                        AND tabelle.werteid= '"
.$werteid[$z]."'
                        AND tabelle.prdkat_id = '"
.$prdkat[$z]."'";
        
$result=mysql_query($query_para); 
    }
}
echo 
mysql_error(); 
P.S. Das ist nur ein Ausschnitt aus einem riesenzeiler an Code. Dieser funktioniert ohne Probleme. Der gepostete der hinzugefügt wurde hat dann nicht mehr richtig funktiuoniert...

Gruß.
0815_Skripter ist offline  
Alt 13.02.2008, 16:34  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Ok Punkt 2 hast du korrigiert, Punkt 1 teilweise. Du kannst mir erzählen, was du willst, aber Zeilen wie:
PHP-Code:
<?php
echo"<input type="checkbox" name="status[]" value="'.$cb_zustand[$z].'" checked>";
können nicht funktionieren. Also mach daraus ein
PHP-Code:
<?php
echo"<input type='checkbox' name='status[]' value='$cb_zustand[$z]' checked='checked'>";
oder so ähnlich.
Was allerdings diese Abfrage ($cb_status == '1') mit dem anschliessend genau gleichen Code bei true und false soll verstehe ich auch nicht.
Und dann stellt sich bei mir einfach die Frage, woher all diese Variablen im zweiten Script kommen. $_POST['status'] ist ja noch klar, ist allerdings eine Array, und von daher wahrscheinlich immer gesetzt. Aber $pos, $id, $pos, $werteid, $prdkat? keine Ahnung
Dafür werden alle im Formular gesetzten Variablen nachher nirgends mehr gebraucht.
__________________
Gruss
L
lazydog ist offline  
Alt 14.02.2008, 08:27  
Erfahrener Benutzer
 
Registriert seit: 07.12.2007
Beiträge: 103
PHP-Kenntnisse:
Fortgeschritten
Varon befindet sich auf einem aufstrebenden Ast
Standard

Auch beachten musst du das nicht gecheckete Checkboxen auch nicht übergeben werden.
Sprich wenn nicht alle Checkboxen gecheckt sind stimmt die Zuordnung auch nicht mehr, daher musst du einen festen Index vergeben:

PHP-Code:
echo '...<input type="checkbox" name="status['.$z.']" ...'
__________________
Ich mag Schildkröten!
Varon ist offline  
Alt 14.02.2008, 08:34  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Varon
... daher musst du einen festen Index vergeben
Hat er ja
__________________
Gruss
L
lazydog ist offline  
Alt 14.02.2008, 08:38  
Neuer Benutzer
 
Registriert seit: 12.02.2008
Beiträge: 7
0815_Skripter
Standard

Moin,

also dein Vorschlag ist so nicht ganz stimmig.
PHP-Code:
echo"<input type='checkbox' name='status[]' value='$cb_zustand[$z]' checked='checked'>"
PHP wirft folgende Errormessage aus: "Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in..."
Die Zeile von mir funktioniert, das ist nicht meine erste und diese macht auch das was sie machen soll.
Mit $cb_status==1 mache ich eine Abfrage. Denn $cb_status wird oben als die Tabellenspalte definiert mit dem Wert 1 oder 0 ist. Wenn die Spalte den Wert eins hat, dann ist das Feld checked.
Die Arrays $pos, $id, $pos, $werteid, $prdkat sind bei mir vergeben und werden auch rübergeschickt. Habe nur einen Auszug aus dem Code gepostet, sonst wird das hier zu übersichtlich ... was ich aber auch bereits als P.S. geschrieben habe...
0815_Skripter ist offline  
Alt 14.02.2008, 08:52  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Ist ja klar, da der Abstand zwischen echo und dem String fehlt. Das habe ich allerdings so von dir übernommen. Und da bei die funktioniert, was nicht funktioniern kann, hast du wohl übersinnliche Fähigkeiten und dürftest kaum Hilfe benötigen. Deshalb klinke ich mich aus dieser Diskussion aus.
__________________
Gruss
L
lazydog ist offline  
Alt 14.02.2008, 08:55  
Neuer Benutzer
 
Registriert seit: 12.02.2008
Beiträge: 7
0815_Skripter
Standard

Bitte was für ein Abstand?? Ist auch egal ... eine große Hilfe scheinst du hier nicht zu sein...
0815_Skripter ist offline  
Alt 14.02.2008, 09:10  
Erfahrener Benutzer
 
Registriert seit: 07.12.2007
Beiträge: 103
PHP-Kenntnisse:
Fortgeschritten
Varon befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von lazydog
Zitat:
Zitat von Varon
... daher musst du einen festen Index vergeben
Hat er ja
Mag sein das ich irgendetwas falsch deute oder mich einfach nur missverständlich ausgedrückt.
Aber als Feldname bei der Checkbox haben wir hier:
Code:
name='status[]'
Und das wird nacher im Post-Array kein fester Index sein, der Index richtet sich nach der Anzahl der gecheckten Checkboxen.

Bsp:
PHP-Code:
print_r($_POST['status']);
    echo 
'<form method="post" action="'.$_SERVER['SCRIPT_NAME'].'">';
    echo 
'<input type="checkbox" name="status[]" value="1">';
    echo 
'<input type="checkbox" name="status[]" value="2">';
    echo 
'<input type="checkbox" name="status[]" value="3">';
    echo 
'<input type="submit" value="submit">';
    echo 
'</form>'
Mögliche Ausgaben von print_r
Code:
Array ( [0] => 1 [1] => 2 [2] => 3 ) 
Array ( [0] => 2 [1] => 3 ) 
Array ( [0] => 3 ) 
Array ( [0] => 1 ) 
etc...
__________________
Ich mag Schildkröten!
Varon ist offline  
 


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
Checkbox gibt als Wert nur "on" zurück, wenn aktiv kampfnickel PHP Tipps 2008 3 28.08.2007 07:47
[JS] Checkbox setzt andere checkboxen auf checked phpfortgeschrittener HTML, Usability und Barrierefreiheit 2 13.03.2006 17:30
[Erledigt] Checkbox wert weitergeben PHP Tipps 2007 8 09.12.2005 14:30
Dropdown && Checkbox wert speichern? PHP Tipps 2005 2 27.02.2005 21:42
Wert aus Datenbank mit Checkbox addieren PHP Tipps 2004-2 0 17.12.2004 07:52
[Erledigt] Checkbox Wert übergeben Datenbanken 4 12.08.2004 11:02

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
error bei nicht gecheckten checkbox, checkbox wenn nicht gecheckt null, formular nur gecheckte button zusammenrechnen, if isset register_globals echo checkbox false

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