at skabe et web - app fra bunden ved hjælp af pyton kolbe, og mysql: del 8

, skabe en web - app fra bunden ved hjælp af pyton kolbe, og mysql: del 8,,,,, 70,,,,,,,, 11,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til blot $3..- og' t miss. denne post er en del af en serie, "at skabe en web - app fra bunden ved hjælp af pyton kolbe, og mysql. at skabe et web - app fra bunden ved hjælp af pyton kolbe, og mysql: del 7 i den tidligere del af denne forelæsning serie, vi befolkede instrumentbrættet side af vores ansøgning med ønsker som følge af forskellige brugere.vi har også lagt som knap hver ønsker  , således at en   bruger kunne som et særligt ønske,.,, i denne del af serier, vil vi se, hvordan greb den som i modsætning til visning og viser det samlede antal kan lide modtaget af et særligt ønske,.,, at begynde, lad os starte med kloning, den tidligere del af læren fra   github., så klon https: //////////////////////github. kom jay3dec pythonflaskmysqlapp_part7. smut, når kildekoden er blevet klonet, sejle til projektet fortegnelse og starte web - server.  , cd - pythonflaskmysqlapp_part7 pyton app. py, punkt din browser til   http: //localhost: 5002 / , og du burde have anvendelse.,, at ligesom grev, starter vi med at gennemføre et objekt for at vise   samlede antal tæller et særligt ønske er garnered.når et nyt ønske, bliver tilføjet, får vi en ind, tbl_likes, tabel.så ændrer mysql opbevares procedure  , sp_addwish, at tilføje en indtræden i den, tbl_likes, tabel.  , skilletegn for $skabe definer = "rod" @ er localhost er procedure er sp_addwish (i p_title varchar (45), i p_description varchar (1000), i p_user_id bigint, i p_file_path varchar (200), i p_is_private int i p_is_done int) begynder at indsætte i tbl_wish (wish_title, wish_description, wish_user_id, wish_date, wish_file_path, wish_private, wish_accomplished) - værdier (p_title, p_description, p_user_id, now(), p_file_path, p_is_private, p_is_done) fastsat @ last_id = last_insert_id(); indsætte i tbl_likes (wish_id, user_id, wish_like - værdier) (@ last_id, p_user_id,0); ende skilletegn for $;,, som det fremgår af ovenstående opbevares retsplejelov, efter at de ønsker i, tbl_wish, tabel vi hentede de sidste indsatte, id, og indsættes data til  , tbl_likes, tabel.,, vi er nødt til at ændre  , sp_getallwishes, opbevares procedure at inkludere antallet af kan lide hvert ønske har opnået.vi vil gøre brug af en mysql funktion for at få det samlede antal ønsker.så skabe en funktion, getsum, som vil tage de ønsker, id, og vende tilbage til det samlede antal kan lide.,, skilletegn for $skabe definer = "rod" @ er localhost er funktion er getsum (p_wish_id int) afkast int (11) begynde vælge beløb (wish_like) i @ sm fra tbl_likes, hvor wish_id = p_wish_id; tilbage @ sm; ende skilletegn for $;,, ring til ovennævnte mysql funktion, getsum i de oplagrede procedure  , sp_getallwishes, for at få det samlede antal kan lide for hvert ønske.,, skilletegn for $skabe definer = "rod" @ er localhost er procedure er sp_getallwishes er () begynde vælge wish_id, wish_title, wish_description, wish_file_path, getsum (wish_id) fra tbl_wish, hvor wish_private = 0, ende skilletegn for $;, ændre, getallwishes, pyton metode til også at omfattedet vil regne.mens iterating resultatet er vendt tilbage fra de mysql opbevares procedure, omfatter som område som vist:,, vil resultere i: wish_dict = {"id": ønsker [0] afsnit: ønsker [1], »varebeskrivelse«: ønsker [2], filepath: ønsker [3] "som i": ønsker [4]} wishes_dict. både (wish_dict), ændre  , createthumb, javascript metode til at skabe en ekstra tid, som vi kan bruge til at vise det, som tæller, var likespan = $(< span > '). attr ('aria-hidden,'true'). http: //c & nbsp; + som + som (er) «), og vedlægge de, likespan, til et stykke, p.Here is the modified ,CreateThumb, JavaScript function.,,function CreateThumb(id, title, desc, filepath, like) { var mainDiv = $('<div>').attr('class', 'col-sm-4 col-md-4'); var thumbNail = $('<div>').attr('class', 'thumbnail'); var img = $('<img>').attr({ 'src': filepath, 'data-holder-rendered': true, 'style': 'height: 150px; width: 150px; display: block' }); var caption = $('<div>').attr('class', 'caption'); var title = $('<h3>').text(title); var desc = $('<p>').text(desc); var p = $('<p>'); var btn = $('<button>').attr({ 'id': 'btn_' + id, 'type': 'button', 'class': 'btn btn-danger btn-sm' }); var span = $('<span>').attr({ 'class': 'glyphicon glyphicon-thumbs-up', 'aria-hidden': 'true' }); var likeSpan = $('<span>').attr('aria-hidden', 'true').html('&nbsp;' + like + ' like(s)'); p.append(btn.append(span)); p.append(likeSpan); caption.append(title); caption.append(desc); caption.append(p); thumbNail.append(img); thumbNail.append(caption); mainDiv.append(thumbNail); return mainDiv; },,Include the ,like, parameter while calling the ,CreateThumb, JavaScript function from the success callback of the jQuery AJAX call to ,/getAllWishes,.,,CreateThumb(data[i].Id,data[i].Title,data[i].Description,data[i].FilePath,data[i]. som), medmindre de ændringer og genoptage den server.når undertegnet i ansøgningen bør du kunne se det, som tæller, der svarer til hver af de ønsker.,,,,, viser, hvis et ønske, kan lide, at se kan lide under hver ønsker, er det ikke klart, om de registrerede i bruger har ønsket den ønsker det eller ej.så vi vil vise en ordentlig besked, du & 20 andre.for at gennemføre det, vi er nødt til at ændre vores  , sp_getallwishes, til at omfatte en del af koden   med angivelse af, om det er logget på bruger har haft et særligt ønske, eller ej.for at kontrollere, om et ønske er blevet set, vi laver en funktion.skabe en funktion til  , hasliked, der bruger - id og ønsker, id - kort, som de parametre, og vender tilbage, om de ønsker, har været ønsket af brugeren eller ej.,, skilletegn for $skabe definer = "rod" @ er localhost er funktion er hasliked (p_wish int, p_user int) afkast int (11) begynde vælge wish_like i @ myval fra tbl_likes, hvor wish_id = p_wish og user_id = p_user; tilbage @ myval; ende skilletegn for $;,, nu kalder over mysql funktion, hasliked i  , sp_getallwishes, til at vende tilbage til en ekstra felt i tilbage datasæt med angivelse af brugeren som status.,, skilletegn for $skabe definer = "rod" @ er localhost er procedure er sp_getallwishes (p_user int) begynde vælge wish_id, wish_title, wish_description, wish_file_path, getsum (ønsker_id), hasliked (wish_id, p_user) fra tbl_wish, hvor wish_private = 0, åbne, app.py, og ændre opfordringen til mysql opbevares procedure  , sp_getallwishes, til også at omfatte brugeren, id, som et parameter, _user = møde. kom ('user) conn = mysql connect() markør. =. cursor() markør. callproc ('sp_getallwishes "(_user), nu ændre, getallwishes, en metode til at omfatte samme status brugeren til et særligt ønske.Modify the code to include ,HasLiked, in the created dictionary.,,for wish in result: wish_dict = { 'Id': wish[0], 'Title': wish[1], 'Description': wish[2], 'FilePath': wish[3], 'Like':wish[4], 'HasLiked':wish[5]} wishes_dict.append(wish_dict),,Inside the ,CreateThumb, JavaScript function, we'll check for ,HasLiked, and add the HTML accordingly.,,if (hasLiked == "1") { likeSpan.html('&nbsp;You & ' + (Number(like) - 1) + ' Others'); } else { likeSpan.html('&nbsp;' + like + ' like(s)'); },,As seen in the above code, we are showing the like count if the user has not liked a particular wish. hvis brugeren har ønsket det ønske, vi udviser en mere beskrivende besked.,,,,, forfriskende, som tæller, på det tidspunkt, hvor vi klik på den knap, som status bliver opdateret i databasen, men det ændrer ikke på instrumentbrættet.så lad os opdatere det i succes callback for ajax opfordrer  , knap klik.,, vi starter med en ændring i mysql opbevares procedure  , sp_addupdatelikes,.tidligere fik vi passerer i samme status, 1 for en som og 0 for i modsætning til.vi vil ændre det og greb den   som /i modsætning til de oplagrede procedure.åben  , sp_addupdatelikes og vælge de som status til en variabel og kontrollere de variable status.hvis variablen status er en, vi skal opdatere status, i modsætning til og omvendt.her er det ændrede  , sp_addupdatelikes, opbevares procedure.,, - - -------------------------------------------------------------------------------- - rutine ddl - note: bemærkninger før og efter rutinemæssige organ ikke vil blive opbevaret af serveren... -------------------------------------------------------------------------------- skilletegn for $skabe definer = "rod" @ er localhost er procedure er sp_addupdatelikes (p_wish_id int, p_user_id int, p_like int) først hvis (vælg findes (vælg fra tbl_likes, hvor wish_id = p_wish_id og user_id = p_user_id)) og derefter udvælge wish_like i @ currentval fra tbl_likes, hvor wish_id = p_wish_id og user_id = p_user_id; hvis @ currentval = 0 og ajourføre tbl_likes fastsat wish_som = 1, hvor wish_id = p_wish_id og user_id = p_user_id; anden ajourføring tbl_likes fastsat wish_like = 0, hvor wish_id = p_wish_id og user_id = p_user_id; hvis; andre indsætte i tbl_likes (wish_id, user_id, wish_like) - værdier (p_wish_id, p_user_id, p_like); hvis; ende i, createthumb, javascript funktion, tildele en, id, til, likespan, at vi skabte tidligere, så vi kan opdatere status som krævet.,, var likespan = $(< span > '). attr (('aria-hidden ":'true,'id":'span_ + id}), luk op, app. py.i, addupdatelike, metode, når dataene er blevet ajourført med succes, vi henter det ønske, som tæller, og status ved hjælp af en lagret - procedure.det skaber en mysql opbevares procedure, der kaldes  , sp_getlikestatus,.i  , sp_getlikestatus, vi kalder det allerede skabt mysql funktioner  , getsum, og  , hasliked, for at få denne status.,, skilletegn for $skabe definer = "rod" @ er localhost er procedure er sp_getlikestatus (i p_wish_id int i p_user_id int) begynde vælge getsum (p_wish_id), hasliked (p_wish_id, p_user_id); ende skilletegn for $;,, når   en   opfordring til  , sp_addupdatelikes,   fra den pyton metode, addupdatelike,   har været tæt på markøren og forbindelse.,, hvis len (data) er 0:. commit() markør. close(). close(), nu gøre en ring til opbevaret procedure, sp_getlikestatus,.,, conn = mysql. connect() markør =. cursor() markør. callproc ('sp_getlikestatus "(_wishid, _user) resultat = markør. fetchall(), returnere som count and like status along with the response.,,return json.dumps({'status':'OK','total':result[0][0],'likeStatus':result[0][1]}) ,,In ,dashboard.html,, in the success callback of the AJAX call made to the ,addUpdateLike, method, parse the returned response and based on the like status show the like count.,,success: function(response) { var obj = JSON.parse(response); if (obj.likeStatus == "1") { $('#span_' + spId).html('&nbsp;You & ' + (Number(obj.total) - 1) + ' Others'); } else { $('#span_' + spId).html('&nbsp;' + obj.total + ' like(s)'); } },,Save the changes, restart the server, and sign in using valid credentials. når på instrumentbrættet side, forsøger at have et særligt ønske, og se, hvordan den status bliver ajourføres i overensstemmelse hermed, at pakke det ind, i denne del af den serie, vi har gennemført i modsætning til funktioner, de ønsker, som vises i instrumentbrættet side.i de dele af den serie, vi vil gennemføre nogle nye elementer i ansøgningen og forbedre nogle af de eksisterende forhold.,, lad os høre dine tanker og   forslag eller korrektioner i bemærkningerne nedenfor.kildekode fra denne lektion er tilgængelig på github.,

Dashboard With Like
Dashboard With Like Status



Previous:
Next Page: