Beiträge von jumpthis
-
-
Hallo,
Ich habe einen String z.B. Teststring [Inhalt]. Ich möchte nun alles bis zu dem [ Zeichen entfernen.
Ansatz:
PHP$element = "Teststring [Inhalt]"; $string = preg_replace('#[[].*#','',$element); echo $string; // Ausgabe => Teststring soll aber heißen => Inhalt]
Entfernt alles nach einen [ Zeichen.
Wie ist die genaue Syntax, wenn ich alles vor einem [ entfernen will?Würde mich freuen, wenn mir jemand Helfen könnte.
-
Zitat
Zu deinem Script kann man es bestimmt um das 2 fache beschleunigen und mit paar Tools um das 10 fache
Was wären das denn für ein paar Tools?
Habe das Script soweit mal komplett in diesem Post eingebunden. Bin für Vorschläge gerne offen
global.php
PHP
Alles anzeigen<? // Php.ini Set error_reporting(E_ALL); ini_set('display_errors', 1); // Include require("../../include/config.php"); require("../../include/db.class"); $db = new db($sqlhost,$sqldb,$sqluser,$sqlpassword); require("class.php"); // Config für Crawler $MAX_DEPP = 6; $ALLOW_EXT = array('html', 'htm', 'xhtml', 'php', 'jpg'); ?>
class.php
PHP
Alles anzeigen<? /* Enthält die Funktionen fürs crawlen */ // SET URL die 30 Tage alt sind auf 0 function UpdateUrls() { global $db; $db->actionQuery("UPDATE crawler SET crawled='0' WHERE date<".time()."-2592000"); } // Holt eine URL aus der DB function getURLToCrawl($pageid) { global $db; $url = $db->singleQuery("SELECT id FROM crawler WHERE crawled = '0' AND page_id='".$pageid."'"); $id = $url['id']; return $id; } // Prüft ob URL erreichbar function doUrl($URL) { global $ALLOW_EXT, $fullurl; $handle = @fopen ($URL, "r"); if ($handle === false) return false; $fnpath = substr($URL, strlen($fullurl)); if ($fnpath !== false) { $fnsplit = explode(".", $fnpath); $fnext = $fnsplit[count($fnsplit)-1]; if (!in_array($fnext, $ALLOW_EXT) && strlen($fnext) <= 5 && strpos($fnext, '/') === false) return false; } $buffer = ""; while (!feof ($handle)) { $buffer .= fgets($handle, 4096); } fclose ($handle); return $buffer; } // Holt alle URLS von der Seite function getUrls($crowl_page, $deep = 0) { global $MAX_DEPP; if ($deep >= $MAX_DEPP) return array(); $match_url = array(); $re_expresion = "/\s+href\s*=\s*[\'\']?([^\s\'\']+)[\'\'\s]+/ims"; preg_match_all ($re_expresion, $crowl_page, $match_url, PREG_PATTERN_ORDER); return $match_url[1]; } // Parsed eine URL richtig function parseURL($URL_to_parse, $fullurl, $aktive_URL) { if (strpos ($URL_to_parse, "://") != 0 && substr($URL_to_parse, 0, 7) != "http://") return false; if (substr($URL_to_parse, 0, 1) != "/" && substr($URL_to_parse, 0, 7) != "http://") $URL_to_parse = $aktive_URL . "/" . $URL_to_parse; if (substr($URL_to_parse, 0, 7) != "http://") $URL_to_parse = $fullurl . "/" . $URL_to_parse; if(strpos($URL_to_parse,"#")!==false){$URL_to_parse = "";} if(strpos($URL_to_parse,"javascript")!==false){$URL_to_parse = "";} $URL_to_parse = str_replace("/./", "/", $URL_to_parse); $URL_to_parse = preg_replace("/\/[\/]+/i", "/", $URL_to_parse); $URL_to_parse = str_replace("http:/", "http://", $URL_to_parse); $URL_to_parse = str_replace("&", "&", $URL_to_parse); $URL_to_parse = preg_replace("/sid=[\w\d]+/i", "", $URL_to_parse); return $URL_to_parse; } // Durchgeht alle URLS function cleanURLs($get_URLs, $fullurl, $aktive_URL) { $URLs_cleaned = array(); $counter = 0; foreach($get_URLs as $id => $URL) { $URL = parseURL($URL, $fullurl, $aktive_URL); if ($URL === false || strpos ($URL, $fullurl) !== 0) continue; $URLs_cleaned[$counter++] = $URL; } return $URLs_cleaned; } // Fügt eine gefunde URL zu DB hinzu function add($pageid, $new_urls, $deep) { foreach($new_urls as $id => $URL) { toDB($pageid, $URL, $deep); } return 0; } // DB Funtkion function toDB($pageid, $URL, $deep) { global $db; $registrierte_site = $db->singleQuery("SELECT COUNT(id) FROM crawler WHERE site='".$URL."' AND page_id='".$pageid."'"); $registrierte_site = $registrierte_site['COUNT(id)']; if ($registrierte_site == 0 && $URL != "") { $pr = ""; $db->actionQuery("INSERT INTO crawler (site, deep, date,pr, page_id) VALUES('".$URL."','".$deep."','".time()."','".$pr."','".$pageid."')"); return 1; } return 0; } ?>
crawler.php
PHP
Alles anzeigen<?php set_time_limit(0); require("global.php"); // Seite und ID $fullurl = "http://www.forum-hilfe.de"; $pageid = 2; // Prüfen ob diese Seite bereits in der DB $registrierte_site = $db->singleQuery("SELECT COUNT(id) FROM crawler WHERE site='".$fullurl."' AND page_id='".$pageid."'"); $registrierte_site = $registrierte_site['COUNT(id)']; // Soll mal eine Pagerank abfrage rein $pr = ""; // Wenn nicht vorhanden einfügen if($registrierte_site == 0) { $db->actionQuery("INSERT INTO crawler (site, deep, date,pr, page_id) VALUES('".$fullurl."','0','".time()."','".$pr."','".$pageid."')"); } // Alle URLS die 30 Tage alt sind auf "none gecrawlt" setzen UpdateUrls(); // ALLE URLS der Domain durchgehen, den Inhalt dursuchen und ggf. neue Links seztzen while($URL_ID = getURLToCrawl($pageid)) { // Setzt aktuelle URL auf gecrawlt $db->actionQuery("UPDATE crawler SET crawled='1' WHERE id='".$URL_ID."'"); // Holt die Infos von der URL aus der DB $SQL = $db->singleQuery("SELECT site, deep FROM crawler WHERE id='".$URL_ID."'"); $NEW_URL = $SQL['site']; $NEW_DEEP = $SQL['deep']; // Parse $aktive_URL = preg_replace("/([^\/])\/[^\/]+$/i", "\\1", $NEW_URL); // Prüefe ob URL vorhanden $crawl = doUrl($NEW_URL); // Siete nicht vorhanden, dann löschen if ($crawl === false) { $db->actionQuery("DELETE FROM crawler WHERE id='".$URL_ID."'"); continue; } // Inhalt laden und URL durchsuchen $get_URLs = getUrls($crawl, $NEW_DEEP + 1); // Urls parsen $clean_URLs = cleanURLs($get_URLs, $fullurl, $aktive_URL); // Neue URLS in die DB $URLs_to_crawl = add($pageid, $clean_URLs, $NEW_DEEP + 1); } ?>
-
Danke für eure Hilfe. Ein sehr interessanter Beitrag von Dodo.
Man muss auch überlegen was das Skript wirklich macht. Jede URL wird geöffnet und nach Links durchsucht. Die gefunden Links speichere ich in ein Array und jage diese durch eine foreach Schleife in die Datenbank (vorher werden noch ein paar abfragen gemacht).
Ich habe verschiedene Varriationen getestet und meist wird es nur langsamer.
Achja, was ich noch wissen wollte, warum kein global in OOP (Pion hatte das erwähnt)?
-
ja, ich habe nun ein paar Abfragen hinzugefügt, welche Sicherstellen das es auch um echte Links von einer Webseite handelt und nicht um irgendwelche css-Dateien usw.
Funktioniert alles wunderbar. Nur das die Geschwindigkeit bei großen Webseites nicht unbedingt die schnellste ist. Lässt sich vermutlich auch nicht schneller umsetzten in PHP?!
-
Hallo,
ich möchte meine gesamte Webseite nach Links durchsuchen, diese in einer DB abspeichern und später als Sitemap ausgeben. Da es sich aktuell um ca. 1500. Seiten handelt und jederzeit welche dazukommen, sollte das automatisch funktionieren.
Ich habe bereits ein Skript soweit geschrieben, dass die Links ausliest und in die DB speichert. Dabei gibts aber 2 probleme a) die Zeit, die beansprucht wird und b) es werden auch ausgehende Links mit aufgelistet.
Die Klasse schaut so aus (etwas gekürzt):
PHP
Alles anzeigenpublic function __construct($url) { global $db; $this->mark= $this->getContent($url); } public function getContent($url) { return file_get_contents($url); } protected function GetLinks() { if (!empty($this->mark)){ preg_match_all('/\s+href\s*=\s*[\'\']?([^\s\'\']+)[\'\'\s]+/ims', $this->markup, $links, PREG_PATTERN_ORDER); foreach($links as $key => $val) { return !empty($links[1]) ? $links[1] : FALSE; } }
Ich möchte bei der Funktion GetLinks etwas verändern, sodass in das Array keine fremden URLS geschrieben werden, sondern nur meine. Kann ich die regulären Ausdruck so anpassen, dass direkt fremde URLS ausgeschlossen werden? Wenn ja hat jemand eine Lösung oder Tip?
Wenn erstmal die fremden URLS entfernt wurden aus dem Array, wird die Schleife die durchlaufen werden muss auch kürzer und damit sollte die Geschwindigkeit sich besssern.
Ich steht ein bisschen aufm Schlauch^^
-
mhm, ich glaube ich habe es^^
Das ich das alles hier nochmal zusammengefasst habe, hat bisschen geholfen.PHP$data = $db->singleQuery(" SELECT wert FROM session WHERE HID='".$id."' AND von <= '".$mktime_von_."' AND bis >= '".$mktime_von_."' AND bis >= '".$mktime_bis_."' ");
Auf dem ersten Blick scheint es zu funktionieren.
-
Hallo,
ich habe gerade ein kleines kreatives Problem. Ich möchte 2 vorhandene Timestamps aus der Datenbank mit 2 Timestamps aus einen Formular vergleichen.
Als Ergebnis soll der Datensatz gezogen werden, wo Die Daten aus den Formularfeldern zwischen den aus der Datenbank liegen.
Beispiel Eingabe im Formular:
Von: 15.05
Bis: 03.06Die Eingabe im Formular sieht z.B. so aus: 03-05-2010
Ich formatiere das ganze dann mitPHP$von = "03-05-2010"; $format = str_replace("-", ",", "$von"); $array_format = explode(",", $format); $mktime_von = mktime(0,0,0, $array_format_[4], $array_format_[3],0);
Die Daten werden auch so in die Datenbankgeschrieben, also vom Aufbau des Timestamps sind die Eingaben im Formular und in der DB gleich.
In der Datenbank sind verschiedene Werte (Daten sind real im Timestamp format!!):
ID|HID| Von | Bis | wert
1 | 3 | 01.05 | 30.06 | 10
2 | 3 | 01.07 | 18.07 | 20
3 | 4 | 14.05 | 15.06 | 30Bisher versuche ich folgendes:
PHP
Alles anzeigen$data = $db->singleQuery(" SELECT wert FROM session WHERE HID='".$id."' AND von>= '".$mktime_von."' AND bis>= '".$mktime_bis."' "); foreach($data as $key => $value) $$key = $value; echo $session."<br />"; // Ausgabe => 20 und => 30
Problem ist erstes, dass nicht ID1, sondern in diesem Beispiel würde ID2 ausgewählt. Außerdem wird auch ID3 angezeigt, obwohl der 14.05 hinter dem 15.05 (wie ausgewählt liegt).
Versteht ihr was ich meine und möchte? Sonst muss ich noch paar Erklräungen mehr abgeben. Wäre klasse, wenn es ne einfache und schnelle Lösung geben würde.
-
Genau da ist das Problem auf der Webseite vom Script steht mit keinen Wort geschrieben, wo genau die Namensnennung dargestellt werden muss.
-
Hallo,
ich hoffe ich habe hier den richtigen Bereich gewischt.
Icg benutze für ein Portal das Script " Unobtrusive AJAX Star Rating Bar" für Bewertungen mit Sternen. Das ganze läuft unter der Creative Commons Attribution 3.0 License. [FONT="]Das Script habe ich ein wenig verändert (Datenbank und einuge Abfragen mehr hinzugefügt. Das darf ich laut Lizenz.
Aber es muss eine Namensgebung integriert werden. Frage ist was ist damit gemeint? Ich habe in den Dateien das Copyright und den Namen des Entwicklers stehen. (Css-Datei, Javscript und auch in den PHP-Dateien). Ist das mit Namensgebung gemeint und reicht das aus?
Grüße
[/FONT] -
Total missverstanden für dein Problem täte es SUBSTRING_INDEX bei keinem 0815 Design würde es ein einfachs < und > tuen
Du bist zufrieden mit deiner Lösung wir also auch^^
Hast du ja nett ausgedrückt
-
1. Datendesing ist sehr wichtig und hat bei der total versagt
2. Speichert man Zeiten mittels Timestamp ab um besser rechnen zu können
3. Muss du eine umständliche abfrage weil du eben ein schlechte bzw kein Datenbankdesign hast machen
SUBSTRING_INDEX wird dir helfen
Aber ich schick dir die Lösung nicht da das ein Schwachsinn ist
Hast du sicherlich nicht unrecht mit, aber irgendwie muss es funktionieren, ob jetzt alles so perfekt ist spielt erstmal keine Rolle.
Ich habe nun eine Lösung, die funktioniert, ist zwar nicht schön, aber tut seinen Dienst.
PHP
Alles anzeigenforeach($db->multiQuery("SELECT trainer_oeffnungszeit_".$auswahl_tag." FROM Cal_Trainerzeiten") as $value) { foreach($value as $key => $val) $$key = $val; if($auswahl_tag == "dienstag") { if(${"trainer_oeffnungszeit_".$auswahl_tag} != "") { $arr = explode(' - ',$trainer_oeffnungszeit_dienstag); $anfang = $arr[0]; $ende = $arr[1]; if($anfang == $dauer || $anfang < $dauer) { if($ende == $dauer || $ende > $dauer) { echo "Trainer vorhanden"; } } // Ende pruef Anfangszeit } // Ende wennn zeit nicht leer } // Ende Dienstag } // Ende foreach
Edit: SUBSTRING_INDEX ist schon cool, kannte ich garnicht, nur die Datenbankstruktur macht es wohl nicht möglich.
-
Ich habe fast geahnt, das es nichts fertiges gibt.
Naja, auch kein Problem, bin gerade dabei mir was passendes zu schreiben und wäre Klasse,
wenn ihr mich bisschen unterstützen könntest, wenn ich Probleme habe.Akutell versuche ich zu prüfen, ob überhaupt ein Trainer anwesend ist,
wenn der Besucher ein Training buchen will (siehe Bild 1).In der Datenbank sind die Zeiten, wann ein Trainer verfügbar ist eingetragen.
Wie kann ich, wenn z.B. die Werte 10:00 Uhr - 18:00 Uhr prüfen,
ellegant prüfen, ob der eingegebe Wert vom Besucher (12:00 Uhr),
auch in der Zeit liegt, wo ein Trainer vorhanden ist.Aktuell prüfe ich folgendes:
PHP
Alles anzeigenif(isset($submit)) { if($trainer == 0 || !$wochentag || $dauer == 0 || $art == 0) { // Felder ausgefüllt? $error .= errorbit("Bitte alle Felder ausfüllen!"); } else { // Konvetiere Datumseingabe in Timestamp $wochentag_ = str_replace("/", ",", "$wochentag"); $var_wochentag = "0,0,0,".$wochentag_; $array_wochentag = explode( ",", $var_wochentag); $mktime_wochentag = mktime($array_wochentag[0],$array_wochentag[1],$array_wochentag[2],$array_wochentag[3],$array_wochentag[4],$array_wochentag[5]); // aktuelles Datum $mktime_aktuell = time(); // Prüfe ob Datum in Vergangenheit liegt if($mktime_wochentag < $mktime_aktuell) { $error .= errorbit("Wochentag liegt in der Vergangenheit!"); } else { // Prüfe ob Trainer vorhanden zu ausgewählten Zeit // Daten aus Datenbank parsen (Ausgangswert: 18:00 - 22:00 Neuer Wert: [0]=>18:00 [1]=>22:00 $arr_mon = explode(' - ',$trainer_oeffnungszeit_montag); $arr_die = explode(' - ',$trainer_oeffnungszeit_dienstag); $arr_mit = explode(' - ',$trainer_oeffnungszeit_mittwoch); $arr_don = explode(' - ',$trainer_oeffnungszeit_donnerstag); $arr_fre = explode(' - ',$trainer_oeffnungszeit_freitag); $arr_sam = explode(' - ',$trainer_oeffnungszeit_samstag); $arr_son = explode(' - ',$trainer_oeffnungszeit_sonntag); //$arr_mon[0] // Anfangszeit Montag (Beispiel 11:00) //$arr_mon[1] // Ende Montag (Beispiel 18:00) //$dauer // Beginn Besucher Zeit (Besucher eingabe: 16:00) // Wie kann ich die Werte nun prüfen, ob 16 zwischen 11:00 und 18:00 Uhr liegt } } }
Die Tabelle mit den Trainerzeiten
PHP
Alles anzeigenCREATE TABLE `Cal_Trainerzeiten` ( `trainer_id` int(11) NOT NULL auto_increment, `trainer_user_id` int(11) NOT NULL, `trainer_hallen_id` int(11) NOT NULL, `trainer_oeffnungszeit_montag` varchar(20) collate latin1_german1_ci NOT NULL, `trainer_oeffnungszeit_dienstag` varchar(20) collate latin1_german1_ci NOT NULL, `trainer_oeffnungszeit_mittwoch` varchar(20) collate latin1_german1_ci NOT NULL,L, `trainer_oeffnungszeit_donnerstag` varchar(20) collate latin1_german1_ci NOT NULL, `trainer_oeffnungszeit_freitag` varchar(20) collate latin1_german1_ci NOT NULL, `trainer_oeffnungszeit_samstag` varchar(20) collate latin1_german1_ci NOT NULL,, `trainer_oeffnungszeit_sonntag` varchar(20) collate latin1_german1_ci NOT NULL, `trainer_timestamp` int(11) NOT NULL, PRIMARY KEY (`trainer_id`) ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci AUTO_INCREMENT=2 ;
Beispiel Eintrag:
-
Hallo,
ich wollte mal fragen, ob jemand ein fertiges Script kennt, was so ähnlich aufgebaut ist und ähnliche Funktionen hat, wie der Screenshot im Anhang.
Ich brauche dies für eine Übersicht für Trainingsstunden, also eine Wochenansicht mit vor und zuück Funktionen.
User sollten dann Stunden buchen können und diese werden dann angezeigt im Kalender.
Wäre klasse, wenn jemand einen Tipp für mich hat!
Danke.mfg
-
Das Problem hatte ich auch mal.
Ich habs dann einfach in alle betreffenden ordner gesetzt.jop, so das funktioniert nun.
Konnte ja doch schnell gelöst werden. Ich war mal wieder am verzeifeln. -
bist du sicher, dass du den cookie mit setcookie() setzt?
jo, aber ich glaube es liegt an dem Pfad.
Das Cookie wird gespeichert für den Rootpfad und ich rufe es aus dem Verzeichnis /cal auf.Das Cookie wird von Typo3 erzeugt. Also muss ich mich doch durch de Code von Typo3 "wälzen" und das setcookie ändern.
Das mit dem Pfad habe ich bis gerade nicht bedacht.
-
Hi!
Ich lese mit meinen kleinen Script Cookies aus, um zu prüfen ob der User auch eingeloggt ist.
Also Cookie auslesen und mit dem Datensatz der DB vergleichen. Problem ist, dass es nur bei mir funktioiert.
Wenn ich das von einem anderen Rechner aus aufrufe bekomme ich immer eine Fehlermeldung, dass das Cookie nicht vorhanden ist.Ich habe mir das ganze mal mit phpinfo() angeschaut und tatsächlich ist nur bei mir das Cookie auch vorhanden.
Bei anderen Rechern, die die Seite noch nicht aufgerufen haben ist Cookie nicht da.
Wenn ich im Firefox unter Cookies nachschaue und nach dem Cookie suche ist es allerdings vorhanden nur PHP will nicht so recht damit arbeiten.Woran liegt das nun, das es bei mir geht und bei keinem anderen.
Wäre klassse, wenn es eine Lösung gibt!Wünsche euch Frohe Ostern!
-
Der Kalender ist nicht das Hauptproblem. Ich vermute viel mehr, dass ich ich mit meinen Tabelle aus der Datenbank nicht das erreichen kann was ich genau möchte. Weiß nicht genau wie ich das beschrieben soll, aber die Schleifen in sich führen zu Problemen und geben nicht das aus was ich möchte.
Ich habe mich erstmal dazu entschiden nicht mehr an den Kalender zu klammern. Daher habe erstmal eine Übersicht geschrieben, in der alles auf ein Blick zu sehen ist und ales Orientierung ein Kalender dadrunter.
Sieht jetzt so aus.Danke für eure Antworten!
-
Hallo zusammen,
ich bin seit einiger Zeit dabei ein kleines Tool zur Anzeige von Seminaren zu programmieren. Das ganze soll im Web verfügbar sein und daher schreibe ich es in PHP mit MySQL.
Ist soweit auch schon recht weit fortgeschritten, jedoch brauche ich mal kreative Hilfe. Mein Problem besteht darin, dass ich nicht genau weiß wie ich den Kalender aufbauen kann.Aussehen soll der Kalender etwa so
Bisher habe ich sowas hierDie Tabelle für die Seminare:
PHPCREATE TABLE `seminare` ( `seminar_id` int(11) NOT NULL auto_increment, `seminar_name` varchar(100) NOT NULL default '', `seminar_platz` varchar(10) NOT NULL default '', `seminar_aktiv` tinyint(1) NOT NULL default '0', `seminar_date` int(11) NOT NULL default '0', `seminar_date_von` int(11) NOT NULL default '0', `seminar_date_bis` int(11) NOT NULL default '0', PRIMARY KEY (`seminar_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
name => Seminarname
platz => Anzahl Plätze
aktiv => ob das Seminar aktiv oder gesperrt wurde
date => wann es erstellt wurde
date_von => von wann das seminar aktiv ist (Timestamp)
date_bis => bis welchem Datum es aktiv ist (Timestamp)Tabele für die Seminar Teilnehmer:
PHP
Alles anzeigenCREATE TABLE `seminar_user` ( `usr_id` int(11) NOT NULL auto_increment, `usr_name` varchar(70) NOT NULL default '', `usr_vorname` varchar(70) NOT NULL default '', `usr_kdnr` varchar(50) NOT NULL default '', `usr_tele` varchar(50) NOT NULL default '', `usr_infos` varchar(255) NOT NULL default '', `usr_datum` int(11) NOT NULL default '0', `usr_tage` varchar(10) NOT NULL default '', `usr_seminiar` int(11) NOT NULL default '0', PRIMARY KEY (`usr_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=12 ;
usr_datum => beginn seminar teilnahme (Timestamp)
usr_tage => ende seminar teilnahme (Timestamp)Die Öberfläche zum verwalten ist soweit schon fertig ich brauche nur ein bisschen Hilfe bei dem Kalender.
Wie kann ich es am besten machen, die Daten der Teilnehmer in den Kalender darstellen zu lassen.Die Kalenderansicht baue ich bisher wie folgt auf:
PHP
Alles anzeigen<?php include "include/global.php"; $content = ""; $error = ""; // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // $content .= "<center><h2>Kalender</h2><br/>"; $a1 = "";$a2 = "";$a3 = "";$a4 = "";$a5 = "";$a6 = "";$a7 = "";$a8 =""; $a9 = "";$a10 = "";$a11 = ""; $a12 = ""; if(isset($_POST['submit'])) { $aktuell_jahr = $_POST['jahr']; $monat = $_POST['monat']; $aktueller_monat = $monat; $seminar_select_id = $_POST['seminar']; } else { $timestamp = time(); $aktueller_monat = date("n",$timestamp); $aktuell_jahr = ""; $seminar_select_id = ''; } if($aktueller_monat == 01) { $a1 = "selected='selected'"; } if($aktueller_monat == 02) { $a2 = "selected='selected'"; } if($aktueller_monat == 03) { $a3 = "selected='selected'"; } if($aktueller_monat == 04) { $a4 = "selected='selected'"; } if($aktueller_monat == 05) { $a5 = "selected='selected'"; } if($aktueller_monat == 06) { $a6 = "selected='selected'"; } if($aktueller_monat == 07) { $a7 = "selected='selected'"; } if($aktueller_monat == 08) { $a8 = "selected='selected'"; } if($aktueller_monat == 09) { $a9 = "selected='selected'"; } if($aktueller_monat == 10) { $a10 = "selected='selected'"; } if($aktueller_monat == 11) { $a11 = "selected='selected'"; } if($aktueller_monat == 12) { $a12 = "selected='selected'"; } $value_jahr = ""; $zeit = time(); $jahr = date("Y", $zeit); for($I = 0; $I < 4; $I++) { if($aktuell_jahr == $jahr) { $value_jahr .= "<option value='$jahr' selected='selected'>$jahr</option>";} else {$value_jahr .= "<option value='$jahr'>$jahr</option>";} $jahr++; } $value_monat= "<option value='01' $a1>Januar</option>"; $value_monat.= "<option value='02' $a2>Februar</option>"; $value_monat.= "<option value='03'$a3>Maerz</option>"; $value_monat.= "<option value='04' $a4>April</option>"; $value_monat.= "<option value='05' $a5>Mai</option>"; $value_monat.= "<option value='06' $a6>Juni</option>"; $value_monat.= "<option value='07' $a7>Juli</option>"; $value_monat.= "<option value='08' $a8>August</option>"; $value_monat.= "<option value='09' $a9>September</option>"; $value_monat.= "<option value='10' $a10>Oktober</option>"; $value_monat.= "<option value='11' $a11>November</option>"; $value_monat.= "<option value='12' $a12>Dezember</option>"; $monat = "<select name='monat'>$value_monat</select>"; $jahr = "<select name='jahr'>$value_jahr</select>"; $bit = ""; foreach($db->multiQuery("SELECT seminar_name,seminar_id FROM seminare ORDER BY seminar_name ASC") as $value) { foreach($value as $key => $val) $$key = $val; if($seminar_select_id == $seminar_id) { $bit .="<option value='$seminar_id' selected='selected'>$seminar_name</option>"; } else { $bit .="<option value='$seminar_id'>$seminar_name</option>"; } } $seminar = "<select name='seminar'>$bit</select>"; $content .= " <form METHOD='POST' ACTION='calendar.php' name='submit'> <center> <table border='0' style='text-align: center; width: 521px; height: 26px;' border='1' cellpadding='2' cellspacing='2'> <tbody> <tr> <td style='text-align: center;'>$monat $jahr $seminar <input name='submit' type='submit' value='Aktualisieren'/></td> <td style='text-align: center;'></td> </tr> </tbody> </table> </center> </form> "; $content .= "<br />"; if(isset($_POST['submit'])) { if($aktueller_monat == 01) { $aa = "Jan"; } if($aktueller_monat == 02) { $aa = "Feb"; } if($aktueller_monat == 03) { $aa = "Mar"; } if($aktueller_monat == 04) { $aa = "Apr"; } if($aktueller_monat == 05) { $aa = "Mai"; } if($aktueller_monat == 06) { $aa = "Jun"; } if($aktueller_monat == 07) { $aa = "Jul"; } if($aktueller_monat == 08) { $aa = "Aug"; } if($aktueller_monat == 09) { $aa = "Sep"; } if($aktueller_monat == 10) { $aa = "Okt"; } if($aktueller_monat == 11) { $aa = "Nov"; } if($aktueller_monat == 12) { $aa = "Dez"; } for($i = 0; $i < 1; $i++) { $monat = mktime(0, 0, 0, $aktueller_monat, 1, $aktuell_jahr); $monat_t = date("t", $monat); } $ausgabe_datum = ""; for($i = 1; $i < $monat_t+1; $i++) { $ausgabe_datum .= " <th width='30' scope='col'>".$i.". </th>"; } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// $iii = 0; $seminar_platz = $db->singleQuery("SELECT seminar_platz FROM seminare WHERE seminar_id='".$seminar_select_id."'"); $seminar_platz = $seminar_platz['seminar_platz']; $platz_insert_neu = ""; $platz= ""; for($i = 1; $i < $seminar_platz+1; $i++) { $platz_insert = ""; foreach($db->multiQuery("SELECT * FROM seminar_user WHERE usr_seminiar='".$seminar_select_id."'") as $value) { foreach($value as $key => $val) $$key = $val; $usr_datum_ = date("m",$usr_datum); $usr_tage_ = date("m",$usr_tage); if($aktueller_monat == $usr_datum_) { $usr_tage_an = date("d",$usr_datum); $usr_tage_en = date("d",$usr_tage); if($platz_insert_neu != $platz_insert || $iii == 0) { $platz_insert .= "<td width='30'>$usr_name</td>"; } elseif($platz_insert_neu == $platz_insert) { $platz_insert .= ""; } } else { $platz_insert .= ""; } } $platz .=" <tr> <td width='50'>Platz $i</td> $platz_insert </tr>"; } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// $content .= " <div style='background:#FFFFFF'> <br /><br /> <table width='80%' border='1'> <tr> <td width='50'></td> $ausgabe_datum </tr> $platz </table> <br /><br /> </div>"; } else { $content .="Bitte Monat und Jahr waehlen."; } $content .= "</center>"; echo $content; ?>
Sorry, wenn es nicht richtig formatiert ist, aber das ist nicht wirklich meine Stärke.
Der Kalender kann sich auf jeden Fall anhand der eingegeben Plätze des Seminars aufbauen und je nachdem welcher Monat gewählt wurde dessen Tage anzeigen.
Frage ist nur wie ich die Teilnehmerdaten jeweils anzeigen lassen kann.So, habt ihr schon mal einen kleinen Überblick und hoffe das ihr mir bisschen helfen könnt. Freue mich auf baldige Antworten.
-
Hallo nochmal,
brauche noch mal eure Hilfe. Hab mich jetzt auch mal angemeldet, diese Sicherheitsabfragen nerven
Zum Problem:
es geht immer noch um das Tippspiel. Nun aber nicht mehr mit dem einfügen, sondern dem auslesen. Das auslesen soll ein wenig spieziell sein:
Es sollen für jeden Spieltag individuell die höchsten Quoten von verschiedenen Anbietern angezeigt werden, aber nur immer für einen Spieltag (der User gibt ja für viele verschiede Anbieter Quoten an).Hier mal ein Beispiel: (bisschen unformatiert)
H R A Summe
Köln – Stuttgart 3,9 1,9 2,4
Anbieter1 Anbieter2 Anbieter3
hier ist mein Code (der gibt aber alle Spielebegegnungen mit den jeweiligen Daten ausm. Soll aber nur eine Begegnung mit den den höchsten Quoten sein. Sollte ja mir ORDER BY und LIMIT zu machen sein, aber ich verzeiffel ein wenig daran.PHP
Alles anzeigen<? switch($action) { default: $content = umlaute("<h1>Quotenvergleich</h1>Hier können Sie Ihre eingegeben Quoten vergleichen.<br /><br />"); $getliga_id = 0; if($_POST) { if(isset($_POST['liga_id'])) { $getliga_id = $_POST['liga_id']; } } if($getliga_id == 0) { $content .= "<form action='index.php?section=".$section."' method='post'>"; $content .= umlaute("<center><b>Bitte wählen Sie eine Liga aus.</b> Es werden nur Ligen angezeigt, in der Sie breits Quoten eingetragen haben.<br /><br />"); $ausgabe = ""; $liga = ""; foreach($db->multiQuery("SELECT * FROM liga ORDER BY liga_name ASC") as $value) { foreach($value as $key => $val) $$key = $val; $count = 0; foreach($db->multiQuery("SELECT tb_spieltag_id FROM spieltag WHERE spieltag_liga_id='".$tb_liga_id."'") as $value) { foreach($value as $key => $val) $$key = $val; $registrierte_quoten = $db->singleQuery("SELECT COUNT(*) FROM quoten WHERE quoten_user_id='".$session->getElement('userid')."' AND quoten_spieltag_id ='".$tb_spieltag_id."' AND quoten_trash='0'"); $registrierte_quoten = $registrierte_quoten['COUNT(*)']; if($registrierte_quoten) $count++; } if($count == 0) $ausgabe = "</center></form>"; else $liga .="<option value='$tb_liga_id'>$liga_name</option>"; $ausgabe = "<select name='liga_id'>$liga</select><br /><br /><input type='submit' name='submit' value='Abschicken' /></center></form>"; } $content .= $ausgabe; } else if($getliga_id > 0) { $content = umlaute("<h1>Quotenvergleich</h1>Hier können Sie Ihre eingegeben Quoten vergleichen.<br /><br />"); $check = $db->singleQuery("SELECT liga_name FROM liga WHERE tb_liga_id='".$getliga_id."'"); $content .= umlaute("Ausgewählte Liga: <b>".$check['liga_name']."</b><br /><br />"); $content .= " <table width='400' border='0' align='center'> <tr> <td width='111'><div align='center'><strong>Heim</strong></div></td> <td width='111'><div align='center'><strong>Aus</strong></div></td> <td width='36'><div align='center'><strong>H</strong></div></td> <td width='33'><div align='center'><strong>R</strong></div></td> <td width='36'><div align='center'><strong>A</strong></div></td> <td width='47'><div align='center'><strong>Summe</strong></div></td> </tr>"; $count = 0; foreach($db->multiQuery("SELECT * FROM spieltag WHERE spieltag_liga_id='".$getliga_id."' AND trash='0' ORDER BY tb_spieltag_id ASC") as $value) { $background = ($count % 2) ? "#000fff" : "#00ffff"; foreach($value as $key => $val) $$key = $val; foreach($db->multiQuery("SELECT * FROM quoten WHERE quoten_spieltag_id='".$tb_spieltag_id."' AND quoten_trash='0' ORDER BY quoten_heim DESC") as $value) { foreach($value as $key => $val) $$key = $val; $data = $db->singleQuery("SELECT verein_name FROM verein WHERE tb_verein_id='".$spieltag_verein_id_heim."'"); foreach($data as $key => $value) $$key = $value; { $heim = $verein_name; } $data = $db->singleQuery("SELECT verein_name FROM verein WHERE tb_verein_id='".$spieltag_verein_id_aus."'"); foreach($data as $key => $value) $$key = $value; { $aus = $verein_name; } $data = $db->singleQuery("SELECT anbieter_name FROM quote_anbieter WHERE id='".$anbieter_id."'"); foreach($data as $key => $value) $$key = $value; { $anbieter_name = $anbieter_name; } $rechne_quote_neu_summe = 0; $rechne_quote_heim = 0; $rechne_quote_remie = 0; $rechne_quote_aus = 0; $rechne_quote_summe = $quoten_heim + $quoten_remie + $quoten_aus; if($quoten_heim != 0) { $rechne_quote_heim = 1 / $quoten_heim; $rechne_quote_heim = round($rechne_quote_heim,3); } if($quoten_remie != 0) { $rechne_quote_remie = 1 / $quoten_remie; $rechne_quote_remie = round($rechne_quote_remie,3); } if($quoten_aus != 0) { $rechne_quote_aus = 1 / $quoten_aus; $rechne_quote_aus = round($rechne_quote_aus,3); } $rechne_quote_neu_summe = $rechne_quote_heim + $rechne_quote_remie + $rechne_quote_aus; $content .= " <tr> <td style='padding:6px;'><div align='center' >$heim</div></td> <td style='padding:6px;'><div align='center'>$aus</div></td> <td style='padding:6px;'><div align='center'>$quoten_heim</div></td> <td style='padding:6px;'><div align='center'>$quoten_remie</div></td> <td style='padding:6px;'><div align='center'>$quoten_aus</div></td> <td style='padding:6px;'><div align='center'>$rechne_quote_summe</div></td> </tr>"; $content .= " <tr> <td style='border-bottom:1px solid #1B1B1B; padding:6px; text-align:center; background:$background';><div align='center'><b>Anbieter:</b></div></td> <td style='border-bottom:1px solid #1B1B1B; text-align:center; background:$background';><div align='center'>$anbieter_name</div></td> <td style='border-bottom:1px solid #1B1B1B; text-align:center; background:$background';><div align='center'>$rechne_quote_heim</div></td> <td style='border-bottom:1px solid #1B1B1B; text-align:center; background:$background';><div align='center'>$quoten_remie</div></td> <td style='border-bottom:1px solid #1B1B1B; text-align:center; background:$background';><div align='center'>$rechne_quote_remie</div></td> <td style='border-bottom:1px solid #1B1B1B; text-align:center; background:$background';><div align='center'>$rechne_quote_neu_summe</div></td> </tr> "; } } $content .= "</table>"; } } ?>
Die Tabellen:Spieltag:
PHP
Alles anzeigen`tb_spieltag_id` int(11) NOT NULL auto_increment, `spieltag_verein_id_aus` int(11) NOT NULL, `spieltag_verein_id_heim` int(11) NOT NULL, `spieltag_user_id` int(11) NOT NULL, `spieltag_datum` int(11) NOT NULL, `spieltag_liga_id` int(11) NOT NULL, `quote_heim` varchar(7) NOT NULL, `quote_remie` varchar(7) NOT NULL, `quote_aus` varchar(7) NOT NULL, `trash` tinyint(1) NOT NULL default '0', PRIMARY KEY (`tb_spieltag_id`)
Quoten:
PHP
Alles anzeigen`quoten_id` int(11) NOT NULL auto_increment, `quoten_user_id` int(11) NOT NULL, `quoten_spieltag_id` int(11) NOT NULL, `anbieter_id` varchar(255) NOT NULL, `quoten_heim` varchar(11) NOT NULL, `quoten_remie` varchar(11) NOT NULL, `quoten_aus` varchar(11) NOT NULL, `quoten_trash` tinyint(1) NOT NULL default '0', `quoten_datum` int(11) NOT NULL, `quote_x` varchar(11) NOT NULL, `quote_y` varchar(11) NOT NULL,