URL: https://www.overclockers.at/coding-stuff/daten_zahlen_einer_mysql_spalte_zusammenrechnen_ph_67899/page_1 - zur Vollversion wechseln!
Also ich habe einem Freund versprochen ich mach ihm eine liste meiner Filme und da mir eh grad fad war dacht ich mir ich mach es mittels php und mysql, damit auch ich immer am laufenden bin was eigentlich auf meiner festplatte so rumkullert
folgendes ist mir noch in den sinn geschossen:
eine spalte in der tabelle ist der größe der filme gewidmedt worden.
Nun würde ich alle werte in dieser spalte (also mehrer datensätze) zusammenzählen und unten als summe ausgeben.
Die daten werden in einer while schleife und mit fetch_array ausgegeben.
wenn ihr unbedingt den code sehen wollt (damit sich nicht wieder einige aufregen wegen unzureichender informationsgebung )
Code: PHP<? include "connect.php"; $query = "select * from filme order by film"; $anfrage = mysql_query($query); $x=0; while($result = mysql_fetch_array($anfrage)){ if(empty($x)){ $x++; ?> <tr height=17> <?} else{ $x--; ?> <tr height=17 bgcolor="#EAEAEA"> <? } $array = explode(" ",$result[5]); if(empty($array[0])){ $result[5] = "k.A."; } ?> <td><div class="text1"><a href="edit_filme.php?id=<? echo $result[0] ?>"><? echo $result[1] ?></a></div></td> <td align="center"><span class="text"><? echo $result[2] ?></span> <td align="center"><span class="text"><? echo $result[3] ?></span></td> <td align="center"><span class="text"><? echo $result[4] ?></span></td> <td align="center"><span class="text"><? echo $result[5] ?></span></td> <td align="right"><div class="text2"><? echo $result[6] ?></div></td> </tr> <? } ?>
SELECT SUM(groesse) AS gesamtgroesse FROM tabelle
vorm anfang der schleife:
$mbsumme=0;
in der schleife:
$mbsumme+=preg_replace("/[^0-9]./","",$result[6]);
//update:
nach dem ich es nochmal angesehen habe, heißt es natürlich:
$mbsumme+=preg_replace("/[^0-9]/","",$result[6]);
Zitat von watchoutSELECT SUM(groesse) AS gesamtgroesse FROM tabelle
nicht gewusst das des geht, des wird aber nur mit fetch_row gehen,
oder funktioniert des ah mit fetch_arrray?
stop groesse = "650 Mb" mit abstand also leicht mit $groesse = explode(" ",$result[6]);
dann echo $groesse[0] das wäre dann der effektive wert. aus dem grund wollt ichs nicht mit einer sql funktion machen , weil ich so wenig wie möglich auf die db zugreifen will
muss des probiren wenn ich daheim bin, thx
sry eine frage
was is preg_replace("/[^0-9]./","",$result[6]);
meinst du ereg_replace?
aufgrund der form dürfte es preg_replace seinZitat von Phobossry eine frage
was is preg_replace("/[^0-9]./","",$result[6]);
meinst du ereg_replace?
normalerweise sollte man soviel wie möglich in der datenbank machen, weil dann die daten nicht (sinnlos) überst netz/Sockets zur applikation übertragen werden müssen. bei oracle geht das sogar soweit, daß man über treewalking rekursionen für baumartige-strukturen auf den server auslagern kann.
in diesem fall ist es egal, weil du sowieso alle datensätze brauchst, weil du sie anzeigst.
ich hab a einfachere lösung gfunden.
vor der schleife
$summe = 0;
in der schleife
Code: PHP$temp = explode(" ",$result[groesse]); $summe = $temp + $summe;
du solltest von den "gemischten" feldern weggehen, und nur reine zahlen- und reine text-felder in der datenbank einführen - du vernichtest sonst eines der vorzüge einer relationalen datenbank.
preg_replace führt text-ersetzungen mit "regulären ausdrücken" nach einer perl-ähnlichen syntax durch. ohne jetzt zu sehr in die theoretische informatik oder reguläre sprachen abzurutschen, sei einfach erwähnt, es handelt sich um regeln für text-aufbau und -suche. das obige beispiel (ja da war ein punkt zuviel, habs ausgebessert) ersetzt jede nicht-zahl durch einen leerstring, wodurch nur ziffern übrigbleiben. man kann damit aber noch viel viel mehr machen, und es lohnt sich echt, mal mit regulären ausdrücken zu beschäftigen (schade nur, daß sie nur mäßig standardisiert sind)
im grunde genommen ereg_replace.
wo leigt genau der unterschied?
syntax und geschwindigkeit
bin mir nicht sicher aber ereg-funktionen sind glaub ich nicht "greedy"
wieso nimmt ma dann nicht einfach die langsamen funktionen raus und ersetzt sie durch die schnelleren
1) leicht andere syntax, unterschiedliche herkunft
2) php hat schon immer versucht "auf allen hochzeiten zu tanzen".
zb gibt es strstr() und strpos(), oder die asp-ähnliche syntax für ausgaben <?= $var ?> oder aber kommentare
// c++ style
/* c/c++ style */
# bash style
oder aber unterschiedliche syntax für code-blöcke in c- und basic-style:
if (expr) {
...
}
..bzw vbasic-ähnlicher style
if (expr):
...
endif;
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025