checkboxen aus mySql sammeln
paul
- php
hallo allerseits,
folgender wunsch:
ich hab eine MySql-Tabelle mit folgenden Beispieleinträgen:
id t_hund t_katz t_maus t_schnecke t-frosch bemerkung
----------------------------------------------------------------
1 0 1 0 0 1 katzenfreund
----------------------------------------------------------------
97 0 0 1 1 1 vegetarier
ich möchte nun z.b. für die datenbank-row mit der id "97" ermitteln, wieviele tiere auf "1" gesetzt sind.
ich nehme an, ich fang mal mit dem array an, den mir die sql-abfrage zurückliefert. ich kann aber nicht einfach die zeile durchlaufen, und zählen, wieviele "0" bzw "1" vorkommen, weil es auch sein könnte, dass jemand im feld "bemerkung" eine "0" oder "1" einträgt. die felder t_hund etc. haben alle das eindeutige merkmal, dass sie mit "t_" beginnen.
wie muß ich jetzt die bedingung basteln, damit nur die "t_"-felder gezählt werden. oder lieg ich mit der ganzen sache falsch??
danke!
p
Hai Duda,
das SQL-Array sollte so aussehen:
<?php
$RES = array(
'id' => 97,
't_hund' => 0,
't_katz' => 0,
't_maus' => 1,
't_schnecke' => 1,
't_frosch' => 1,
'bemerkung' => 'vegetarier');
$summe = 0;
foreach($RES as $key => $val) {
$summe += (substr($key,0,2) == 't_') ? $val : 0;
}
echo $summe;
?>
Bei mir klappt's ...
m.b.G. Rolf
hi rolf,
komisch, als ergebnis wird bei mir "3" angezeigt, obwohl ja nur 2 zeilen da sind, die "0" beinhalten und im key "t_" haben...??
ich verstehe in deinem script auch diese syntax nicht:
$summe += (substr($key,0,2) == 't_') ? $val : 0;
was bedeutet das" ? $val : 0;"??
wie dem auch sei, ich habe den code ein wenig angepasst und fraglichen teil durch eine if-bedingung ersetzt, und jetzt wird korrekt "2" angezeigt.
ist meine variante so korrekt?
hi rolf,
komisch, als ergebnis wird bei mir "3" angezeigt, obwohl ja nur 2 zeilen da sind, die "0" beinhalten und im key "t_" haben...??
ich verstehe in deinem script auch diese syntax nicht:
$RES = array(
'id' => 97,
't_hund' => 0,
't_katz' => 0,
't_maus' => 1,
't_schnecke' => 1,
't_frosch' => 1,
'bemerkung' => 'vegetarier');
$summe = 0;
foreach($RES as $key => $val) {
if($val === 0){
$summe += (substr($key,0,2) == 't_');
}
}
echo $summe;
p
Hi,
komisch, als ergebnis wird bei mir "3" angezeigt, obwohl ja nur 2 zeilen da sind, die "0" beinhalten und im key "t_" haben...??
Das ist der Nachteil, wenn als "Loesung" eines Problem vollkommen unkommentierter Code abgeliefert wird ...
Der Code kuemmert sich nicht darum, ob die Werte 0 sind und zaehlt die entsprechenden Eintraege - sondern er summiert die Werte aller mit "t_" beginnenden.
ich verstehe in deinem script auch diese syntax nicht:
$summe += (substr($key,0,2) == 't_') ? $val : 0;
>
> was bedeutet das" ? $val : 0;"??
<http://www.php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary>
MfG ChrisB
--
„This is the author's opinion, not necessarily that of Starbucks.“