php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 11.01.2005, 17:03  
Gast
 
Beiträge: n/a
Standard Kalender nach Einträgen in Tabelle anzeigen

Moin,

habe ein kleines Problem:

Ich habe einen Kalender, der den aktuellen Tag markiert (farbig) und jeweils Samstag und Sonntag anders darstellt.
Nun möchte ich mit bestimmten Daten aus einer DB.Tabelle den jeweiligen Tag - sofern in der DB etwas hinterlegt ist - auch markieren.
Da aber das ganze in einer while() Schleife steht, habe ich Probleme bei der korrekten Ausgabe/Anzeige. Hier der Teil der Ausgabe:

Code:
while($i<=$insgesamt) {
$rest=($i+$erster-1)%7;


$smo = $monat[$monat-1];
$bplan = mysql_query("SELECT * FROM ghk WHERE monat = $smo");
$br = mysql_num_rows($bplan);

for($q = 0; $q < $br; $q++) {
  $bp = mysql_fetch_array($bplan);
  if($i == $bp[$q]) {
  echo "<td style=\"font-size:9pt; font-family:Verdana; background:#CC0000;\" align=center><span style=\"color:#ffffff;\">$i</span>";
}
}

echo "<td style=\"font-size:9pt; font-family:Verdana\" align=center>";
if($rest==6) {
echo "<span style=\"color:#ABABAB\">$i</span>";
} else if($rest==0) {
echo "<span style=\"color:#D2A263\">$i</span>";
} else {
echo "<span style=\"color:#9f6a24\">$i</span>";
}


echo "</td>\n";

if($rest==0){echo "</tr>\n<tr>\n";}
$i++;
}
Hat jemand ne Idee oder einen Tipp?
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 12.01.2005, 13:40  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Aus so grässlich formatiertem Code (vgl. http://tut.php-q.net/einruecken.html) wird ja keiner schlau. Hier als Anregung (und durchaus auch Beispiel für eine mögliche Formatierung) ein Stück Code, das sowas ähnliches macht:
PHP-Code:
<?php
$jahr 
2005;
$monat 1;
list(
$insgesamt$wtag) = explode(':'date('t:w'mktime(000$monat1$jahr)));
echo 
"<table border='1' cellpadding='5'>";
echo 
"<tr><th>Mo</th><th>Di</th><th>Mi</th><th>Do</th><th>Fr</th><th>Sa</th><th>So</th></tr>";
for(
$i 1;$i $wtag;$i ++){
    echo 
"<td></td>";   // Leerzellen bis zum entsprechenden Wochentag
}
for(
$i 1;$i <= $insgesamt$i ++) {
    
$wtag date('w'mktime(000$monat$i$jahr));

    echo 
"<td style=\"font-size:9pt; font-family:Verdana\" align=center>";
    switch(
$wtag) {
        case 
6:
            
$col '#ABABAB';
            break;
        case 
0:
            
$col '#D2A263';
            break;
        default:
            
$col '#ffffff';
    }    
    
$datum sprintf('%4d-%02d-%02d'$jahr$monat$i);
    
$bplan mysql_query("SELECT count(*) FROM ghk WHERE datum = '$datum'") or die(mysql_error());
    list(
$br) = mysql_fetch_row($bplan);
   
    
$col br 'red' $col;
    echo 
"<span style='background-color:$col'>$i</span>";
    echo 
"</td>\n";

    if(
$wtag == 0) {
        echo 
"</tr>\n<tr>\n";
    }

echo 
"</table>";
?>
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Alt 13.01.2005, 13:08  
Gast
 
Beiträge: n/a
Standard

Ich habe nun bei mehrere Scripts versucht, diese meinen Vorstellungen anzupassen. Aber durch diese dämlichen Schleifen bekomme ich entweder alle Tage x mal (entsprechend $row) ausgegeben, oder garnichts. Schätze, ich hatte hier auch ins falsche Forum gepostet, sorry... Habe das Problem erst für etwas anderes gehalten.

PHP-Code:
# nicht mehr aktuell, code siehe weiter unten 
  Mit Zitat antworten
Alt 13.01.2005, 13:22  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von montri
Aber durch diese dämlichen Schleifen bekomme ich entweder alle Tage x mal (entsprechend $row) ausgegeben, oder garnichts.
Weil der Algorithmus für die Anzeige falsch ist.
Das ...
Code:
$rows = mysql_num_rows($inhalt); 
for($z = 0; $z < $rows; $z++) { 
$daten = mysql_fetch_object($inhalt); 
$full = array($daten->tag); 
}
... ist komplett sinnfrei, weil Du bei jedem Schleifendurchlaf den Wert von $full überschreibst.
  Mit Zitat antworten
Alt 13.01.2005, 13:30  
Gast
 
Beiträge: n/a
Standard

Das ist deer letzte Versuch, ich hatte vorher die if-Schleifen (if($i == $full[$r]) ...) mit in dieser stehen, was logischerweise jeden Tag mehrmals ausgibt (eben so oft, wie zeilen vorhanden sind). Wie kann ich das denn anders lösen? Ich bin am Ende mit Nerven und Wissen, versuche bereits seit Sonntag diesen Kalender hinzubekommen

//edit

vorher habe ich die Daten auch mit mysql_fetch_array() in einen Array geschrieben, bis dort war ich schon. Aber da die Ausgabe immer Fehlerhaft war... naja...
  Mit Zitat antworten
Alt 13.01.2005, 13:32  
Gast
 
Beiträge: n/a
Standard

Zitat:
Wie kann ich das denn anders lösen?
17.10. Ich habe eine Tabelle mit n Einträgen und möchte auf jeder Seite m davon anzeigen
http://www.php-faq.de/q/q-mysql-seitenweise.html
  Mit Zitat antworten
Alt 13.01.2005, 13:48  
Gast
 
Beiträge: n/a
Standard

Das hat aber nichts mit meinem Problem zu tun

Ich möchte nur für Einträge in der DB (entsprechend einem Tag 1-31) den entsprechenden im ausgegebenen Kalender markiert haben.
  Mit Zitat antworten
Alt 13.01.2005, 15:39  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von montri
Das hat aber nichts mit meinem Problem zu tun
Zwischenzeitlich sah es nach einer 'pager Funktionalität' aus, was ich glaubte, in Deinem Text verstanden zu haben.
Zitat:
Ich möchte nur für Einträge in der DB (entsprechend einem Tag 1-31) den entsprechenden im ausgegebenen Kalender markiert haben.
Was meinst Du, was Du mit einer korrekten SQL Abfrage alles erreichen kannst...

Was willst Du:
einen Tag von 365 möglichen Tagen eines Kalendertages rausfischen (->Datum- und Zeitfunktionen von MySQL; DateTime oder Date als Spaltentyp verwenden) (WHERE...)
mehrere Tage eines Jahres/Monats in der Datenmenge eines Jahres/Monats markieren (MySQL kennt auch das IF)
oder:___________
  Mit Zitat antworten
Alt 13.01.2005, 16:07  
Gast
 
Beiträge: n/a
Standard

hm, steht ganz oben
Zitat:
habe ein kleines Problem:

Ich habe einen Kalender, der den aktuellen Tag markiert (farbig) und jeweils Samstag und Sonntag anders darstellt.
Nun möchte ich mit bestimmten Daten aus einer DB.Tabelle den jeweiligen Tag - sofern in der DB etwas hinterlegt ist - auch markieren.
nochmal zum Verständnis, und ein weiteres Script (ist übrigens wieder das Erste):
PHP-Code:
<?php

require_once("../conn.php");

if(
$_GET['select'] == "") {
    
$heute=date("d");
    
$monat date("n");
    }
else {
    
$heute "";
    
$monat $_GET['select'];
    }

    
$jahr=date("Y");
    
$erster=date("w"mktime(0,0,0,$monat,1,$jahr));
    
$insgesamt=date("t");
    
$monate=array("Januar","Februar","M&auml;rz","April","Mai","Juni","Juli","August""September","Oktober","November","Dezember");

    if(
$erster==0) { $erster=7; }

?> 
      <form name="base">
        <select name="select" style="font-size:12px; font-family:Verdana; color:#9f6a24" onChange="setM()">
          <option selected><?php if($_GET['select'] == "") { echo $monate[$monat-1]; } else { echo $monate[$_GET['select']-1]; } ?></option>
          <option value=""> </option>
          <option value="01">Januar</option>
          <option value="02">Februar</option>
          <option value="03">M&auml;rz</option>
          <option value="04">April</option>
          <option value="05">Mai</option>
          <option value="06">Juni</option>
          <option value="07">Juli</option>
          <option value="08">August</option>
          <option value="09">September</option>
          <option value="10">Oktober</option>
          <option value="11">November</option>
          <option value="12">Dezember</option>
        </select> <?php echo $jahr?>
      </form>

<?php

    
echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
    echo 
"<th colspan=\"7\" align=\"center\" style=\"font-size:12px; font-family:Verdana; color:#9f6a24\">";
    echo 
"</th><tr class=\"fltext\">\n<td>[b]Mo[/b]</td><td>[b]Di[/b]</td>";
    echo 
"<td>[b]Mi[/b]</td><td>[b]Do[/b]</td>";
    echo 
"<td>[b]Fr[/b]</td><td>[b]Sa[/b]</td>";
    echo 
"<td>[b]So[/b]</td></tr>\n";
    echo 
"<tr>\n";

    
$i=1;

    while(
$i<$erster) {
        echo 
"<td></td>"$i++;
        }
    
$i=1;
    
    while(
$i<=$insgesamt) {
        
$rest=($i+$erster-1)%7;
            if(
$i==$heute){
                echo 
"<td style=\"font-size:9pt; font-family:Verdana; background:#9f6a24;\" align=center>";
                } else {
                echo 
"<td style=\"font-size:9pt; font-family:Verdana\" align=center>";
                }
    
    
$inhalt mysql_query("SELECT * FROM ghk WHERE monat = $monat ORDER BY tag");
    
$rows mysql_num_rows($inhalt);

    
# (1)
    
    
for($s 0$s $rows$s++) {
    
        
$idx mysql_fetch_array($inhalt);
        
        
# $vgl sind tage, von 1-31, wenn vorhanden
        
        
$vgl $idx['tag'];
    
    }
        
# DIESES SOLL IN DIE FORSCHLEIFE - siehe (1)
        # (ohne, dass jeder tag mal $rows ausgegeben wird)

        # if($i == $idx['tag']){
        #     echo "<td style=\"font-size:9pt; font-family:Verdana; background:#cc0000;\" align=center><span style=\"color:#ffffff;\">$i</span>";
        #     } 
        # else if($rest == 6) {
        #     echo "<td style=\"font-size:9pt; font-family:Verdana\" align=center><span style=\"color:#ABABAB\">$i</span>";
        #     }
        # else if($rest == 0) {
        #     echo "<td style=\"font-size:9pt; font-family:Verdana\" align=center><span style=\"color:#D2A263\">$i</span>";
        #     }
        # else {
        #     echo "<td style=\"font-size:9pt; font-family:Verdana\" align=center><span style=\"color:#9f6a24\">$i</span>";
        #     }

        # ENDE


    
if($i==$heute){
        echo 
"<span style=\"color:#ffffff;\">$i</span>";
        }
    else if(
$rest==6) {
        echo 
"<span style=\"color:#ABABAB\">$i</span>";
        }
    else if(
$rest==0) {
        echo 
"<span style=\"color:#D2A263\">$i</span>";
        }
    else {
        echo 
"<span style=\"color:#9f6a24\">$i</span>";
        }
    
    echo 
"</td>\n";
    
    if(
$rest==0){echo "</tr>\n<tr>\n";}
    
$i++;
    }

    echo 
"</tr>\n";
    echo 
"</table>\n";
?>

<script language="javascript">
function setM() {
self.location = "?select="  + this.base.select.value;
}
</script>
//edit

vergessen: so sieht die tabelle aus

Code:
monat   tag   jahr      bemerkung
1       6      2005     bla
1       15     2005     ...
3       7      2006     ...
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Kalender nach Datum ordnen und alte Termine nicht anzeigen. Wie? Ricardando PHP Tipps 2008 9 05.01.2008 19:35
Problem mit anzeigen von buchstabe: ä von sql tabelle in php Bruce PHP Tipps 2007 4 24.11.2005 12:59
nur letzten eintrag aus der mysql tabelle anzeigen lassen DaronM PHP Tipps 2007 7 14.11.2005 17:30
DB in Tabelle anzeigen PHP Tipps 2005-2 1 11.10.2005 16:13
Datensätze in tabelle anzeigen tommi89 Datenbanken 5 23.09.2005 11:44
Text mit Absätzen von mysql tabelle anzeigen Matthiasnet PHP Tipps 2005-2 2 27.07.2005 14:39
Aus einer Tabelle das nächste datum anzeigen!?! PHP Tipps 2005-2 8 13.07.2005 08:16
Spalten Dynamisch als Tabelle anzeigen lassen(Spalten ausl.) Cyberbob_at_tot PHP Tipps 2005-2 6 04.06.2005 22:55
[Erledigt] daten in einer tabelle anzeigen PHP Tipps 2005 6 26.05.2005 15:17
Ganze Tabelle anzeigen PHP Tipps 2005 3 14.05.2005 21:19
vorhandene Tabelle anzeigen lassen nieselfriem Datenbanken 5 31.03.2005 23:17
Text von MySql Tabelle anzeigen lassen Matthiasnet Datenbanken 2 09.02.2005 13:57
image in tabelle mit 100% breite anzeigen? Promaetheus HTML, Usability und Barrierefreiheit 2 15.12.2004 20:05
Tabelle ordnen und richtig anzeigen PHP Tipps 2004 3 12.09.2004 09:56
HILFE: Column count doesn't match value count at row 1 Datenbanken 17 12.06.2004 16:45

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
tabelle kalender html, php kalender in tabelle ausgeben, php kalender einträge aus sql anzeigen, php kalender tabelle, kalender tabelle monat, kalenderblatt table, mysql datum in kalender anzeigen, html kalender tabelle, einträge in ein kalender darstellen php, kalender php einträge, januar kalender tabelle, java kalender in tabelle darstellen, kalender php 1-31, php kalender in tabellen, monat 1-31 als tabelle, daten aus tabelle in kalender anzeigen, mysql datum von bis, php text aus tabelle anzeigen datum, php text aus tabelle datum anzeigen, mysql nach monat auslesen und tabelle mit januar februar

Alle Zeitangaben in WEZ +2. Es ist jetzt 04:04 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.