WinFuture-Forum.de: Php Mysql Order By Abfrage Problem - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Php Mysql Order By Abfrage Problem Termine aus Vergangenheit nicht Anzeigen


#1 Mitglied ist offline   Maetz3 

  • Gruppe: aktive Mitglieder
  • Beiträge: 147
  • Beigetreten: 13. Juni 05
  • Reputation: 0
  • Wohnort:K-Town

geschrieben 20. März 2006 - 15:49

Morgen,

ich habe folgendes Problem:
Ich habe einen Online Calendar. Wenn ich einen Termin Eintrage muss ich folgende sachen eintragen:

Tag, Monat, Jahr, Titel, Text

So nun will ich eine Extra Abfrage starten auf der er mir die nächsten 4 Anstehenden Termine Anzeigt.

tag, monat, jahr, titel

so. Bis dato habe ich das folgendermasen gelöst
<?  $tabelle = "calendar";

$db = @mysql_connect($host, $user, $passw)
or die ("Verbindungsaufnahme NICHT Erfolgreich!");
@mysql_select_db($database, $db)
or die ("Verbindungsaufnahme mit Datenbank NICHT Erfolgreich!");

$abfrage = "SELECT *  
  FROM ".$tabelle."  
  ORDER BY 
   y ASC,
   m DESC,
   d DESC LIMIT 4;";
  $ergebnis = mysql_query($abfrage);
  while($row = mysql_fetch_object($ergebnis))
	{
	echo"<h5>".$row->d.".".$row->m.".".$row->y."<br />".$row->title."</h5>";
	}
  ?>

Das Problem ist aber nun das er mir das ganze vom letzen bis zum ersten termin Anzeigt. Wenn ich das ganze anders herum Sortieren lasse zeigt er mir vergangene Termine an.

Wie schaffe ich das nun das er mir ab dem heutigen tage immer die nächsten 4 Anstehenden Termine Anzeigt?

Vielen Dank schon einmal für eure Antworten

Gruß Maetz3
0

Anzeige



#2 Mitglied ist offline   Meatwad 

  • Gruppe: aktive Mitglieder
  • Beiträge: 784
  • Beigetreten: 07. August 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Bad Vilbel
  • Interessen:Computer, Inliner, Chatten...

geschrieben 20. März 2006 - 16:21

musst halt überprüfen lassen, ob des datum schon vergangenheit ist. wenn ja dann wird der nächte datensatz überprüft. wenn dann en datum in der zukumpft kommt, dann wird $i = 0 und wann solange auslesen, wie $i < 4 ist
I am away to look for my self. If I am back before I return keep me here. | Mein Server
0

#3 Mitglied ist offline   Maetz3 

  • Gruppe: aktive Mitglieder
  • Beiträge: 147
  • Beigetreten: 13. Juni 05
  • Reputation: 0
  • Wohnort:K-Town

geschrieben 20. März 2006 - 18:34

und wie ?

EDIT:
kann man evtl. bei der Abfrage die 3 Datumsangaben zusammenfassen und dann irgenwie mit dem heutigem Datum Vergleichen lassen?

EDIT2:
ok Problem gelöst:

<?

define("DB_NAME", "");				// db name
define("DB_USER", "");				// db username
define("DB_PASS", "");				// db password
define("DB_HOST", "");			// db server
define("DB_TABLE_PREFIX", "");


//Connect
mysql_connect(DB_HOST, DB_USER, DB_PASS) or die(mysql_error());
mysql_select_db(DB_NAME) or die(mysql_error());
//Connect!!ED!!
$sql = "SELECT id, y, m, d, title, text, TIME_FORMAT(start_time, '%k:%i') AS stime, ";
$sql .= "TIME_FORMAT(end_time, '%k:%i') AS etime, " . DB_TABLE_PREFIX . "users.uid, fname, lname ";
$sql .= "FROM " . DB_TABLE_PREFIX . "mssgs ";
$sql .= "LEFT JOIN " . DB_TABLE_PREFIX . "users ";
$sql .= "ON (" . DB_TABLE_PREFIX . "mssgs.uid = " . DB_TABLE_PREFIX . "users.uid) ";
$sql .= "WHERE text IS NOT NULL AND (y*10000+m*100+d) >= ";
$sql .= "(YEAR(NOW())*10000+MONTH(NOW())*100+DAYOFMONTH(NOW())) ";
$sql .= "ORDER BY y, m, d, start_time LIMIT 4";
$result = mysql_query($sql) or die(mysql_error());

$day = date("j");
$month = date("n");
$year = date("Y");

$num_rows = mysql_num_rows($result); 
if ($myrow = mysql_fetch_array($result)) {

do {
	$wday =  date ("w", mktime(0,0,0,$myrow['m'],$myrow['d'],$myrow['y']));
	$title = stripslashes($myrow["title"]);
	
if ($myrow["stime"] == "55:55") {
		$timestr = "";
	}
	elseif ($myrow["stime"] == $myrow["etime"]) {
		$timestr = $myrow["stime"] . " o'clock";
	} else { 
		$timestr = $myrow["stime"] . "-" . $myrow["etime"] . " o'clock";
	}
	echo"<h5>".$myrow['d'].".".$myrow['m'].".".$myrow['y']."<br />".$title."<a href=\"calendar/index.php\"><br />more...</a></h5>";
	global $lang;

  } while ($myrow = mysql_fetch_array($result));
	
} else {
	echo "Momentan keine Termine!";	
}
  ?>

Dieser Beitrag wurde von Maetz3 bearbeitet: 20. März 2006 - 20:07

0

#4 Mitglied ist offline   mo 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.796
  • Beigetreten: 17. Juni 02
  • Reputation: 0
  • Wohnort:Ulm / BaWü

geschrieben 21. März 2006 - 10:40

omg, nimm doch lieber gleich einen DATE type:
http://dev.mysql.com/doc/refman/5.0/en/dat...-functions.html
I'm mó. mo's good twin.
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0