zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden Linked List - PHP

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 28.04.2013, 13:01
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 01.06.2010
Beiträge: 126
steve46 befindet sich auf einem aufstrebenden Ast
Standard Linked List - PHP

Guten Tag,

Sorry aber ich muss euch heute nochmal mit einer Frage belästigen.

Ich hab in PHP eine Liste erzeugt die mir immer Benachrichtigungen abspeichert. Dabei soll immer vorne angehängt werden und die restlichen Elemente werden nach hinten geschoben. Ich hab das ganze mal über jQUERY-AJAX gelöst und rufe dann die .php-Datei auf. Aber irgendwie lässt sich nie ein zweites Element hinzufügen! Obwohl ich mit der Methode InsertFirst() eigentlich immer vorne anhäng und den Rest nach hinten schiebe. Wisst ihr warum?

HTML-Code:
<!DOCTYPE html>
	<html>
		<head>
			<script  language="JavaScript" src="jquery.js"></script>
			<link rel="stylesheet" media="screen" href="style.css" />
			<title>WAPME -Example</title>
		</head>
		<body>
			<section id="notifications">
			</section>
			<br />
			<br />
			<input type="button" id="newNotification" value="Neue Test-Benachrichtigung erzeugen..." />
			<script language="JavaScript">
				$("#newNotification").click(function () {
					$.ajax({
						type: "POST",
						url: "list.php",
						success: function html(html) {
							$("#notifications").html(html);
						}
					});
				});
			</script>
		</body>
	</html>
PHP-Code:
<?php
    
class Notification
    
{
        public 
$fromUser;
        public 
$kindOfNotifiaction;
        public 
$dateAndTime;
                    
        public function 
__construct($fromUser$kindOfNotification$dateAndTime)
        {
            
$this->fromUser $fromUser;
            
$this->kindOfNotification $kindOfNotification;
            
$this->dateAndTime $dateAndTime;
        }
                    
        public function 
FromUser()
        {
            return 
$this->fromUser;
        }
                    
        public function 
KindOfNotification()
        {
            
$str;
            if(
$this->kindOfNotification == 1)
            {
                
$str "gefällt dein Status.";
            }
            return 
$str;
        }
                    
        public function 
DateAndTime()
        {
            
$date date("d");
            
$monthArray = array("Jänner""Februar""März""April""Mai""Juni""Juli""August""September""Oktober""November""Dezember");
            
$month explode("0"date("m"));
            
$actualMonth $month[1] - 1;
            
$monthResult $monthArray[$actualMonth];
            
$year date("Y");
            
$hour date("H");
            
$minute date("i");
            return 
"<small>".$date.".".$monthResult.".".$year." um ".$hour.":".$minute.".</small>";
        }
    }
                
    class 
Node
    
{
        public 
$next;
        public 
$data;
                    
        function 
__construct($data)
        {
            
$this->data NULL;
            
$this->next NULL;
        }
    }
                
    class 
ListOfNotifications
    
{
        public 
$data;
        public 
$next;
        public 
$firstElement;
        public 
$counter;
                    
        function 
__construct()
        {
            
$this->data NULL;
            
$this->next NULL;
            
$this->firstElement NULL;
            
$this->counter 0;
        }

        function 
InsertFirst()
        {
            
$newNodeData = new Notification("test1234"1"");
            
$newNodeDataKindOfNotification $newNodeData->KindOfNotification();
            
$newNodeDataDateAndTime $newNodeData->DateAndTime();
            
$newNode = new Node($newNodeData);
            
$newNode->data $newNodeData;
            
$newNode->next $this->firstElement;
            
$this->firstElement $newNode;
            
$this->counter++;
            if(
$this->counter == 1)
            {
                
$str "<section class='notification' style='padding-left:15px;padding-top:30px;'>".$newNodeData->fromUser." ".$newNodeDataKindOfNotification."<br />".$newNodeDataDateAndTime."</section>";
            }
            if(
$this->counter == 2)
            {
                
$str "<section class='notification' style='margin-left:100px;padding-left:15px;padding-top:30px;'>".$newNodeData->fromUser." ".$newNodeDataKindOfNotification."<br />".$newNodeDataDateAndTime."</section>";
            }
            return 
$str;
        }
    }
                
    
$newListElement = new ListOfNotifications();
    
$stringNotification $newListElement->InsertFirst();
    echo 
$newListElement->counter;
    echo 
$stringNotification;
?>
Mit freundlichen Grüßen,
steve46
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 29.04.2013, 13:22
Benutzerbild von mantiz
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 25.02.2007
Beiträge: 2.843
mantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz sein
Standard

Du erstellst in dem Script immer eine neue (leere) Liste. Irgendwie musst du die Elemente der Liste speichern und bei Scriptaufruf erstmal laden bevor du ein neues Element vor anhängst.

PHP-Scripte werden aufgerufen, abgearbeitet und beendet. Willst du Daten über mehrere Requests halten, dann müssen diese in der Session, einer Datenbank oder Datei oder ... persistiert und bei jedem Request entsprechend wieder geladen werden.
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 29.04.2013, 14:00
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 01.06.2010
Beiträge: 126
steve46 befindet sich auf einem aufstrebenden Ast
Standard

OK. Vielen Dank! Reicht es also die Daten der Liste einfach in eine Datenbank zu speichern? Und bei erneutem Ausführen des Scripts lad ich die Daten in einzelene Listenelemente ab?
Mit Zitat antworten
  #4 (permalink)  
Alt 29.04.2013, 14:34
Benutzerbild von mantiz
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 25.02.2007
Beiträge: 2.843
mantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz sein
Standard

Hab' mir jetzt nicht im Detail angesehen, was du da machst, aber ich denke schon.

Außerdem würde ich überlegen dann einfach ein Array zu verwenden anstatt eine selbstgebaute Liste. Das ist mindestens genauso schnell, wenn nicht schneller, sofern es überhaupt auf Geschwindigkeit ankommt, und weitaus weniger fehleranfällig.

Wenn die Daten eh in einer Datenbank gespeichert werden, dann lädst du die Daten idealerweise bereits entsprechend sortiert und auch nur die Daten, die für den Request relevant sind.
Mit Zitat antworten
  #5 (permalink)  
Alt 29.04.2013, 15:47
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 01.06.2010
Beiträge: 126
steve46 befindet sich auf einem aufstrebenden Ast
Standard

Alles klar! Vielen Dank!
Mit Zitat antworten
  #6 (permalink)  
Alt 29.04.2013, 19:53
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 01.06.2010
Beiträge: 126
steve46 befindet sich auf einem aufstrebenden Ast
Standard

Muss dich doch nochmal rückfragen. Wie kann ich ein object in eine MySQL-Datenbank speichern?
Mit Zitat antworten
  #7 (permalink)  
Alt 29.04.2013, 20:31
Benutzerbild von mantiz
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 25.02.2007
Beiträge: 2.843
mantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz sein
Standard

Hier kann man alles grundlegende nachlesen: Quakenet/#php Tutorial - de - Einleitung
Mit Zitat antworten
  #8 (permalink)  
Alt 30.04.2013, 16:38
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 01.06.2010
Beiträge: 126
steve46 befindet sich auf einem aufstrebenden Ast
Standard

Ich muss deswegen eine Liste nehmen (und ich will auch), weil ich nie weiß wie groß meine Datenstruktur wird!

Ich hab jetzt etwas gefunden zum Datenbanktyp BLOB, weiß jetzt aber nicht wie ich das umsetzten kann. Irgendwelche Ideen?
Mit Zitat antworten
  #9 (permalink)  
Alt 30.04.2013, 18:12
Benutzerbild von mantiz
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 25.02.2007
Beiträge: 2.843
mantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz sein
Standard

Zitat:
Zitat von steve46 Beitrag anzeigen
Ich muss deswegen eine Liste nehmen (und ich will auch), weil ich nie weiß wie groß meine Datenstruktur wird!
Da musst du dir in PHP keine Gedanken drüber machen. Die Arrays in PHP sind dynamisch und nicht mit Arrays in z.B. C++ zu vergleichen, die eine fixe Größe haben.

In PHP kannst du Elemente einem Array ganz einfach z.B. per:

PHP-Code:
$array[] = "new element"
anhängen. Bei mehreren Element wäre das dann z.B. so:

PHP-Code:
$array = array();
$array[] = 42// $array[0] == 42
$array[] = "foo"// $array[1] == "foo"
$array[] = new stdClass// $array[2] instanceof stdClass
$array[] = array(12); // $array[3] == array(1, 2) 
Du siehst also, dass es z.B. auch keine Typsicherheit gibt. Du kannst alles mögliche einem Array anfügen oder auch wieder wegnehmen. Genauso kannst du auch einfach:

PHP-Code:
$array["key"] = "bar"
schreiben. Wenn der Key noch nicht existiert, dann wird das Element hinten angehangen, was z.B. beim iterieren wichtig sein kann zu wissen.

Zitat:
Zitat von steve46 Beitrag anzeigen
Ich hab jetzt etwas gefunden zum Datenbanktyp BLOB, weiß jetzt aber nicht wie ich das umsetzten kann. Irgendwelche Ideen?
Von BLOB würde ich die Finger lassen. Erstelle dir am besten eine Tabelle mit den Spalten, die du brauchst, z.B. mit den Spalten "user", "notificationType", "insertDate" (oder so ähnlich).

Dann kannst du neue Einträge einfach per:

Code:
INSERT INTO `tablename` (`user`, `notificationType`, `insertDate`) VALUES ('user', 'type', NOW())
eintragen und per:

Code:
SELECT * FROM `tablename` WHERE `notificationType` = 'type' ORDER BY `insertDate` DESC
abfragen.

Geändert von mantiz (30.04.2013 um 18:24 Uhr) Grund: quote gefixt
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 30.04.2013, 19:51
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 01.06.2010
Beiträge: 126
steve46 befindet sich auf einem aufstrebenden Ast
Standard

OK. Vielen Dank!

Jedesmal wenn der Button gedrückt wird und ein neues Element hinzugefügt wird könnte ich mir ja eine Instanz der Klasse anlegen und in Array speichern.

PHP-Code:
$array = array();
$array[] = new Notification(); 
Und diesen Wert könnte ich ja dann in der Datenbank abspeichern mit:

Code:
INSERT INTO `notification_table` (user, text, date) VALUES ('$array->user', '$array->text', '$array->date');
Oder?
Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

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.

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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Senior PHP Developer/Entwickler (m/w) 1000jobboersen Jobs 0 04.07.2012 12:22
php Seiten online stellen online Serveradministration und serverseitige Scripte 7 27.03.2009 13:13
Praxisnah PHP lernen p0mmeluff Serveradministration und serverseitige Scripte 5 24.03.2009 22:18
php Datei in css webseite einbinden X5-599 Serveradministration und serverseitige Scripte 14 19.05.2008 10:52
Dateien auslagern - Include und PHP ArcVieh Serveradministration und serverseitige Scripte 17 27.03.2008 19:09


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