kostenloser Webspace werbefrei: lima-city


PHP - MySQL Abfrage und Ausgabe Problem

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    g********e

    Hey,

    ich arbeite an einer Ausgabe von Benachrichtigungen, wo alle deine und die deiner Freunde ausgegeben werden soll. Dazu habe ich folgenden Code:
    <?php
    $return_friends = select_sql("SELECT friends_user_id1,friends_user_id2 FROM friends WHERE friends_user_id1 = '".$_SESSION['id']."' OR friends_user_id2 = '".$_SESSION['id']."'");
    $return_notifications = select_sql("SELECT * FROM notifications ORDER BY notifications_date, notifications_time DESC");
    if($return_friends=="!ERROR!")
    {
    	$return_friends = array();
    }
    $friends = array($_SESSION['id']);
    for($z=0;$z<count($return_friends);$z++)
    {
    	if($return_friends[$z]['friends_user_id1'] == $_SESSION['id'])
    	{
    		array_push($friends, $return_friends[$z]['friends_user_id2']);
    	}
    	else
    	{
    		array_push($friends, $return_friends[$z]['friends_user_id1']);
    	}
    }
    
    for($z1=0;$z1<count($return_notifications);$z1++)
    {
    	if(in_array($return_notifications[$z1]['notifications_user_id'],$friends))
    	{
    		$return_user = select_sql("SELECT * FROM user WHERE user_id = '".$return_notifications[$z1]['notifications_user_id']."' LIMIT 1");
    		switch($return_notifications[$z1]['notifications_type'])
    			{
    				// User beigetreten
    				case ("acceded"):
    					echo "<b>".$return_user[0]['user_fullname']."</b> ist Giga-Score beigetreten.<br />";
    				break;
    				
    				//Bild hinzugefügt
    				case ("pic_added"):
    					echo "<b>".$return_user[0]['user_fullname']."</b> hat ein Bild hinzugef&uuml;gt!<br />";
    				break;
    				
    				// Falls der Typ nicht bekannt ist
    				default:
    					echo "Ein Fehler ist aufgetreten!<br />";
    				break;
    			}
    	}
    }
    ?>


    Mein Problem ist jetzt, dass die neusten Benachrichtigungen oben stehen sollen. Das löst man ja normalerweise mit DESC, funktioniert aber leider nicht. Ich hoffe ihr könnt mir helfen.

    Mit Freundlichen Grüßen
    Michael
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. m**********n

    Ich weiß nicht, mit welchem Datentyp du deine Notifications abspeicherst, allerdings würde ich nicht auf zwei Spalten zurückgreifen, sondern die Zeiten nur in einer Spalte mit einem Timestamp abspeichern. Das dürfte von der Performance auch besser sein.

    Welche Datentypen verwendest du denn?
  4. um nicht im finstern herumzutappen, würde die ausgabe von
    show create table notifications
    enorm weiterhelfen.
  5. r********e

    Warum arbeitest du nicht statt mit "notifications_date, notifications_time" mit einem unix-timestamp? Das ist für Zeitangaben wesentlich performanter, die Sortierung stimmt und umwandeln in ein Datum und/oder in eine Uhrzeit ist auch sehr einfach.
  6. Autor dieses Themas

    g********e

    Hey,
    danke für die schnellen antworten. Ich werde mir das auf Manuel noch einmal mit Timestamp durchlesen. Anfangs wollte ich das auch mit Timestamp machen, habe es dann aber doch so gemacht.

    Liebe Grüße
    Michael

    - - - edit - - -

    Hey,
    ich hätte mal noch eine Frage, wie würdet ihr das mit dem Timestamp machen? Ich finde auf Manual irgendwie nichts richtiges dazu, und versteh es auch nicht wirklich, also wie man die Ausgaben nach der Zeit sortiert ausgeben kann (Siehe erster Beitrag).

    Danke

    LG
    Michael

    Beitrag zuletzt geändert: 7.3.2013 19:10:47 von giga-score
  7. h**s

    hi michael,

    ob du jetzt mit DATE und TIME oder DATETIME oder TIMESTAMP arbeitest sollte ja eigentlich zur lösung deines problems keine rolle spielen.

    da eine aufsteigende sortierung benutzt wird wenn man keine andere angibt solltest du dein statement vielleicht einfach so abändern:
    "SELECT * FROM notifications ORDER BY notifications_date DESC, notifications_time DESC"
  8. Autor dieses Themas

    g********e

    hcms schrieb:
    hi michael,

    ob du jetzt mit DATE und TIME oder DATETIME oder TIMESTAMP arbeitest sollte ja eigentlich zur lösung deines problems keine rolle spielen.

    da eine aufsteigende sortierung benutzt wird wenn man keine andere angibt solltest du dein statement vielleicht einfach so abändern:
    "SELECT * FROM notifications ORDER BY notifications_date DESC, notifications_time DESC"


    vielen Danke :D

    Funktioniert Perfekt :thumb:

    Liebe Grüße
    Michael
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!