CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |
28.04.2009, 16:20:09
|
Junior Member
|
|
Registriert seit: Dec 2005
Alter: 51
Beiträge: 236
|
|
string aus mehreren Abfragen
Hallo,
ich hänge mal wieder. Diesmal ist es nicht ganz so kompliziert, aber ich habe anscheined wieder ein brett vorm Kopf.
Also:
Ich bekomme aus einem Formular mit 5 checkboxen. Jeweils das aktuelle Jahr-5. Also 2005-2009
Die Werte packe ich in ein Array, welches ich mittels for-schleife durchlaufe. Vorher bereinigt, da checkboxen zwar anscheinend die Variablen übergeben, diese aber leer sind
Soweit klar. Nun möchte in der for-schleife eine Datenbankabfrage machen.
PHP-Code:
// Im array jahresarray stehen zB 2009 und 2208
...
//Für 2009
for($l=0;$l<$anzahlelementeohneleer;$l++)
{
$query_recordset1 = "SELECT (((sum(verdienst) as kohle,Date_Format(ma.datum,'%b') as monat FROM mitarbeiter where Date_Format(ma.datum,'%Y') = ".$jahresarray[$l]." and touren.gueltig='Y' GROUP BY Date_Format(touren.datum,'%b') ORDER BY ".$Sortparam ." ".$Sortorder;
}
$msquery=mysql_query(...);
...
Soweit ists auch noch klar. Mit implode packe ich das Ganze in einen string:
PHP-Code:
=> $kohle = 1800,2000,2000,2100,2100,2100,2050,2000,2100,2200,2400,2300
Nun kommt der Wert für 2008:
PHP-Code:
$query_recordset1 = "SELECT (((sum(verdienst) as kohle,Date_Format(ma.datum,'%b') as monat FROM mitarbeiter where Date_Format(ma.datum,'%Y') = ".$jahresarray[$l]." and touren.gueltig='Y' GROUP BY Date_Format(touren.datum,'%b') ORDER BY ".$Sortparam ." ".$Sortorder;
Ich bekomme es nicht hin, aus den beiden Abfragen inen string zu bsteln, welcher mit einem "|" verbunden ist,
Aussehen sollte das Ganze in etwa:
=> $kohle = "1800,2000,2000,2100,2100,2100,2050,2000,2100,2200,2400,2300|1200,1300 ,1300,1350,1400,1500,1600,1600,1500,1600,1500,1400",[/php]
Ein weiteres Problem ist bei der Geschichte, dass ich nicht immer komplette Jahre habe. 2009 hat zB nur 4 Werte. Ich brauche das ganze für google chart um mehrere datensätze darzustellen.Das habe ich eigendlich gelöst, indem ich abfrage
PHP-Code:
for($z=$anzahlimarray;$z<12;$z++)
{
$ausgabe_array[] =0;
...
Für 2009 hätte ich dann zB 2000,2100,2050,2130,0,0,0,0,0,0,0,0
Für 2009 und 2008müsste ich dann haben:
2000,2100,2050,2130,0,0,0,0,0,0,0,0|2200,2300,2200,...
Wie gesagt, irgendwie sehe ich den Wald vor lauter Bäumen nicht oder bin völlig auf dem Holzweg. Any hint? Please help!
Danke im vorraus für eure Mühe!
tsunamitsunami
|
28.04.2009, 21:17:54
|
SELFPHP Profi
|
|
Registriert seit: Apr 2008
Alter: 48
Beiträge: 1.938
|
|
AW: string aus mehreren Abfragen
mal etwas administratives: ich habe keine lust, deine beiträge ständig aus dem fortgeschrittenen-forum zu veschieben. deine selbsteinschätzung:
Zitat:
Zitat von tsunamitsunami
Diesmal ist es nicht ganz so kompliziert, aber ich habe anscheined wieder ein brett vorm Kopf.
|
solltest du entsprechend reflektieren.
zu deinem problem kann ich nichts beitragen - ist mir zu wirr - sorry.
eine anmerkung hab ich noch: man packt keine db-abfragen in eine schleife. schon gar nicht, wenn man das schleifen-limit nicht kennt. dass sich hier performance-probleme auftun, wäre einem fortgeschrittenen klar .-
cx
|
28.04.2009, 21:27:53
|
Anfänger
|
|
Registriert seit: Apr 2009
Alter: 30
Beiträge: 15
|
|
AW: string aus mehreren Abfragen
also lieber alle datenbanken die man brauchen könnte vorher komplett auslesen und dann in der schleife drauf zugreifen?
|
28.04.2009, 21:45:41
|
SELFPHP Profi
|
|
Registriert seit: Apr 2008
Alter: 48
Beiträge: 1.938
|
|
AW: string aus mehreren Abfragen
genau. dabei sollte man natürlich nur die datensätze auslesen, die relevant sind - also nicht die komplette datenbank .-
cx
Geändert von cortex (28.04.2009 um 21:46:49 Uhr)
|
28.04.2009, 21:53:28
|
Anfänger
|
|
Registriert seit: Apr 2009
Alter: 30
Beiträge: 15
|
|
AW: string aus mehreren Abfragen
Schön. Nun läuft mein ganzes Projekt zwar immer noch zu langsam, aber schon entschieden schneller.
|
28.04.2009, 22:30:23
|
|
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: string aus mehreren Abfragen
Zitat:
Zitat von JakobD
Schön. Nun läuft mein ganzes Projekt zwar immer noch zu langsam, aber schon entschieden schneller.
|
Sinnfrei! Passt irgendwie nicht zum Topic!
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
|
29.04.2009, 10:04:45
|
Junior Member
|
|
Registriert seit: Dec 2005
Alter: 51
Beiträge: 236
|
|
AW: string aus mehreren Abfragen
@cortex.
Sorry, da habe ich Grundlagen wohl falsch definiert.
Zitat:
ich habe keine lust, deine beiträge ständig aus dem fortgeschrittenen-forum zu veschieben
|
Als Grundlagenfragen habe ich persönlich einfach select-Abfragen, for und while Schleifen strings, arrays usw. definiert.
Zu wirr? OK, dann versuche ich es nochmal zu beschreiben.
Zitat:
wenn man das schleifen-limit nicht kennt.
|
Steht im 2. Satz. Also maximal 5.
Perfomanceprobleme? Also ist es performanter, wenn ich von vornherein 50 Abfragen mache, als zu schauen, wie viele ich wirlich brauche und dann ggfs. nur 20 zu machen?
Das wustte ich nicht nochmal sorry.
Und nun nochmal zu meinem Problemchen:
Ich habe 1-5 Werte, also mindestens 1, max. 5. Diese Werte entsprechen einer Jahreszahl zwischen 2005 und 2009. In diesem Jahr. Es gilt:
Immer das aktuelle jahr und 4 Jahre zurück. Das heisst für
2010: Die Jahre 2006-2010
2011: Die Jahre 2007-2011
Diese Werte kann ich in einem Formular auswählen. Dort habe ich lediglich 5 checkboxen. Jeweils 1 Box pro Jahr.
=> Zeige mir alle Werte an vom Jahr z.B. 2005, 2006 und 2009. Das heisst 3 Boxen sind angeklickt und übermittelt worden. 2 sind frei (2007 und 2008).
Nun brauche ich die Datenbankabfrage für 2005, 2006 und 2009. Da das Ganze dynamische über die letzten 4 Jahre geht kann ich es nicht fest programmieren.
Eigentlich hatte ich nun vorgehabt die Werte 2005,2006 und 2009 in ein Array zu packen und zu durchlaufen:
PHP-Code:
for($x=0;$x<count($jahreszahlarray);$x++)
{$sql ="
select gehaltszahlungen from gehaelter where where Date_Format(touren.datum,'%Y') = ".$jahreszahlarray[$x];
...
}
Soeben habe ich aber gelernt, dass man sowas aus Performancegründen nicht macht.
Nur, wie dann?
Herauskommen soll nachher ein langer string. Die Gehaltszahlen für 2009 (erste Abfrage)|DieGehaltszahlen für 2006 (2. Abfrage)|Die Gehaltszahlen für 2005 (3.Abfrage)
=> $gehaltstring = "2000,2000,2100,2020|2000,2000,2110,2030,2110,2160,3010,2110,2030,2110 ,2160,3010|
1900,1900,2000,1920,1800,1760,2400,2000,1200,1400,2150,3000";
Also aus der ersten Abfrage (für 2009) soll herauskommen: $geahelter2009 = "2000,2000,2100,2020";
Aus der 2. Abfrage (für 2006):
$geahelter2006 = "2000,2000,2110,2030,2110,2160,3010,2110,2030,2110,2160,3010";
und für 2005:
$gehaelter2005 = "1900,1900,2000,1920,1800,1760,2400,2000,1200,1400,2150,3000";
Implode kenne ich und so wollte ich es lösen. Mit select und while das Ganze ins array, mit implode jeweils zum Teilstring des entsprechenden Jahres verbinden.
Und zum Schluss via stringoperation die 3 strings zu einem langen verbinden.
Ich hoffe ich habe mich nun klarer ausgedrückt?
Gruß
tsunamitsunami
|
29.04.2009, 18:40:32
|
|
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: string aus mehreren Abfragen
Poste doch bitte mal 3-5 Datensätze aus Deiner Datei.
Im übrigen hast Du ein where zuviel in Deinem SQL-Statment. Warum arbeitest Du nich mit IN(2006, 2007,...)?
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
|
30.04.2009, 14:00:42
|
Junior Member
|
|
Registriert seit: Dec 2005
Alter: 51
Beiträge: 236
|
|
AW: string aus mehreren Abfragen
Liebes Forum,
ich habe es nun ganz anders gelöst. Wen es interessiert:
Erst das aktuelle Jahr - 4 vorangegangene abgefragt.
Dann das Formular mit
PHP-Code:
if ($checkbox0!="") { mysql_select_db($database_xxx, $xxx); $jahranzeige = $MVParam_tourdaten -$r; $query_tourdaten0 = "SELECT (((sum(... = ".$checkbox0." and touren.gueltig='y' GROUP BY Date_Format(touren.datum,'%b') ORDER BY ".$Sortparam ." ".$Sortorder; $msquery0 = mysql_query($query_tourdaten0); while($ausgabe0 = mysql_fetch_assoc($msquery0)) $array0[]=round($ausgabe0['fahrdurchschnitt'],0); $ausgabestring0 = implode(",",$array0); } $reste0 = 12-count($array0); for($x=0;$x<$reste0;$x++) { $nullen0 = $nullen0.",0"; } $ausgabestring0 = $ausgabestring0.$nullen0; $endstring = $ausgabestring0;
Das ganze 4x, fest programmiert. So bekomme ich 4 strings entweder mit den entsprechenden Werten (falls checkbox gesetzt) oder einen string mit 12 Nullen.
Am Ende kommen also in jedem Fall 48 Werte zusammen. Auch für den Fall, das einer mal ein Jahr pausiert hat oder nur 1/2 Jahr Daten hat. dann wird halt aufgefüllt.
Danke vielmals!
tsunamitsunami
Geändert von tsunamitsunami (30.04.2009 um 14:01:23 Uhr)
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 19:31:01 Uhr.
|