Mensen over de hele wereld houden van Twitter vanwege het gebruiksgemak. Het enige dat u hoeft te doen, is uw huidige status invoeren, op 'Update' klikken en u bent klaar. Wat de meeste mensen waarschijnlijk niet weten, is hoe eenvoudig het is om de functionaliteit van Twitter te emuleren. Met behulp van JavaScript, PHP, MySQL en MooTools, kunt u een Twitter-achtig statussysteem in een mum van tijd implementeren.
Voordat we dit systeem maken, mogen we een aantal veronderstellingen die we maken in gedachten houden:
Dit is de volgorde van gebeurtenissen die in ons brouwsel zal plaatsvinden:
Zoals u kunt zien, is het een zeer eenvoudige functionaliteit die op een elegante manier gepresenteerd zal worden.
We hebben een plaats nodig om deze updates op te slaan, toch? Dit is wat onze "statussen" zijn
tabel ziet eruit als:
CREËER TAFEL INDIEN NIET BESTAAT 'statussen' ('status_id' GEMIDDELDEN (10) niet ondertekend NIET NULL auto_increment, 'user_id' SMALLINT (5) NOT NULL, 'status' varchar (150) NOT NULL, 'date_set' datetime NOT NULL, PRIMARY KEY ('status_id')) ENGINE = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 1;
Het is belangrijk dat status-ID de primaire sleutel is en dat het veld automatisch wordt verhoogd.
Voordat een van onze MooTools magie kan worden gebruikt, moeten we het "update" -formulier maken
en plaats ons bericht DIV naast de submit-knop zodat MooTools effectief kan werken
schuif het bericht achter de knop in. Merk op dat we de actie van het formulier hebben ingesteld op
dezelfde pagina. Merk ook op dat we een initiële $ berichtvariabele plaatsen in de
bericht DIV voor gebruikers die javascript niet hebben ingeschakeld.
Wat doe je?
We zijn nog niet klaar met het XHTML-onderdeel. De volgende stap is om de
"wrapper" DIV voor alle voorgaande statussen.
Recente updates
Ten slotte nemen we de MooTools-bibliotheek op in de kop van de pagina.
Dit eerste fragment van PHP wordt in onze "status" DIV geplaatst. We hebben gekozen
om de meest recente 20 statussen weer te geven.
$ query = 'SELECT-status, DATE_FORMAT (datum_set, \'% M% e,% Y @% l:% i:% s% p \ ') AS is van FROM-statussen ORDER BY date_set DESC LIMIT 20'; $ result = mysql_query ($ query, $ link) of die (mysql_error (). ':'. $ query); while ($ row = mysql_fetch_assoc ($ result)) echo ''Stripslashes ($ row [ 'status']),'';
'$ Row [ 'ds'],'
Zoals je weet, is CSS onze presentatielaag dus style je pagina, hoe je het ook zou doen
net zoals. We maken de klassen "failure" en "success" voor het resultaatbericht
-- merk op dat het succesbericht groen en foutbericht rood gekleurd is.
Merk ook op dat de status-boxklasse de avatar van de gebruiker bevat, ingesteld door PHP.
#message opvulling: 7px 10px; float: left; width: 350px; #status border: 1px solid # 999; padding: 5px; width: 500px; hoogte: 75 pixels; marge: 5px 0; #statuses width: 512px; #submit cursor: pointer; padding: 5px; border: 1px solid #ccc; float: left; marge: 0 20px 0 0; .status-box opvulling: 10px 20px 10px 70px; hoogte: 48px; achtergrond: url (/ graphics / users /.png) 10px 10px zonder herhaling; border-bottom: 1px stippellijn #aaa; .status-box: hover background-color: #eee; .success color: # 008000; .failure color: # f00; .time color: # 2a447b; font-size: 10px;
Nu voor het leuke gedeelte - het gebruik van MooTools 1.2 goedheid om ons subtiel te creëren
animaties en Ajax-verzoek.
Zodra de DOM klaar is ...
window.addEvent ('domready', function ()
We maken een horizontale schuifregelaar voor het bericht over succes / mislukking. We verbergen het voor nu ...
var fx = new Fx.Slide ('message', mode: 'horizontal'). hide ();
We maken nu onze (Ajax) aanvraag. We doen dit buiten de click-gebeurtenis
(die in een ogenblik zal volgen) zodat we het geheugen niet verspillen.
Wanneer de gebruiker op de knop Verzenden klikt, willen we deze uitschakelen
het om dubbele inzending te voorkomen. Na voltooiing schakelen we in
de verzendknop en stuur het bericht van de berichtmelding om te verbergen
in 2 seconden.
Als het verzoek mislukt, geeft het bericht dat weer door in de
"Status kan niet worden bijgewerkt. Probeer het opnieuw." bericht. Als het verzoek is
succesvol, er gebeurt nog veel meer.
We beginnen met het invoegen van het bericht "Status bijgewerkt". Vervolgens wissen we de
status tekstgebied. Vervolgens injecteren we het nieuwe elementvak in de statussen
container en schuif het in. Hier is de MooTools-code in zijn geheel.
// maak de ajax-oproep naar de database om de update op te slaan var request = new Request (url: '', methode:' post ', onRequest: function () $ (' submit '). disabled = 1; , onComplete: functie (antwoord) $ ('submit'). disabled = 0; $ ( 'E-mail') removeClass ( 'succes') removeClass ( 'falen')..; (function () fx.slideOut ();). delay (2000); , onSuccess: function () // update message $ ('message'). set ('text', 'Status updated!'). addClass ('succes'); fx.slideIn (); // winkelwaarde, wis box var status = $ ('status'). waarde; $ ('status'). value = "; // nieuwe status toevoegen aan de container states var element = nieuw Element ('div', 'class': 'status-box', 'html': status + '
Een moment geleden'). inject (' statussen ',' bovenaan '); // maak er een schuifregelaar voor, schuif deze erin. var slider = new Fx.Slide (element) .hide (). slideIn (); // plaats de cursor in het tekstgebied $ ('status'). focus (); , onFailure: function () // update message $ ('message'). set ('tekst', 'Status kon niet worden bijgewerkt. Probeer het opnieuw.'). addClass ('failure'); fx.slideIn (); );
Wanneer formulierinzending wordt geactiveerd ...
$ ('submit'). addEvent ('klik', functie (event)
Voorkom dat de pagina wordt vernieuwd vanwege de formulierinzending.
event.preventDefault ();
Als het tekstvak "status" een waarde heeft ...
if ($ ('status'). value.length &&! $ ('status'). uitgeschakeld)
We voeren het verzoek uit en geven de nieuwe status door.
request.send (data: 'status': $ ('status'). value, 'ajax': 1);
Dit is het complete MooTools-script:
/ * wanneer de dom klaar is * / window.addEvent ('domready', function () // maak de berichtschuifregelaar var fx = new Fx.Slide ('message', mode: 'horizontal'). hide ( ); // maak de ajax-oproep naar de database om de update op te slaan var request = new Request (url: '', methode:' post ', onRequest: function () $ (' submit '). disabled = 1; , onComplete: functie (antwoord) $ ('submit'). disabled = 0; $ ( 'E-mail') removeClass ( 'succes') removeClass ( 'falen')..; (function () fx.slideOut ();). delay (2000); , onSuccess: function () // update message $ ('message'). set ('text', 'Status updated!'). addClass ('succes'); fx.slideIn (); // winkelwaarde, wis box var status = $ ('status'). waarde; $ ('status'). value = "; // nieuwe status toevoegen aan de container states var element = nieuw Element ('div', 'class': 'status-box', 'html': status + '
Een moment geleden'). inject (' statussen ',' bovenaan '); // maak er een schuifregelaar voor, schuif deze erin. var slider = new Fx.Slide (element) .hide (). slideIn (); // plaats de cursor in het tekstgebied $ ('status'). focus (); , onFailure: function () // update message $ ('message'). set ('tekst', 'Status kon niet worden bijgewerkt. Probeer het opnieuw.'). addClass ('failure'); fx.slideIn (); ); // wanneer op de knop Verzenden wordt geklikt ... $ ('submit'). addEvent ('klik', functie (gebeurtenis) // stop regelmatige formulierinvoer event.preventDefault (); // als er iets in het tekstvak staat ($ ('status'). value.length &&! $ ('status'). disabled) request.send (data: 'status': $ ('status'). value, 'ajax': 1) ;); );
Dit 'header'-gedeelte van PHP-code staat aan de bovenkant van hetzelfde PHP-bestand voor de rest van ons
code is in. Deze code wordt ook uitgevoerd door zowel Ajax-verzoeken als gebruikers met javascript
uitgeschakeld. Na het indienen van formulieren (en ervan uitgaande dat de gebruiker is aangemeld), voegen we de nieuwe in
status in de database. Als de Ajax-vlag is ingesteld (volgens de bovenstaande MooTools-code), weten we dat
de gebruiker heeft javascript ingeschakeld en we doden het script. Als de gebruiker dat niet deed
gebruik javascript, we stellen simpelweg de beginwaarde van de variabele $ variabele in op "Status bijgewerkt!"
en toon de pagina. Eenvoudig!
// verbinding maken met de db $ link = @ mysql_connect ('localhost', 'gebruikersnaam', 'wachtwoord'); @mysql_select_db ( 'blog', $ link); / * formulier verzenden bericht * / if (isset ($ _ POST ['status']) && $ _SESSION ['user_id']) // registreer de occurrence $ query = 'INSERT INTO nettuts1 (user_id, status, date_set) VALUES ( '. $ _ SESSION [' user_id '].', \ ". Mysql_escape_string (htmlentities (strip_tags ($ _ POST ['status']))). '\', NOW ()) '; $ result = @ mysql_query ($ query , $ link); // sterf als dit via ajax is gebeurd ... if ($ _ POST ['ajax']) die (); else $ message = 'Status bijgewerkt!';
Ja! Hier is het volledige PHP / MooTools / XHTML / CSS-bestand:
Twitter-emulatie Wat doe je?
Hoewel de bovenstaande code een gladde, functionele interface biedt, zeker niet
zou u dit een voltooid systeem vinden? Hier zijn een paar ideeën voor verbeteringen
je kunt implementeren:
!