პუნქტუალური დამატება შეტყობინების php. PHP AJAX CRUD: ჩანაწერების შექმნა, წაშლა, რედაქტირება MySQL მონაცემთა ბაზაში

ჩემს Zend აპში მე ვწერ API-ს მობილური აპლიკაციებისთვის. მობილური დეველოპერებისთვის გასაადვილებლად, მე ვიყენებ Swagger-ს. ჯერჯერობით ყველაფერი კარგად მუშაობს, გარდა ერთი GET მოთხოვნისა.

როდის დავურეკავ /user/messages/(sessionToken)? NumMessages = (numMessages) & pageNr = (pageNr) ბრაუზერში, მე ვიღებ სასურველ შედეგებს, მაგრამ როდესაც ვცდილობ Swagger-ს ამ მოთხოვნის შესრულების უფლებას ვაძლევ, მხოლოდ sessionToken გადადის. მე ვცადე ეს ანოტაციები Swagger-ისთვის:

/** * @SWG\Api(path="/user/messages/(sessionToken)?numMessages=(numMessages)&pageNr=(pageNr)", * @SWG\Operation(* მეთოდი ="GET", * summary=" იღებს შეტყობინებებს გვერდით", * notes="", * type="string", * მეტსახელი = "getUsermessagesPaged", * ავტორიზაციები=(), * @SWG\Parameter(* name="sessionToken", * აღწერა="ჟეტონი აქტიური მომხმარებლის სესიიდან", * require=true, * type="string", * paramType="path", * allowMultiple=true *), * @SWG\Parameter(* name="numMessages", * description=" შეტყობინებების რაოდენობა გვერდზე (numMessages & pageNr იგნორირებულია, თუ ორივე არ არის დაყენებული)", * require=true, * type="string", * paramType="query", * allowMultiple=true *), * @SWG\Parameter (* name="pageNr", * description="გვერდის ნომერი (numMessages & pageNr იგნორირებულია, თუ ორივე არ არის დაყენებული)", * require=true, * type="string", * paramType="query", * allowMultiple=true *), * @SWG\ResponseMessage(code=200, message="json (messages => "user_messages")"), * @SWG\ResponseMessage(code=400, message="json შეცდომით "არ არის შესული"" ) *) *) */

ვინმე ხედავს ჩემს შეცდომას?

ნებისმიერი დახმარება მისასალმებელია.

პატივისცემით

განახლება. როგორც ვარაუდობდნენ, მე შევცვალე ორივე paramType-ზე "query" და შევცვალე გზა:

@SWG\Api(path="/user/messages/(sessionToken)",

მაგრამ ის არ მუშაობდა მებრძოლად.

xdebug in eclipse PDT აჩვენებს:

RequestURI => /ias/public/user/messages/(sessionToken)

QueryParams => Zend\\Stdlib\\ Parameters - *ArrayObject*storage => Array - =>

swagger JSON:

( "apiVersion": "1.0.0", "swaggerVersion": "1.2", "apis": [ ( "გზა": "\/user", "description": "ოპერაციები მომხმარებლების შესახებ" ) ], "info" : ( "სათაური": "მობილური წვდომის api", "აღწერა": "ეს არის xxx მობილური წვდომის api.", "termsOfServiceUrl": null, "კონტაქტი": "xxx", "ლიცენზია": null, "licenseUrl" : null, "_partialId": null, "_partials": , "_context": ( "კომენტარი": "\/**\ * @SWG\\Info(\ * title="Mobile Access api",\ * description="This is the xxx mobile access api.",\ * contact="xxx",\ *)\ *\/", "line": 3 } } } !}

აქ არის /user გამომავალი:

( "basePath": "http://localhost/ias/public", "swaggerVersion": "1.2", "apiVersion": "1.0.0", "resourcePath": "/user", "apis": [ ( "გზა": "/user/balance/(sessionToken)", "ოპერაციები": [ ( "მეთოდი": "GET", "რეზიუმე": "მიიღებს მომხმარებლის ბალანსს", "მეტსახელი": "getUserdata", "ტიპი": "string", "parameters": [ ( "paramType": "გზა", "name": "sessionToken", "type": "string", "required": true, "allowMultiple": false, "description": "ჟეტონი აქტიური მომხმარებლის სესიიდან" ) ], "responseMessages": [ ( "code": 200, "message": "json (balance => "user_balance")" ), ( "code": 400, "message ": "json შეცდომით "არ არის შესული"" ) ], "შენიშვნები": "", "ავტორიზაციები": () ) ]), ( "გზა": "/user/login", "ოპერაციები": [ ( "metod": "POST", "summary": "მომხმარებლის შესვლა სისტემაში", "მეტსახელი": "loginUser", "type": "string", "პარამეტრები": [ ( "paramType": "form", "name": "email", "type": "string", "required": true, "allowMultiple": false, "description": "მომხმარებლის ელფოსტა შესვლისთვის" ), ( "paramType": "form", "name": "პაროლი", "ტიპი": "string", "required": true, "allowMultiple": false, "description": "პაროლი შესვლისთვის სუფთა ტექსტში" ) ], "responseMessages": [ ( "code": 200, "message": "json with session_id, user_id, user_balance" ), ( "code": 400, "message": "json შეცდომით "მომხმარებელი არ არის მოცემული ელფოსტით და პაროლით"" ), ( " კოდი": 400, "მესიჯი": "json შეცდომით "არასწორი შეყვანა"" ), ("კოდი": 400, "მესიჯი": "json შეცდომით "პოსტის მოთხოვნა არ არის"" ) ], "შენიშვნები": "" , "ავტორიზაციები": () ) ] ), ( "გზა": "/user/logout", "ოპერაციები": [ ( "მეთოდი": "POST", "რეზიუმე": "მომხმარებლის გამოსვლა", "მეტსახელი" : "logoutUser", "type": "string", "parameters": [ ( "paramType": "form", "name": "sessionToken", "type": "string", "required": true, " allowMultiple": false, "description": "token აქტიური მომხმარებლის სესიიდან" ) ], "responseMessages": [ ("code": 200, "message": "json (result => "deleted")" ), ( "code": 400, "message": "json შეცდომით "no user_session მოცემული sid"" ), ( "code": 400, "message": "json შეცდომით "არასწორი შეყვანა" ), ( "code ": 400, "წერილი": "json შეცდომით "პოსტის მოთხოვნის გარეშე"" ) ], "შენიშვნები": "", "ავტორიზაციები": () ) ]), ( "გზა": "/user/messages/( sessionToken)", "ოპერაციები": [ ( "მეთოდი": "GET", "რეზიუმე": "იღებს ახალ შეტყობინებებს", "მეტსახელი": "getUsermessages", "ტიპი": "სტრიქონი", "პარამეტრები": [ ( "paramType": "გზა", "სახელი": "sessionToken", "type": "string", "required": true, "allowMultiple": false, "description": "token აქტიური მომხმარებლის სესიიდან" ) ], "responseMessages": [ ( "code": 200, "message": "json (messages => "user_messages")" ), ( "code": 400, "message": "json შეცდომით "არ არის შესული "" ) ], "შენიშვნები": "", "ავტორიზაციები": () ), ( "მეთოდი": "GET", "რეზიუმე": "იღებს შეტყობინებებს გვერდზე", "მეტსახელი": "getUsermessagesPaged", "type" : "string", "parameters": [ ( "paramType": "path", "name": "sessionToken", "type": "string", "required": true, "description": "token from an აქტიური მომხმარებლის სესია" ), ( "paramType": "query", "name": "numMessages", "type": "string", "required": true, "description": "შეტყობინებების რაოდენობა გვერდზე (numMessages & pageNr იგნორირებულია, თუ ორივე არ არის დაყენებული)" ), ( "paramType": "query", "name": "pageNr", "type": "string", "required": true, "description": "page number ( numMessages & pageNr იგნორირებულია, თუ ორივე არ არის დაყენებული)" ) ], "responseMessages": [ ( "code": 200, "message": "json (messages => "user_messages")" ), ( "code": 400 , "გზავნილი": "json შეცდომით "არ არის შესული"" ) ], "შენიშვნები": "", "ავტორიზაციები": () ) ]), ( "გზა": "/user/userdata", "ოპერაციები" : [ ( "მეთოდი": "POST", "რეზიუმე": "პოსტების მომხმარებლის მონაცემები", "მეტსახელი": "postUserdata", "ტიპი": "სტრიქონი", "პარამეტრები": [ ( "paramType": "ფორმა", "name": "sessionToken", "type": "string", "required": true, "allowMultiple": false, "description": "token აქტიური მომხმარებლის სესიიდან" ), ( "paramType": "form ", "name": "პაროლი", "ტიპი": "string", "required": false, "allowMultiple": false, "description": "ახალი პაროლი" ), ( "paramType": "form", " სახელი": "მისამართი", "ტიპი": "სტრიქონი", "საჭირო": false, "allowMultiple": false, "description": "ახალი მისამართი" ), ( "paramType": "ფორმა", "სახელი": "housenr", "type": "string", "required": false, "allowMultiple": false, "description": "new housenr"), ("paramType": "form", "name": "zip" , "type": "string", "required": false, "allowMultiple": false, "description": "new zip" ), ( "paramType": "form", "name": "city", "type ": "string", "required": false, "allowMultiple": false, "description": "new city" ), ( "paramType": "form", "name": "email", "type": " string", "required": false, "allowMultiple": false, "description": "new email" ) ], "responseMessages": [ ("code": 200, "message": "json (user => "userdata ")" ), ("კოდი": 400, "მესიჯი": "json შეცდომით

როგორც ჩანს, შეცდომაა, რომ ჩემი swagger-ui არ აგზავნის მოთხოვნის პარამეტრებს? აქ არის მაგალითი ერთი შეკითხვის პარამით, sessionToken: (მართავს FireBug 2.0.6)

მიიღეთ /ias/public/user/balance HTTP/1.1 ჰოსტი: localhost მომხმარებლის აგენტი: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0 Accept: application/json Accept-Language: de en-US;q=0.7,en;q=0.3 Accept-Encoding: gzip, deflate Content-Type: application/json Referer: http://localhost/ias/swagger/ ქუქი: __utma=111872281.581414660.1376.1376. .255; uvts=sB5Dda3cZBNdaTk; searchpanel-close=დააყენეთ კავშირი: შენარჩუნება-ცოცხალი

პასუხი იყო:

HTTP/1.1 400 ცუდი მოთხოვნის თარიღი: სამშაბათი, 25 ნოემბერი 2014 14:58:20 GMT სერვერი: Apache/2.4.9 (Win32) PHP/5.5.12 X-Powered-By: PHP/5.5.12 Content-Length: კავშირი: დახურვა Content-Type: application/json; charset=utf-8

პასუხი სწორი იყო, რადგან არცერთი sessionToken არ გავიდა.

ეს მოითხოვს მუშაობას, მაგრამ ეს არ მოდის swagger-ui-დან:

GET /ias/public/user/balance?sessionToken=HTTP/1.1 მასპინძელი: localhost მომხმარებლის აგენტი: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0 მიღება: ტექსტი/html, აპლიკაცია xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: de,en-US;q=0.7,en;q=0.3 Accept-Encoding: gzip, deflate Cookie: __utma=111872281.581414660 .1366700677.1394721873.1394723866.255; uvts=sB5Dda3cZBNdaTk; searchpanel-close=დააყენეთ კავშირი: შენარჩუნება-ცოცხალი

მიმოხილვა

ჩაშენებული შეტყობინებების სისტემა, პირველად Joomla-ში, საშუალებას აძლევს თქვენს აპს, შეინახოს მომხმარებელი (ან მომხმარებელთა ჯგუფი) ინფორმირებული სხვადასხვა მოვლენის შესახებ. იფიქრეთ შეტყობინებებზე, როგორც მნიშვნელოვან გაფრთხილებებზე, რომლითაც მომხმარებელი დაინტერესდება მისი წაკითხვით და თვალყურის დევნით.
შეტყობინებების გენერირება შესაძლებელია ყველგან. თქვენს კომპონენტში ან დანამატებში და მოგვიანებით ნაჩვენებია JomSocial შეტყობინებების სისტემაში.
ეს გაკვეთილი გაჩვენებთ, თუ როგორ, მაგრამ რადგან ჩვენ არ გვაქვს წარმოდგენა მესამე მხარის კომპონენტზე, შეგვიძლია გამოვიყენოთ:) მაგალითები გაკეთდება საზოგადოების დანამატზე, რომელიც ამოქმედდება onAfterProfile Updateღონისძიება
თუ არ იცით როგორ შექმნათ დანამატი, რომელიც ამოქმედდება ამ ღონისძიებაზე, გირჩევთ შეამოწმოთ ამ სახელმძღვანელოს

მისი დანერგვა თქვენს კომპონენტში მაინც

როგორც ამ გაკვეთილის მიმოხილვაშია ნათქვამი, ჩვენ შევქმნით შეტყობინებებს საზოგადოების მოდულის გამოყენებით.
თქვენ, სავარაუდოდ, გსურთ შექმნათ შეტყობინებები თქვენს კომპონენტში ან თქვენს დანამატში. შემდეგი გაკვეთილი იმუშავებს ნებისმიერ შემთხვევაში. თქვენ მხოლოდ უნდა განსაზღვროთ თქვენი კოდის რომელ მომენტში შეიქმნება შეტყობინება და უბრალოდ ჩატვირთოთ JomSocial Core Libraries ფაილი.

მოითხოვს_ერთჯერ JPATH_ROOT. "/components/com_community/libraries/core.php" ;

ქვემოთ ახსნილი ინსტრუქციის შემდეგ კარგად იმუშავებს თქვენი გაფართოებისთვისაც

განვითარების გარემოს მომზადება

1. ჩვენ ვივარაუდებთ, რომ თქვენ უკვე შექმენით საზოგადოების ტიპის მაგალითის დანამატი, რომელიც გააქტიურდება, როდესაც მომხმარებელი შეცვლის მის პროფილს
თუ არა, შეგიძლიათ ჩამოტვირთოთ ცარიელი მაგალითი მოდულიდან, დააინსტალიროთ ჯომლაში და ჩართოთ დანამატი. დასახელებულია საზოგადოება - შეტყობინებების მაგალითი
2. გადადით თქვენს მონაცემთა ბაზაში და დააცალეთ ეს ორი ცხრილი, რათა მათ საერთოდ არ ჰქონდეთ ჩანაწერები

ა) პრეფიქსი_საზოგადოების_შეტყობინება
ბ) პრეფიქსი_საზოგადოება_ფოსტა

3. გყავდეთ მინიმუმ ორი (2) მომხმარებელი თქვენს სატესტო საიტებზე და იცოდეთ მათი პირადობის მოწმობები

Joomla-ს ადრინდელ ვერსიებში მომხმარებლის ID-ები ყოველთვის იწყებოდა მითითებული ნომრიდან (62, 42) Joomla 3-ში ეს რიცხვი იქნება შემთხვევითი, შესაბამისად, ჩვენი ტესტირების გარემოს სურათი, რადგან ის აუცილებლად განსხვავებული იქნება თქვენს ბოლოს.

პირველი შეტყობინება

გახსენით მოდულის php ფაილი, რომელიც განთავსდება ROOT/plugins/community/მაგალითად
ფუნქციის ფარგლებში onAfterProfileUpdate()შეცვალოს

CNotificationLibrary::add ( $cmd , $actor , $target , $subject , $body , $template , $params ) ;

როგორც მაგალითზეა ნაჩვენები, შეტყობინების დამატება api-ს აქვს 7 პარამეტრი

  • $cmd - არის შეტყობინების ტიპი. თქვენ შეგიძლიათ ნახოთ ყველა ტიპის შეტყობინებები ამ ფაილში. ROOT/components/com_community/libraries/notificationtypes.php დაწყებული 53-ე სტრიქონიდან ან მის გარშემო. ჩვენ გირჩევთ გამოიყენოთ system_messaging შეტყობინების ტიპი.
  • $actor - არის ადამიანი, რომელიც ახორციელებს მოქმედებას
  • $target - არის ადამიანი ან ადამიანთა ჯგუფი, რომელიც მიიღებს შეტყობინებას
  • $subject - არის შეტყობინების თემა, როგორც შეტყობინების ამომხტარ ფანჯარაში, ასევე ელფოსტის სათაური
  • $body - არის ელ.ფოსტის შეტყობინების შეტყობინება
  • $template - თუ გჭირდებათ კონკრეტული შაბლონი გამოსაყენებლად, შეგიძლიათ განსაზღვროთ აქ. წინააღმდეგ შემთხვევაში, ეს პარამეტრი შეიძლება ცარიელი იყოს
  • $params - ინდივიდუალური განსაზღვრული პარამეტრები
  • ამ ყველაფრის ცოდნამ, მოდით განვსაზღვროთ ცვლადები, რომლებსაც გამოვიყენებთ
    შეცვალეთ თქვენი მოდულის კოდი:

    $user = CFactory::getUser(); $cmd = "system_messaging" ; // პირველი პარამეტრი, აქტივობის ტიპი $actor = $user -> id ; //second param - მიიღეთ $actor $target = "965" ; // მესამე პარამი. ვინ იღებს შეტყობინებას? ჩვენს დეველოპერულ გარემოში, მისი ადმინისტრატორის მომხმარებელი ID 965-ით. თქვენს გარემოში, დიდი ალბათობით, გსურთ მიიღოთ ID თქვენი ობიექტიდან ან მომხმარებელთა მასივიდან. $subject = "შეტყობინებების საგანი" ; // ორივეს თემა, ელფოსტისა და ამომხტარი შეტყობინებების $body = ; //სიტყვა ტექსტის წერილში. $template = "" ; // თუ თქვენ გჭირდებათ კონკრეტული jomsocial შაბლონის ფაილის გამოყენება, შეგიძლიათ მისი განსაზღვრა აქ. $params = ახალი CPparameter("" ); // ჩვენ გვინდა შევქმნათ დამატებითი პარამების ობიექტი და მივცეთ მას მონაცემები, CNotificationLibrary კლასის ოფიციალურად განსაზღვრის გარეშე: add ($cmd , $actor , $target , $subject , $body , $template , $params ) ;

    ახლა შედით ნებისმიერ მომხმარებელთან და შეცვალეთ პროფილის ინფორმაცია. მოდით გადავიდეთ მონაცემთა ბაზაში და ვნახოთ რა მოხდა.
    გადადით prefix_community_notifications ცხრილში და დააკვირდით ახალ ჩანაწერს

    გადადით prefix_community_mailq ცხრილში და ნახეთ ახალი ჩანაწერი

    გილოცავ! - თქვენ წარმატებით შექმენით თქვენი პირველი საკუთარი შეტყობინება, რომელიც გაიგზავნა ელექტრონული ფოსტით და შიდა JomSocial შეტყობინებების სისტემის საშუალებით


    პოტენციური კოდი Bloat

    ზემოთ მოყვანილი მაგალითი კარგია და მუშაობს, მაგრამ ზოგადად არ არის რეკომენდებული მისი ასე გამოყენება. სამაგიეროდ შეიძლება ასე დაიწეროს

    $actor = CFactory::getUser(); $params = ახალი CPparameter("" ); CNotificationLibrary:: add ( "system_messaging" , $actor -> "ეს არის შეტყობინების ტექსტი" , "" , $params ) ;

    ეს ბევრად უფრო სუფთა და ადვილი შესასრულებელია, ხოლო ძირითადად აკეთებს აბსოლუტურად იგივეს, რაც ზემოთ ნაჩვენები კოდი.

    მორგებული შეტყობინების პარამეტრები

    შეტყობინებების API შეიძლება გაფართოვდეს ნებისმიერი პარამეტრით, რომლის დამატებაც გსურთ.
    ეს პარამეტრები შეიძლება გადაეცეს ელ.ფოსტის შაბლონს, შეტყობინებას და, რა თქმა უნდა, ენის ფაილს.

    $actor = CFactory::getUser(); $link = "http://www.google.com" ; $params = ახალი CPparameter("" ); $params -> set ("actor", $actor -> getDisplayName () ); // შეიძლება გამოყენებულ იქნას როგორც (actor) ტეგი $params -> set ("actor_url" , "index.php?option=com_community&view=profile&userid=" . $actor -> id ) ; // ბმული (actor) ტეგის $params -> set ("url" , $link ) ; //მთელი აქტივობის url. გამოიყენება შეტყობინებების ფანჯარაში ავატარზე გადასვლისას. შეიძლება გამოყენებულ იქნას როგორც (url) ტეგი გამავალ წერილებშიც. დარწმუნდით, რომ განსაზღვრეთ $link ცვლადი:) CNotificationLibrary:: add ( "system_messaging" , $actor -> id , "965" , "შეტყობინებების საგანი" , "ეს არის შეტყობინების ტექსტი" , "" , $params ) ;

    • $params = ახალი CPპარამეტრი( ); - ჩვენ გვინდა შევქმნათ ახალი params ობიექტი და მივცეთ მას მონაცემები, კლასის ოფიციალურად განსაზღვრის გარეშე.
    • $params->set("actor", $actor->getDisplayName()); - შენს შეტყობინებას ყოველთვის მსახიობი უნდა ჰქონდეს. ეს პარამეტრი შეიძლება გადაეცეს შაბლონს, როგორც (actor) თეგი. შეტყობინებების ფანჯარაში ის განსაზღვრავს მომხმარებელს, რომელიც ახორციელებს მოქმედებას.
    • $params->set("actor_url", "index.php?option=com_community&view=profile&userid=" . $actor->id); - მსახიობის URL, როგორც წესი, არის მსახიობის url. შეტყობინების ამომხტარ ფანჯარაში, ის ამატებს ბმულს (მსახიობი) ელემენტს
    • $params->set("url", $link); - ეს არის ყველაზე მნიშვნელოვანი პარამეტრი, რომელიც ყოველთვის სწორად უნდა დააყენოთ. შეტყობინებების ფანჯარაში ეს პარამეტრი გამოიყენება ავატარის სურათზე. ელ.ფოსტის შეტყობინებაში ის ეხმიანება იმ ადგილს, სადაც მოხდა აქტივობა.

    ამ მაგალითისთვის ჩვენ დავაყენებთ ცვლადს $link to lands-ზე www.google.comასე რომ თქვენ შეგიძლიათ ნახოთ როგორ მუშაობს

    ენის სტრიქონის დამატება და პარამეტრების გამოყენება

    ჩვენ მიერ ახლახან დაყენებული პარამეტრების არსებობა ხელმისაწვდომია ჩვენს ენობრივ ფაილებში გამოსაყენებლად.
    მოდით განვსაზღვროთ ენის გასაღებები ""-ის შეცვლით CNotificationLibrary::add() API

    CNotificationLibrary::add("system_messaging" , $actor -> id , "965" , JText::sprintf("PLG_COMMUNITY_EXAMPLE_SUBJECT") , JText::sprintf("PLG_COMMUNITY_EXAMPLE_BODY", "$)"

    ენის ფაილი ასე უნდა გამოიყურებოდეს

    PLG_COMMUNITY_EXAMPLE_SUBJECT = "(მსახიობი) განახლებული პროფილი" PLG_COMMUNITY_EXAMPLE_BODY = "გამარჯობა ადმინისტრატორო \n ეს არის წერილი, რათა გაცნობოთ, რომ (მსახიობი) განახლებულია პროფილი \n\n თუ გსურთ Google-ში გადასვლა, დააწკაპუნეთ აქ \n a href=" _QQ_" (url)"_QQ_">(url)"

    ამ მაგალითში, ჩვენ გამოვიყენეთ ტეგი (actor) და (url) მონაცემების გადასაცემად ორივე, შეტყობინებისა და ელ.ფოსტის შაბლონებზე. ვნახოთ, როგორ გამოიყურება.
    შეტყობინებების ფანჯარაში ავატარზე გადასვლისას შეამჩნიეთ (url) პარამეტრი ჩართული და ამატებს Google-ის ბმულს ავატარზე. ეს არის მიზანმიმართული, რადგან ჩვენ ასე გავაკეთეთ :)


    ]

    იმავე ფანჯარაში, მსახიობის ბმულზე გადასვლისას. ეს არის ის ნაწილი, სადაც (actor) ეხმიანება მომხმარებელს, რომელიც ახორციელებს მოქმედებას, ხოლო (actor_url)" ზრუნავს, რომ ობიექტი სწორად არის დაკავშირებული


    ვნახოთ რა ხდება ელ.ფოსტის რიგში


    და ბოლოს, ფაქტობრივი ელ.წერილი, რომელიც ეგზავნება საბოლოო მომხმარებელს


    წარმატებები
    ამ დრომდე, ჩვენ შევქმენით სამი (3) პარამეტრი, რომლებიც წარმატებით გამოიყენება შეტყობინებების ფანჯარაში და ელფოსტაში.

  • (მსახიობი) - აბრუნებს მომხმარებლის სახელს, რომელიც ახორციელებს მოქმედებას
  • (actor_url) - აძლევს ატრიბუტი (მსახიობი)
  • (url) - არ არის სავალდებულო, მაგრამ ყოველთვის უნდა გქონდეთ შეტყობინებაში. ეს არის მთავარი url, სადაც მოხდა ქმედება, რომლის შესახებაც შეგვატყობინებენ.
  • ანალოგიურად, შეგიძლიათ განსაზღვროთ "

    • (სამიზნე) - თუ ეს გჭირდებათ
    • (target_url) თუ ეს გჭირდებათ თქვენს შეტყობინებაში.
    • (სათაური) - ჩვეულებრივ გამოიყენება ობიექტთან მიმართებაში, რომელმაც შექმნა შეტყობინება. მაგალითი: "მომხმარებელმა X-მა გამოაქვეყნა ახალი ფოტო ალბომში Y." ალბომის Y არის სათაური აქ
    • (title_url) - ისევე როგორც წინა, ობიექტის url, რომელმაც შექმნა შეტყობინება.
    • (შეტყობინება) - ეს პარამეტრი შეიძლება გამოყენებულ იქნას JomSocial ელ.ფოსტის ტექსტში შეტყობინების დასაყენებლად (და ექოზე).
    3.3K

    მომხმარებლისთვის შეტყობინებების ჩვენება საკმაოდ გავრცელებული მოქმედებაა, რომელიც ვებ აპლიკაციამ უნდა შეასრულოს. ეს შეიძლება მოხდეს ფორმის დამუშავების დროს, ეს შეიძლება იყოს შეცდომის შეტყობინებები, შეტყობინებები, რომლებიც გეუბნებიან, რომ დარეგისტრირდეთ, როდესაც მომხმარებელი ცდილობს საიტის შეზღუდულ ნაწილზე წვდომას და სხვა მრავალ შემთხვევაში.

    ძალიან ხშირად, შეტყობინებების შექმნა და გამომავალი იყოფა სხვადასხვა HTTP მოთხოვნად. როგორც წესი, მოსახერხებელია გადამისამართების გამოყენება ფორმების დამუშავების შემდეგ (უკან და განახლების ღილაკებთან პრობლემების თავიდან ასაცილებლად), მაგრამ ამავე დროს, შეტყობინების შექმნის ბუნებრივი მომენტი არის ზუსტად ფორმების დამუშავების მომენტი და თანმხლები მოქმედებების შესრულება. ის. რატომ? წარმოიდგინეთ, რომ შეტყობინების ტექსტი ასე უნდა გამოიყურებოდეს: „მაუსის პადისთვის შეკვეთილი ერთეულების რაოდენობა წარმატებით შეიცვალა 7-დან 12-მდე“. გადამისამართების შემდეგ, შესაძლოა, სრულიად განსხვავებულ გვერდზე ფუნქციონალური თვალსაზრისით, ზედმეტი თავის ტკივილი იქნება იმის დადგენა, თუ რა გაკეთდა ადრე.

    ყველაზე ხშირად, შეტყობინებები ნაჩვენებია POST მოთხოვნაში, რომელიც ამუშავებს ფორმას - ეს არ არის კარგი, სიტყვები „ეს გვერდი მოძველებულია“ ანგრევს სიცოცხლეს (როდესაც მომხმარებელი გადაწყვეტს სცადო უკან დაბრუნება).

    ვიღაც იყენებს გადამისამართებას, უარს ამბობს მეგობრულ შეტყობინებებზე.

    ამავდროულად, არსებობს მარტივი და აშკარა გზა ცხოვრების გასაუმჯობესებლად. მიუხედავად აშკარაობისა, რატომღაც არასდროს მინახავს ვინმეს მისი გამოყენება – ყოველ შემთხვევაში, როცა სხვის წყაროებს ვუყურებდი.

    ასე რომ, ჩვენ გვაქვს პრობლემა - შეტყობინება უნდა "იცხოვროს" სხვადასხვა მოთხოვნაში. ჩვენ გვჭირდება მექანიზმი, რომ გადავიტანოთ შეტყობინების ტექსტი იმ გვერდზე, რომელიც უნდა იყოს ნაჩვენები. ალბათ უკვე გახსოვთ სესიების შესახებ.

    კი, ზოგადად მართალი ხარ. სხვა მეთოდები, მაგალითად, გლობალური ცვლადის საშუალებით, არ იძლევა მონაცემთა შენახვას იმ შემთხვევაში, როდესაც გამოიყენება გადამისამართება (შენიშვნა მაქსიმ ნაუმენკოს მიერ). გარდა ამისა, მე ჩვეულებრივ ვრწმუნდები, რომ აპლიკაციის თითოეულ ეკრანს აქვს შესაძლებლობა, სხვა ინფორმაციასთან ერთად, აჩვენოს შეტყობინებები, რომლებიც შეიქმნა წინა ეკრანებზე. ეს მოსახერხებელია, რადგან არ არის საჭირო ცალკეული ეკრანების მომზადება შეტყობინებების ჩვენებისთვის და მომხმარებელს არ მოუწევს მაუსის ხელახლა დაჭერა. მაგრამ, ნამდვილად, დიზაინერმა უნდა იფიქროს აქ - ხაზი გაუსვას სფეროს, რომელშიც გამოჩნდება შეტყობინებები.

    იდეა ძალიან მარტივია და შეიძლება განხორციელდეს რამდენიმე გაკვეთილით.

    პირველი, რაც მახსენდება არის Message კლასის შექმნა, რომელიც, ფაქტობრივად, წარმოადგენს შეტყობინებას ჩვენს მარტივ კლასის დიაგრამაში. შეტყობინებას უნდა შეეძლოს თავის შენახვა სესიაზე, ასევე ეკრანზე ჩვენება.

    class Message ( /** * შეტყობინების შინაარსი. */ var $content; /** * კონსტრუქტორი შეტყობინების ტექსტის ინიციალიზაციისთვის. * * @param content შეტყობინების შინაარსი */ ფუნქცია Message($content) ($this->content = $ შინაარსი ) /** * დაწერეთ შეტყობინება სესიაზე */ ფუნქცია send() ($_SESSION["session_messages"] = $this->content; ) /** * გაგზავნეთ შეტყობინება გვერდზე */ ფუნქცია გვერდზე. () (echo. " - " . $this->content .
    "; } }

    $_SESSION ცვლადი გამოიყენება სესიაზე წვდომისთვის.

    გაითვალისწინეთ, რომ $_SESSION არის მასივი, ჩვენ ვიყენებთ ამ მასივის მხოლოდ ერთ ელემენტს ინდექსით 'session_message'.

    ამ შემთხვევაში საქმე გვაქვს „მასივების მასივთან“ - რასაც ვინახავთ „session_message“ ელემენტში არის მასივი, ეს არის გადაცემული შეტყობინებების სია (რა თქმა უნდა, შეიძლება იყოს რამდენიმე მათგანი).

    თუ თემა ვერ იპოვეთ, დროა გადახედოთ სახელმძღვანელოს სექციებს და მასივებს.

    შეიძლება გქონდეთ შეკითხვა. რატომ არის საჭირო გაკვეთილები აქ? შესაძლებელი იქნებოდა ორი ფუნქციით გატარება. მაგრამ მოდით უფრო შორს გადავხედოთ. შეიძლება დაგვჭირდეს სხვადასხვა ტიპის შეტყობინებების შექმნა (ინფორმაცია, შეცდომა, გაფრთხილება) და განვსაზღვროთ შეტყობინების მიმღებები.

    გთხოვთ გაითვალისწინოთ, რომ ამ მომენტში სესიაში არ არის ჩადებული თავად ობიექტი, არამედ მხოლოდ შეტყობინების ტექსტი. OOP საშუალებას გვაძლევს მოგვიანებით შევცვალოთ send() მეთოდის ქცევა კლიენტის კოდის შეცვლის გარეშე, რომელიც წვდება ამ მეთოდს (მაგალითად, მომავალში ჩვენ შეგვიძლია დავწეროთ მთელი Message ობიექტი სესიაზე, თუ მას ბევრი ველი აქვს).

    წარმოვიდგინოთ, რომ ამას გავაკეთებთ ფუნქციების გამოყენებით. ჩვენ ალბათ გვექნებოდა ფუნქცია message_send($txt), ასევე გვექნებოდა ფუნქცია message_to_page($txt). ახლა ჩვენ უნდა დავამატოთ განსხვავებული ქცევის უნარი სხვადასხვა ტიპის შეტყობინებებისთვის. ფუნქციის ზარები იცვლება: message_send ($txt, $kind), message_to_page ($txt, $kind). თქვენ მოგიწევთ აპლიკაციის მთელი კოდის გადალახვა ასეთი ფუნქციების მოსაძებნად, შესწორებების შეტანით.

    ამის თავიდან აცილება შესაძლებელია სიტუაციის წინასწარ გათვალისწინებით, შეტყობინების ასოციაციური მასივის სახით წარდგენით: $msg['txt'], $msg['kind'], მაშინ ფუნქციის გამოძახებებში იქნება მხოლოდ ერთი პარამეტრი. გრძნობთ, როგორ ცდილობს ეს კლასი გახდეს?

    ასე რომ, OOP გაძლევთ შესაძლებლობას გქონდეთ ფუფუნება, წინასწარ არ იფიქროთ ყველაფერი.

    შემდეგი კლასი - Inbox - სწორედ ამისთვის არის შექმნილი.

    class Inbox ( /** * მიღებული შეტყობინებების მასივი. */ var $messages = array(); /** * კონსტრუქტორში ვიღებთ ყველა მიღებულ შეტყობინებას * და ვშლით მათ სესიიდან. */ ფუნქცია Inbox() ( if (is_array($ _SESSION["session_messages"])) ($messages = $_SESSION["session_messages"]; $co = sizeof($messages); for ($i = 0; $i< $co; $i++) { $this->შეტყობინებები = ახალი შეტყობინება ($messages[$i]); ) ) /* შეტყობინებების მასივის გასუფთავება */ $_SESSION["session_messages"] = array(); ) /** * გვერდზე Inbox-ის შიგთავსის ჩვენება. */ ფუნქცია toPage() ( $co = sizeof($this->messages); if ($co > 0) (echo "შეტყობინება სისტემიდან:
    ";) ($i = 0; $i< $co; $i++) { $this->შეტყობინებები[$i]->ToPage(); ))))

    მოდით ვცადოთ ჩვენი შეტყობინებების სისტემა.

    მოდით შევქმნათ ძალიან მარტივი მაგალითი, რომელიც უპასუხებს ფორმის წარდგენას მიმდინარე წუთში წამების რაოდენობის მოხსენებით.

    ჩვენ დავმალეთ მთელი სამუშაო მასივებითა და სესიებით კლასების შიგნით და საბოლოო კოდი გამოიყურება მარტივი და ლამაზი.

    შექმენით დირექტორია თქვენს ვებ სერვერზე, შემდეგ შექმენით ეს სამი ფაილი მასში და სცადეთ სკრიპტი. გთხოვთ გაითვალისწინოთ, რომ უკან და განახლების ღილაკებთან არანაირი პრობლემა არ არის.

    ახლა წარმოიდგინეთ, რომ თქვენ ქმნით რთულ პორტალს, სადაც, როგორც წესი, გვერდებზე რამდენიმე ბლოკია და თითოეული შეიძლება შეიცავდეს ცალკეულ აპლიკაციას.

    აქ ჩვენ ვაწყდებით ორ სირთულეს:

    * მე მინდა, რომ შეტყობინებების სია გამოჩნდეს გვერდის კონკრეტულ ნაწილში და თქვენ უკვე იპოვეთ ამისთვის კარგი ადგილი.
    პრობლემა ის არის, რომ თქვენ უნდა გაუშვათ $inbox->toPage() ბრძანება ზუსტად იმ მომენტში, რომელიც შეესაბამებოდა შეტყობინებების სიის პოზიციას გვერდზე. თუ ჩვენ გვინდა ამ სიის პოზიციის შეცვლა, მოგვიწევს კოდში შესვლა, მაგრამ ამისთვის პორტალის ჩარჩოს მუდმივად შეცვლა არ არის კარგი. საუკეთესო გამოსავალი იქნება შეტყობინებების გამომავალი ცალკე მოდულის სახით, რომელიც მხოლოდ ის ვიცით, რომ ფრეიმიკზე უნდა იყოს დაკავშირებული.
    ანუ გათავისუფლდით მოდულების გაშვების მკაცრი თანმიმდევრობისგან. მართლაც, ვინაიდან Inbox-ის გამომავალი შედეგი არ არის დამოკიდებული სისტემის მუშაობაზე (ამ ეტაპზე ჩვენ უკვე გვაქვს ყველა მონაცემი სესიაზე), მაშინ რატომ არის ზედმეტი სირთულე?
    * შეტყობინებების სიის გარეგნობის (დიზაინის) შესანარჩუნებლად, თქვენ უნდა იზრუნოთ HTML კოდზე, რომელიც მყარი კოდირებულია Message და Inbox კლასების toPage() მეთოდებში. როგორც წესი, თქვენ უნდა შეცვალოთ PHP კოდი დიზაინის შესაცვლელად.

    პირველი პრობლემის გადასაჭრელად, შეგიძლიათ შექმნათ ბუფერი, რომელიც ინახავს Inbox-ის გამომავალი შედეგს.

    შესაძლოა, ჩვენ კვლავ გვექნება რამდენიმე მსგავსი (Inbox-ის) რამ და ჩვენ უნდა შევქმნათ ბუფერული სისტემა. იმისათვის, რომ არ აგვერიოს ვისი გამომავალი არის, ჩვენ ალბათ მივალთ ბუფერების დასახელებაზე. ჩვენ სადმე შევინახავთ თანმიმდევრობას, რომლის მიხედვითაც ბუფერები უნდა გამოვიდეს - სასურველია გარე ფაილში ცვლილებების გასაადვილებლად.

    გადაწყვეტის ეს მცდელობა უკვე გვაძლევს იდეას გამოვიყენოთ XML, როგორც შუალედური მონაცემების შესანახი საშუალება. და XSLT სტილის გამოყენება დაგეხმარებათ მეორე პრობლემის გადაჭრაში.

    მე არ შევჩერდები რა არის XML და რა არის XSLT. თუ არ იცნობთ ამ საკითხებს, zvon.org კარგი ადგილია ძიების დასაწყებად.

    იდეა არის არა HTML კოდის, არამედ XML სტრუქტურის გენერირება toPage() მეთოდებში. გვერდის დოკუმენტი შეიქმნება სტრიქონის სახით XML კოდით (ის იქნება „ბუფერი“), ხოლო სკრიპტის ბოლო ეტაპზე გამოვიყენებთ XSL ტრანსფორმაციას.

    ჯერ წარმოვიდგინოთ, რა შედეგი უნდა მოჰყვეს კოდის ძირითად ნაწილს.

    წუთი 57 წამი: 45

    რა არის ეს საკმაოდ ადვილი გამოსაცნობია - ორი შეტყობინება და ფორმა. გთხოვთ გაითვალისწინოთ, რომ PHP სკრიპტს მხოლოდ ასეთი სტრიქონის მომზადება სჭირდება - ეს ძალიან მარტივია. უფრო მეტიც, მთავარი ტეგების თანმიმდევრობა არ არის მნიშვნელოვანი - თქვენ შეგიძლიათ განათავსოთ ისინი პირველ რიგში, მაგალითად, როგორც მოსახერხებელი იქნება პროგრამისტისთვის. როგორ განვახორციელოთ იგი. თქვენ შეგიძლიათ, არაფრის შეცვლის გარეშე, გამოიყენოთ გამომავალი ბუფერირება, გამოიყვანოთ XML HTML კოდის ნაცვლად და ბოლოს უბრალოდ გადაიღოთ გამომავალი სტრიქონში. მაგრამ შემდეგ ჩვენ დავკარგავთ მოქნილობას - მაგალითად, ზოგჯერ გსურთ გამართვის ინფორმაციის გამოტანა პირდაპირ გვერდზე (ექოს გამოყენებით). ამავდროულად, PHP დეველოპერები მუშაობენ DOM მოდულზე, რომელიც გვთავაზობს ხის დოკუმენტების შექმნისა და გადაცემის უფრო მოწინავე გზას. თუ გვსურს DOM-ის დანერგვა, მოგვიწევს მთლიანი აპლიკაციის ხელახალი დიზაინი, სტრიქონების გამომავალი შევცვალოთ DOM ელემენტების შესაქმნელად. ამიტომ, მირჩევნია ობიექტების XML წარმოდგენა შევინახო თავად ობიექტებში, თანმიმდევრულად შევკრიბო საერთო XML დოკუმენტი. ეს არც ისე რთულია, უბრალოდ ცოტა მოდიფიკაცია სჭირდება. თქვენ ნახავთ, რომ ეს ტექნიკა მკაცრად არ არის დაკავშირებული XML მონაცემების შენახვის კონკრეტულ გზასთან და ეს საშუალებას მოგცემთ მცირე ძალისხმევით გადახვიდეთ DOM-ის გამოყენებაზე. უპირველეს ყოვლისა, გაითვალისწინეთ, რომ ჩვენს თითოეულ ობიექტს აქვს toPage() მეთოდი. ამ მსგავსებამ უნდა გვაფიქრებინოს ახალი საერთო მშობლის კლასის შემოღებაზე. ნება მიეცით თითოეულ კლასს, რომელსაც შეუძლია შექმნას XML დოკუმენტის ნაწილები გვერდისთვის, მემკვიდრეობით მიიღებს კლასისგან, რომელიც იზრუნებს ობიექტის XML წარმოდგენაზე. მოდით ვუწოდოთ მას Outputable.

    class Outputable ( /** * XML კონტეინერი (სტრიქონი). */ var $output = ""; /** * მიეცით კონტეინერის შიგთავსი და გაასუფთავეთ კონტეინერი. * * @დააბრუნეთ სტრიქონი XML მონაცემებით */ ფუნქცია getOutput () ( $ out = $this->output; $this->output = ""; return $out; ->output .= $string . "n" ) /** * "აბსტრაქტული" მეთოდი */ ფუნქცია toPage( ) ( ) )

    toPage() მეთოდი ცარიელია - ამ შემთხვევაში ის საჭიროა, როგორც ინდიკატორი იმისა, თუ როგორ უნდა დაუკავშირდეს გარე მატრიოშკას კლასები შიდა კლასს. თუმცა, ჩვენ შეგვიძლია შემოგთავაზოთ ნაგულისხმევი იმპლემენტაცია, თუ შევამჩნევთ, რომ ბევრი ობიექტია, რომლებიც ერთნაირად აჩვენებენ თავს გვერდზე.

    Message და Inbox კლასები ოდნავ შეიცვლება - მათ ახლა ორივე უნდა მემკვიდრეობით მიიღონ Outputable-დან, ასევე შეიცვლება toPage() მეთოდებიც.
    Message.php

    class Message extends Outputable ( /** * შეტყობინების შინაარსი. */ var $content; /** * კონსტრუქტორი შეტყობინების ტექსტის ინიციალიზაციისთვის. * * @param content შეტყობინების შინაარსი */ ფუნქცია Message($content) ( $this->content = $content; this->appendOutput("".$this->content."") )

    class Inbox აფართოებს Outputable ( /** * მიღებული შეტყობინებების მასივი. */ var $messages = array(); /** * კონსტრუქტორში ვიღებთ ყველა მიღებულ შეტყობინებას * და ვხსნით მათ სესიიდან. */ ფუნქცია Inbox( ) ( if (is_array ($_SESSION["session_messages"])) ($messages = $_SESSION["session_messages"]; $co = sizeof($messages); for ($i = 0; $i< $co; $i++) { $this->შეტყობინებები = ახალი შეტყობინება ($messages[$i]); ) ) /* შეტყობინებების მასივის გასუფთავება */ $_SESSION["session_messages"] = array(); ) /** * გვერდზე Inbox-ის შიგთავსის ჩვენება. */ ფუნქცია toPage() ($co = sizeof($this->messages); $this->appendOutput(""); for ($i = 0; $i< $co; $i++) { $this->შეტყობინებები[$i]->toPage(); $this->appendOutput($this->შეტყობინებები[$i]->getOutput()); ) $this->appendOutput(""); ))

    გამომავალი მეთოდი შეიცვალა - ახლა, გვერდზე პირდაპირ გამოტანის ნაცვლად, გარე წარმოდგენა ამ დროისთვის ინახება Outputable-ში, რომელიც „ზის“ თითოეულ ობიექტში. appendOutput() მეთოდი ემსახურება echo() კონსტრუქციის ჩანაცვლებას. ობიექტის გამოსავლის მისაღებად გამოიყენება getOutput() მეთოდი.

    ახლა ვნახოთ რა არის კოდის კლიენტის ნაწილი, რომელიც მოაგვარებს იგივე პრობლემას, როგორც ადრე.
    index.php

    მთავარი ინოვაცია არის $global_content ობიექტში, რომლის სახელიც თავისთავად მეტყველებს. ამ შემთხვევაში, ის ეკუთვნის Outputable კლასს რეალურ ცხოვრებაში, თქვენ შექმნიდით ცალკე კლასს გვერდის შინაარსისთვის.

    თუ კარგად დააკვირდებით, სკრიპტის შინაარსი პრაქტიკულად არ შეცვლილა - იგივე inbox, იგივე toPage(). დამატებულია ინსტრუქცია, რომელიც აჩვენებს შეტყობინებების სიის შინაარსს გვერდის შინაარსში. მრავალფეროვნებისთვის, ახლა იქმნება ორი შეტყობინება.

    შედეგის დასათვალიერებლად, რჩება მხოლოდ XSL შაბლონის მომზადება.
    სტილი.xsl

    XSLT მაგალითი

    შეტყობინება

    რას მივაღწიეთ?

    უპირველეს ყოვლისა, შეგიძლიათ უფრო თავდაჯერებულად აიღოთ რთული პროექტები - უზრუნველყოფილია მოდულების რეალური დამოუკიდებლობა. შედეგების გვერდზე განთავსებული თანმიმდევრობა ახლა კონტროლდება გარე XSL შაბლონის გამოყენებით და არ არის დამოკიდებული მოდულების გაშვების თანმიმდევრობაზე.

    ნებისმიერი მოდული, რომელიც თავისი მუშაობის შედეგად წარმოქმნის XML მონაცემებს, შეიძლება გამოყენებულ იქნას პროექტში. სხვათა შორის, ეს არის ერთ-ერთი უპირატესობა შაბლონურ ძრავებთან შედარებით, რომლებშიც მონაცემთა შექმნა შედგება კონკრეტული ძრავის გამოძახების მეთოდების თანმიმდევრობით (მინიშნება და ა.შ.), რომლისთვისაც არ არსებობს საერთო სტანდარტი.

    კიდევ ერთი უპირატესობა არის გამართვის სიმარტივე. თუ სკრიპტს გაუშვით, შეამჩნევთ, რომ თითოეული გვერდი შეიცავს გამართვის გამომავალს - XML ​​პროტოტიპს, რომელიც მნიშვნელოვნად ამარტივებს აპლიკაციების გამართვას.

    კიდევ ერთი რამ, რაზეც უნდა იფიქროთ, არის ის, თუ როგორ უნდა შექმნათ შეტყობინების ობიექტები. ყოველთვის არ არის მოსახერხებელი ახლის პირდაპირ კლიენტის კოდში გამოყენება. მაგრამ, ალბათ, ეს არის ცალკე სტატიის თემა.

    და ბოლოს, გალოპი პერსპექტივების შესახებ:

    * ამომხტარი ფანჯრები მნიშვნელოვანი შეტყობინებების სიისთვის
    * "გამგზავნი გვერდები" და "დანიშნულების გვერდები" შეტყობინებებში
    * შეტყობინებების ჩაწერა მონაცემთა ბაზაში
    * ღილაკი "ჩემი მოქმედებების ისტორიის ჩვენება"
    * მომხმარებლის ქმედებების სტატისტიკური ანალიზი სესიების ფარგლებში
    * "ინტელექტუალური ასისტენტები" ვებ აპლიკაციებში

    ბოლოს მივხვდი: შენს ცოლზე უკეთესი ვერავინ იპოვე. რჩება მხოლოდ ცოლის პოვნა

    PHP AJAX CRUD: ჩანაწერების შექმნა, წაშლა, რედაქტირება MySQL მონაცემთა ბაზაში

    ამ სტატიაში ჩვენ გავიგებთ, თუ როგორ დავამატოთ, დაარედაქტიროთ და წაშალოთ ჩანაწერები MySQL მონაცემთა ბაზაში PHP-ის გამოყენებით. ჩვენ გამოვიყენეთ JQuery დამმუშავებელი, რომელიც აგზავნის AJAX მოთხოვნას სერვერის მხარეს სკრიპტზე. დამმუშავებელი ანახლებს ჩანაწერების სიას.

    AJAX ფორმა შექმნის, წაშლის, რედაქტირების მოთხოვნის გაგზავნისთვის

    ჩანაწერის დამატებისას ფორმა აგზავნის მონაცემებს PHP სკრიპტში AJAX მოთხოვნის მეშვეობით. თუ დამატება წარმატებულია, ჩანაწერების სია ხელახლა იტვირთება.

    JQuery AJAX ფუნქციონირებს CRUD მონაცემთა ბაზის შეკითხვისთვის

    JQuery AJAX ფუნქციაში გვაქვს გადართვის შემთხვევები, დაამატეთ რედაქტირება და წაშლა. ეს შემთხვევები წარმოქმნის სხვადასხვა მოთხოვნისა და პასუხების მონაცემთა სტრიქონებს, რაც დამოკიდებულია მონაცემთა ბაზის მოქმედებებზე.

    ფუნქცია showEditBox(id) ($("#frmAdd"). დამალვა(); var currentMessage = $("#message_" + id + ".message-content").html(); var editMarkUp = ""+currentMessage+" SaveCancel"; $("#message_" + id + ".message-content").html(editMarkUp); ) ფუნქცია cancelEdit(წერილი,id) ($("#message_" + id + " .message-content") .html(გზავნილი $("#frmAdd").show(ფუნქცია callCrudAction(action,id) ($("#loaderIcon").show(); var queryString; switch(action) ( case "add "); : queryString = "action="+action+"&txtmessage="+ $("#txtmessage").val( break case "edit": queryString = "action="+action+"&message_id="+ id + " &txtmessage; ="+ $("#txtmessage_"+id).val(); break; case "delete": queryString = "action="+action+"&message_id="+ id; break; ) jQuery.ajax(( url: " crud_action.php", data:queryString, ტიპი: "POST", success:function(data)( switch(action) ( case "add": $("#comment-list-box").append(data); break ; შესვენება; case "delete": $("#message_"+id).fadeOut(); შესვენება; ) $("#txtmessage").val(""); $("#loaderIcon").დამალვა(); ), შეცდომა:ფუნქცია ()() )); )

    PHP სკრიპტი CRUD ოპერაციებისთვის

    შემდეგი კოდი ასრულებს შეკითხვებს მონაცემთა ბაზის წინააღმდეგ. ეს PHP სკრიპტი, CRUD მოქმედების შესრულების შემდეგ, აახლებს ჩანაწერებს AJAX პასუხის შედეგად.

    require_once ("dbcontroller.php"); $db_handle = ახალი DBController(); $action = $_POST["მოქმედება"]; if(!empty($action)) ( switch($action) ( case "add": $result = mysql_query("INSERT INTO comment(ssage) VALUES("".$_POST["txtmessage"].")" ) if($result)($insert_id = mysql_insert_id(); echo "Edit Delete" . $_POST["txtmessage"] "".$_POST["txtmessage"]."" WHERE id=".$_POST["message_id"]); if($result) echo $_POST["txtmessage"]; შესვენება; შემთხვევა "წაშლა": თუ ( !empty($_POST["message_id"])) (mysql_query("DELETE FROM comment WHERE id=".$_POST["message_id"]); ) break) )



     

    შეიძლება სასარგებლო იყოს წაკითხვა: