Auswertung der Checkboxen mit PHP
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anweisung
auswahl
auswertung
bedingung
beitrag
dingen
error
formular
nation
order
platzen
punkten
set
skispringen
spalten
springen
springer
tulpe
update
vorname
-
Tag Leute!
Im Formular hab ich folgendes verwendet:
<form action = "gesprungen.php" method = "post">
<? $auswahl = mysql_query ('SELECT * FROM skispringen ORDER BY weltcup DESC');
while ($row = mysql_fetch_array ($auswahl))
{
$nachname = $row['nachname'];
echo ('
<tr>
<td>
<font size=2 color=#c0c0c0>
'.$row['vorname'].'
'.$row['nachname'].'
('.$row['nation'].')
</td>
<td>
<font size=2 color=#c0c0c0>
<input type="checkbox" checked name = " $nachname " value= " $nachname " >
</td>
');
}
?>
</form>
In der Auswertung (gesprungen.php):
if ($_POST['Ahonen'])
{
$aendern = "UPDATE skispringen Set sprung ='j' WHERE nachname = 'Ahonen'";
mysql_query($aendern);
}
else
{
$aendern = "UPDATE skispringen Set sprung ='n' WHERE nachname = 'Ahonen'";
mysql_query($aendern);
}
Ahonen ist selbstverst?ndlich einer der Inhalte der MySQL Tabelle bei 'nachname'
Das, was hierbei rauskommt kannst du hier nachschauen:
http://hts.pyrokar.lima-city.de/skispringen/springen.php
http://hts.pyrokar.lima-city.de/skispringen/gesprungen.php
Beitrag ge?ndert am 5.01 18:41 von hts -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ja, gut, aber was ist das Problem?
Ich tippe einfach mal:
Du willst pr?fen, ob ein H?ckchen gesetzt wurde, richtig?
Dazu einfach gucken (in der gesprungen.php), ob der Springer mit ?bergeben wurde:
if(isset($_REQUEST['nachname'])) -
Ja, und da hatte ich bisher halt die
if ($_POST[
und damit hat es halt nicht funktioniert -
Jo, is ziemlich tricky.
Wenn das h?ckchen nicht gesetzt ist, wird das Ding einfach nicht mitgeschickt. Hab selbst auch ne Stunde an dem Problem gesessen.
Bei Radio-Buttons is es genau das gleiche. -
Hm, ja, aber wie es aussieht hat es rein gar nichts ver?ndert -.-
EDIT: 'n Freund von mir schl?gt if ($_POST['Ahonen'] == checked) vor, k?nnte das was werden?
Beitrag ge?ndert am 5.01 19:16 von hts -
?berpr?f doch einfach ob die Variable ?berhaupt existiert, also if(isset($_POST['...'])). Und je nachdem k?nnen dann weitere Aktionen erfolgen.
-
Auch keine ?nderung, vllt. liegt es ja schon am 1. Teil!?
-
Ich hab gelesen, dass man das eigentlich mit Arrays benutzt, also:
[...] name = "nachname[]" value = '$nachname' [...]
Nur bei der Auswertung br?uchte ich dann ja ein zeichen, zum ?berpr?fen, ob das Array diesen einen bestimmten nachnamen enth?lt. Gibt es so ein Zeichen?
EDIT:
Hab gerade was auf www.schattenbaum.net/php/arraqys.php gefunden:
<?
if(in_array("Tulpe",$blumen))
{
echo "Tulpe ist im Array enthalten.";
}
?>
Wie verbinde ich das nun mit dem Array aus der 1. Ding?
Beitrag ge?ndert am 6.01 11:56 von hts -
So, das hat auch keine Ver?nderung gebracht *verzweifeltsei*
Hab ihr noch Ideen? -.- -
Das mit den Arrays ist gar keine schlechte Idee, denn da ist mir was eingefallen: Ich benutze n?mlich Checkboxen um aus meinem G?stebuch mehrere Eintr?ge gleichzeitig zu l?schen. Vielleicht hilft dir das ein wenig weiter. Hier mal die Theorie:
<input type=checkbox name=nachname[] value=$nachname checked>
...
if(isset($_POST['nachname'])) // ?berpr?fen ob das Array existiert
{
$name2 = $_POST['nachname']; // Array umbenennen
foreach($name2 as $k => $v) // jedem Element im Array einen Key zuweisen (wenn Checkbox dann Key)
{
$nachname[$k] = $v;
}
foreach($nachname as $k => $v) // den Key benutzen um Anweisung auszuf?hren
{
// deine Anweisungen, wenn du eine WHERE Bedingung drinne hast, dann muss diese wasauchimmer='$v' lauten
}
}
So ich hab die das mal gleich umgeschrieben, ich hoffe es hilft dir weiter. -
Erm, ich versteh das mit $v nicht ganz, ich habe (glaub ich) keine bedingung! Soll ich das dann ?berall wegnehmen? Oder als leer definieren?
EDIT:
Die einzige bedingung war eigentlich, dass das alt "checked" war
Bisher:
while ($row = mysql_fetch_array (mysql_query ('SELECT * FROM skispringen')))
{
$nachname = $row['nachname'];
if(isset($HTTP_POST_VARS['nname']))
{
$name2 = $HTTP_POST_VARS['nname'];
foreach($name2 as $k => $v)
{
$nname[$k] = $v;
}
foreach($nname as $k => $v)
{
{
$aendern = "UPDATE skispringen Set sprung ='j'";
mysql_query($aendern);
}
}
}
else
{
$aendern = "UPDATE skispringen Set sprung ='n'";
mysql_query($aendern);
}
Beitrag ge?ndert am 6.01 15:15 von hts
Beitrag ge?ndert am 6.01 15:20 von hts
Beitrag ge?ndert am 6.01 15:21 von hts -
Erm, ich hab grad noch n anderes Problem:
Parse error: parse error, unexpected $ in /home/webpages/lima-city/hts/html/skispringen/gesprungen.php on line 287
line 287 ist garantiert leer -.-
EDIT:
hm, scheinbar doch nicht!
$platz ++;
ABA WARUM????
Beitrag ge?ndert am 6.01 15:45 von hts -
Guck mal eine Zeile vorher. Da liegt meist die ursache des Fehlers (z. B. Klammer zu vergessen oder so)
Zum ersten Problem: Nimm mal die Leerzeichen raus:
<input type="checkbox" checked name = "$nachname" value= "$nachname" >
An stelle von:
<input type="checkbox" checked name = " $nachname " value= " $nachname " >
Da ist ein Unterschied, wenn da leerzeichen sind, bei der Auswertung aber keine. Weil " Hannawald " nunmal ungleich "Hannawald", oder du machst einen trim auf deinen Post-Parameter, der die Leerzeichen vorne und hinten abschneidet.
Wenns das nicht war, mach doch bitte mal einen var_dump auf $_POST und poste das Ergebnis hier.
-
Hmm, also hier nochmal, basierend auf allen Codeschnippeln, das koplette Ding, wie ich mir das gedacht habe:
Im Formular:
<form action = "gesprungen.php" method = "post">
<? $auswahl = mysql_query ('SELECT * FROM skispringen ORDER BY weltcup DESC');
while ($row = mysql_fetch_array ($auswahl))
{
$nachname = $row['nachname'];
echo ('
<tr>
<td>
<font size=2 color=#c0c0c0>
'.$row['vorname'].'
'.$row['nachname'].'
('.$row['nation'].')
</td>
<td>
<font size=2 color=#c0c0c0>
<input type=checkbox checked name = $nachname[] value=$nachname>
</td>
');
}
?>
</form>
In der gesprungen.php:
if(isset($_POST['nachname']))
{
$name2 = $_POST['nachname'];
foreach($name2 as $k => $v)
{
$nachname[$k] = $v;
}
foreach($nachname as $k => $v)
{
$aendern = "UPDATE skispringen Set sprung ='j' WHERE nachname='$v'";
mysql_query($aendern);
}
}
Nun sollte bei jedem Springer, wo ein H?ckchen war, "sprung" in der DB auf "j" gesetzt werden. Um alle anderen auf "n" zu setzten kannst du ja UPDATE skispringen SET sprung='n' WHERE sprung='' OR sprung!='j' benutzen. Vielleicht hilft dir das ja jetzt. -
Danke, das problem ist beseitigt!
Weiter Probleme:
1.
$nachname = $row['nachname'];
$aendern = "UPDATE skispringen WHERE nachname = '$nachname' Set sprung ='n', d1 = '0', d2 = '0',
springen = springen + 1, punkte = '0'";
mysql_query($aendern);
Das erh?hen von der Spalte 'springen' funktioniert nicht
2.
$nachname = $row['nachname'];
$wcpunkte = 0;
if ($platz == 1)
{
$wcpunkte = 100;
}
[...]
if ($platz == 24)
{
$wcpunkte = 1;
}
$aendern = "UPDATE skispringen SET weltcup = $wcpunkte + weltcup WHERE nachname = '$nachname'";
mysql_query($aendern);
$platz ++;
}
Das sortieren nach 'punkte' abw?rts und das eintragen der WeltcupPunkte funktioniert nicht
Beitrag ge?ndert am 6.01 23:51 von hts -
Zu 1:
springen = springen + 1, punkte = '0'";
die Zeile geht so:
springen (springen+1), punkte = 0";
Zu 2:
$aendern = "UPDATE skispringen SET weltcup = $wcpunkte + weltcup WHERE nachname = '$nachname'";
Wahrscheinlich gleiches Problem:
$aendern = "UPDATE skispringen SET weltcup = ($wcpunkte + weltcup) WHERE nachname = '$nachname'";
Ich denke so m?sst das funzen.
Wo du da was sortierst, sehe ich ehrlich gesagt nicht. -
sry, dass hatte ich irgendweshalb gel?scht
hier:
$auswahl = mysql_query ('SELECT * FROM skispringen ORDER BY punkte DESC');
while ($row = mysql_fetch_array ($auswahl))
{ -
Hm, jetzt funktioniert es *sich dumm vorkomm*
Aber auf jedenfall herzlichen Dank an alle hier
Weiteres Problem -.-:
$auswahl = mysql_query ('SELECT * FROM skispringen ORDER BY weltcup ASC');
while ($row = mysql_fetch_array ($auswahl))
{
$nachname = $row['nachname'];
$aendern = "UPDATE skispringen WHERE nachname = '$nachname' Set sprung ='n', d1 = '0', d2 = '0', springen = (springen + 1), punkte = '0'";
mysql_query($aendern);
}
Das erh?hen von springen klappt immernoch nicht -
Mysql kann das so nicht.
Du musst dir zuerst die Zahl der "springen"-Spalte jedes Spielers holen, die dann um 1 erh?hen, und dann update machen. -
Mysql kann das so nicht.
Du musst dir zuerst die Zahl der "springen"-Spalte jedes Spielers holen, die dann um 1 erh?hen, und dann update machen.
Klar geht das. Man muss nur die Zahl, die man addieren will gleich hinter die Anweisung ohne Leerzeichen schreiben, also UPDATE skispringen SET springen=springen+1. Falls das auch nicht gehen sollte, die 1 einfach mal in ' ' schreiben. Bei mir gehen beide Varianten ohne Probleme. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage