Anpassade formulär för redigering av element. Dataredigering i PHP Php Dataredigering


Vi gjorde en liten applikation som använde ett enda bord. I applikationen skapades en modell, controller och flera vyer för att visa och lägga till kategorier i databastabellen. I den här lektionen kommer vi att fortsätta arbeta med applikationen och bygga funktionalitet för kontroll, samt för att redigera och ta bort data från kategoritabellen.

Datavalidering i CakePHP görs i modellen. Det är väldigt enkelt att lägga till det. Eftersom vårt bord bara har ett fält att kontrollera, behöver vi bara kontrollera om det finns ett värde när vi skriver. Låt oss ändra koden i filen /app/models/category.php :

Klasskategori utökar AppModel (var $ name = "Category"; var $ validate = array ("name" => array ("rule" => "notEmpty"));)

Array $ validera berättar för CakePHP hur du utför validering av dina data när metoden anropas spara ()... I vårt exempel anger vi att fältet namn måste vara meningsfull (det vill säga inte tomt). CakePHP: s valideringsmotor har flera inbyggda regler (validering av kreditkortsnummer, e-postadresser och liknande) och låter dig lägga till dina egna valideringsregler. Vi kommer att titta närmare på det när vi utökar vår ansökan till en jobbstavla.

Datavalidering är en viktig del av alla applikationer, eftersom det hjälper till att avgöra om data i modellen matchar programmets logik.

Vi har nu en valideringsregel. Prova att lägga till en kategori med ett tomt namnfält. Eftersom vi använde metoden inmatning () formulärsbyggare för att skapa våra element, då visas ett felmeddelande automatiskt.

Du kan skriva ditt eget felmeddelande. Prova att använda följande kod i din modellfil:

Klasskategori utökar AppModel (var $ name = "Category"; var $ validate = array ("name" => array ("rule" => "notEmpty", "message" => "Kategorin måste ha ett namn!") );)

Låt oss lägga till funktioner för redigering och radering av kategorier.

Låt oss först radera. Öppnar filen och lägg till följande funktion direkt efter funktionen Lägg till ():

Radera funktion ($ id) ($ this-> Category-> delete ($ id); $ this-> Session-> setFlash ("Category with identifier:". $ Id. "Deleted."); $ This-> redirect (array ("action" => "index"));)

Eftersom den här funktionen bara tar bort kategorin och omdirigerar applikationslogiken till åtgärden index kontroller, då behöver vi inte skapa en vy. Vi måste dock ändra vår syn index för att lägga till en länk för att radera kategorin. Öppnar filen /app/view/categories/index.ctp och ändra det så att det ser ut så här:

Kategorier

länk ("Lägg till kategori", array ("controller" => "kategorier", "action" => "lägg till")); ?>
Id namn Åtgärder
länk ($ category ["Category"] ["name"], array ("controller" => "kategorier", "action" => "view", $ category ["Category"] ["id"])); ?> link ("Ta bort", array ("action" => "delete", $ category ["Category"] ["id"]), null, "Är du säker?")?>

Prova att ta bort kategorin nu. CakePHP genererar automatiskt en Javascript -dialog med en fråga "Är du säker?" .

Låt oss nu lägga till en funktion för att redigera en kategori i vår handkontroll. Kopiera följande kod till en fil /app/controllers/categories_controller.php :

Funktionsredigering ($ id = null) ($ this-> Category-> id = $ id; if (tom ($ this-> data)) ($ this-> data = $ this-> Category-> read (); ) else (om ($ this-> Category-> save ($ this-> data)) ($ this-> Session-> setFlash ("Din kategori har ändrats."); $ this-> redirect (array (" action "=>" index "));)))

Den här funktionen kontrollerar först om någon formdata har skickats in. Om ingenting gick igenom hittar den kategorin och skickar den till vyn. Om någon data har överförts försöker den lagra den med hjälp av modellen.

För den här funktionen behöver vi en vy. Skapa en fil /app/views/categories/edit.ctp och kopiera koden till den:

Redigera en kategori

create ("Category", array ("action" => "edit")); echo $ form-> input ("namn"); echo $ form-> input ("id", array ("type" => "dold")); echo $ form-> end ("Spara"); ?>

Denna vy visar ett formulär för redigering (med fält fyllda med värden).

En punkt att notera: CakePHP förutsätter att du redigerar modellen om ' id'I datamängden. Om fältet "id" saknas (titta på Lägg till), CakePHP förutsätter att du sätter in ny data när metoden anropas spara ().

Nu kan du uppdatera vyn index en länk för att redigera en specifik kategori, det vill säga filen /app/views/categories/index.ctp ska se ut så här:

länk ("Lägg till kategori", array ("controller" => "kategorier", "action" => "lägg till")); ?>

Id namn Åtgärder
länk ($ category ["Category"] ["name"], array ("controller" => "kategorier", "action" => "view", $ category ["Category"] ["id"])); ?> link ("Ta bort", array ("action" => "delete", $ category ["Category"] ["id"]), null, "Är du säker?")?>länk ("Edit", array ("action" => "edit", $ category ["Category"] ["id"]));?>

Vår lilla CakePHP -applikation är nu klar!

Låt oss nu ta itu med rutter i CakePHP. För vissa kommer CakePHPs standardrutt att fungera bra. Utvecklare som vill bygga ett lättanvänt applikationsgränssnitt och göra det sökrobotvänligt kommer att bli nöjda med hur CakePHP-åtgärden genererar webbadresser. Men för träningsändamål kommer vi att ändra routningen.

Som standard svarar CakePHP på förfrågningar till roten på din webbplats (t.ex. http://www.example.com) med en sidkontrollant PagesController, som visar en vy med namnet " Hem”. Vi kommer att ändra rutten till vår kategorikontroller genom att skapa en lämplig regel.

CakePHP -routing finns i filen /app/config/routes.php ... Du kan kommentera eller ta bort raden som definierar standardvägen. Det ser ut så här:

Router :: connect ("/", array ("controller" => "sidor", "action" => "display", "home"));

Låt oss nu lägga till raden nedan:

Router :: connect ("/", array ("controller" => "kategorier", "action" => "index"));

På så sätt kommer användaren som begär '/' att ledas till handling index () vår kategorikontroller. Nu kan du komma åt vår applikation via rotadressen (t.ex. http: // localhost / tårta).

I nästa handledning kommer vi igång med CakePHP Bake Application Generator.

Formuläret för att lägga till / ändra element i informationsblock är en av de mest använda, och i onlinebutiker eller informationspublikationer är det här formuläret överlägset mest populärt i det administrativa avsnittet. Och trots att utseendet och formulärfältet ändras beroende på inställningarna för informationsblocket, och du kan också anpassa formulärets utseende för att redigera element med hjälp av standard systemverktyg, för specifika uppgifter, ibland är detta inte tillräckligt.

I det här fallet bör en eller två (beroende på uppgiften) ytterligare filer skapas i / bitrix / php_interface / include /:

Ange sedan sökvägarna till dessa filer i infoblock -inställningarna:

Fil med elementredigeringsformuläret

Skapa i mappen / bitrix / php_interface / include /, till exempel en fil iblock_element_edit_my.php, kopiera sedan koden från filen /bitrix/modules/iblock/admin/iblock_element_edit.php till den från raden:

före raden:

////////////////////////////////// END på det anpassade formuläret //////////////// /////////

Viktig! Glöm inte att inkludera erforderliga namnutrymmen i din fil (se de första raderna i filen /bitrix/modules/iblock/admin/iblock_element_edit.php).

Nu kan du börja redigera filen, d.v.s. för att ändra utseendet på informationsblockets elementredigeringsform för dina egna behov. (Innan proceduren är det nödvändigt att avbryta formulärinställningarna, om några gjordes tidigare.)

  • Du kan ta bort de informationsblockfält du inte behöver. För att visa formulärfält används konstruktioner av följande typ:BeginCustomField ("ACTIVE_TO", GetMessage ("IBLOCK_FIELD_ACTIVE_PERIOD_TO"), $ arIBlock ["FIELDS"] ["ACTIVE_TO"] ["IS_REQUIRED"] === "Y"); ?> GetCustomLabelHTML ()?>: EndCustomField ("ACTIVE_TO", "
  • För att visa egenskaperna för infoblock -element i formuläret, använd funktionen _ShowPropertyField (): BeginCustomField ("PROPERTY _". $ Prop_fields ["ID"], $ prop_fields ["NAME"], $ prop_fields ["IS_REQUIRED"] === "Y"); ?> & lt? $ tabControl-> EndCustomField ("PROPERTY _". $ prop_fields ["ID"], $ hidden); ?>

När du använder ett anpassat formulär på elementredigeringssidan försvinner knappen Ställa in, som låter dig sortera och anpassa visningen av elementets formulärfält.

För att inte lägga till en mekanism för att sortera fält i iblock_element_edit_my.php och för att inte överge standardfunktionen måste du lägga till följande kod i filen:

GetCurPage (). "? Läge = inställningar". ($ Link<>""? "&". $ länk: ""); $ aMenu = array ("TEXT" => GetMessage ("IBEL_E_SETTINGS"), "TITLE" => GetMessage ("IBEL_E_SETTINGS_TITLE"), "LINK" => "javascript:". $ tabControl-> GetName (). ". ShowSettings ("" .urlencode ($ länk). "") "," ICON "=>" btn_settings ",); $ context = new CAdminContextMenu ($ aMenu); $ context-> Visa (); )?>

Viktig!

Filen som är ansvarig för att bearbeta fälten i ett element innan det sparas

För att ändra de sparade fälten är det nödvändigt att ändra fälten med samma namn i $ _POST- och $ _FILES -matriserna, värdena för alla egenskaper måste ändras i $ PROP -matrisen.

Skapa i / bitrix / php_interface / include /, till exempel en fil iblock_element_edit_before_save.php.

För att kontrollera att den detaljerade texten för ett element har angetts använder vi följande villkor:

If (strlen ($ _ POST ["DETAIL_TEXT"])<=0) $error = new _CIBlockError(2, "DESCRIPTION_REQUIRED", "Введите текст статьи");

Objektkonstruktör _CIBlockError tar tre parametrar: felets svårighetsgrad, en godtycklig identifierare och feltexten. Om du definierar $ error -variabeln med värdet på detta objekt på redigeringssidan, sparas inte de gjorda ändringarna. För att säkerställa att de värden som tas emot från formuläret inte går förlorade, efter att initialiseringen av $ -felvariabeln, initialiseras också variabeln $ bVarsFromForm = true. Variabeln $ bVarsFromForm anger bara att värdena i fälten ska visas de som kom från formuläret.

För att automatiskt skapa en liten bild baserad på en stor, använd funktionen BXIBlockAfterSave... Om du definierar det innan du sparar objektet, kommer det automatiskt att ringas upp efter att objektet har sparats. Låt oss definiera det i början av filen /bitrix/php_interface/include/iblock_element_edit_before_save.php:

Hämta ()) && $ ar ["DETAIL_PICTURE"]>< $height_orig)) $width = ($height / $height_orig) * $width_orig; else $height = ($width / $width_orig) * $height_orig; $image_p = imagecreatetruecolor($width, $height); $image = imagecreatefromjpeg($img_path); imagecopyresized($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig); $new_img_path = tempnam("/tmp", "FOO").".jpg"; imagejpeg($image_p, $new_img_path); $be = new CIBlockElement(); $be->Update ($ arFields ["ID"], Array ("PREVIEW_PICTURE" => CFile :: MakeFileArray ($ new_img_path)), falskt); @unlink ($ new_img_path); ))?>

Notera: i ovanstående manus kommer en liten bild att skapas baserad på en stor bild och den här bilden kommer att infogas i fältet för en liten bild. Exemplet fungerar bara med bilder i formatet Jpg.

Här är den fullständiga koden för sidan /bitrix/php_interface/include/iblock_element_edit_before_save.php:

0 && $ view! = "Y" && (! $ Error) && empty ($ dontsave) && strlen ($ _ POST ["DETAIL_TEXT"])<=0) $error = new _CIBlockError(2, "DESCRIPTION_REQUIRED", "Введите текст статьи"); function BXIBlockAfterSave($arFields) { $dbr = CIBlockElement::GetByID($arFields["ID"]); if(($ar = $dbr->Hämta ()) && $ ar ["DETAIL_PICTURE"]> 0) ($ img_path = $ _SERVER ["DOCUMENT_ROOT"]. CFile :: GetPath ($ ar ["DETAIL_PICTURE"]); $ width = 200; $ height = 200 ; list ($ width_orig, $ height_orig) = getimagesize ($ img_path); if ($ width && ($ width_orig)< $height_orig)) $width = ($height / $height_orig) * $width_orig; else $height = ($width / $width_orig) * $height_orig; $image_p = imagecreatetruecolor($width, $height); $image = imagecreatefromjpeg($img_path); imagecopyresized($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig); $new_img_path = tempnam("/tmp", "FOO").".jpg"; imagejpeg($image_p, $new_img_path); $be = new CIBlockElement(); $be->Update ($ arFields ["ID"], Array ("PREVIEW_PICTURE" => CFile :: MakeFileArray ($ new_img_path)), falskt); @unlink ($ new_img_path); ))?>

Viktig! Glöm inte att ange sökvägen till den här filen i infoblock -inställningarna.


Ibland är det nödvändigt att göra ändringar av en helt annan karaktär, till exempel ett formulär för att skriva in och ändra flera bilder samtidigt, i det här fallet behöver du bara skapa din nya sida och lägga till den i administrationsmenyn.

Kära webbplatsbesökare och ställer frågor som "Hur fäster du din kundvagn på webbplatsen?" etc. Jag gör inga färdiga lösningar, jag beskriver implementeringslogiken, för varje enskild sajt måste du lägga till vissa saker i alla fall, så om du verkligen behöver skruva eller bifoga något tillhandahåller jag betalda och gratis tjänster för konsult- och slutföra webbplatser. Skriv till feedbackformuläret högst upp på sidan, jag svarar alla.


MySQL -cellredigering (förutsättningar för att skapa ditt eget CMS, UPDATE -uttalande)

I denna artikel kommer jag att ge ett exempel på hur man gör en redaktör för webbplatsens innehåll, d.v.s. redigera informationen i MySQL -databasen. Så det är nästa uppgift: att redigera posten i databastabellen. Redigeringen sker från ett vanligt HTML -formulär. Det första du ska göra är att välja önskade värden från tabellen. Du kan läsa hur du gör detta. Till exempel, låt oss ta en tabell med varor från artikeln om kundvagnen i en webbutik. Skriptlogiken är följande:

  1. Kontrollera om du klickade på knappen "Skicka".
  2. Om inte, visa formuläret med fyllda fält
  3. Ändra i så fall innehållet i den önskade cellen.

Låt oss börja med formuläret, det är lättare. Vi skapar sidan update.php. Varutabellens struktur är följande: 1. identifierar -id (smallint) 2. varunamn (textfält varchar (255)) 3. varans pris (float).
Vi väljer ett värde från databasen:



?>



”/>




Formuläret för redigering är klart. Nästa steg är att ställa in ett villkor som avgör om användaren har klickat på redigeringsknappen, eller om han bara vill börja redigera data.
Villkoret är extremt enkelt. Var uppmärksam på det dolda fältet edit, det är det här fältet som säger att manuset ska redigera data:

if (! isset ($ _ POST [‘redigera]]) (
$ q = mysql_query ("SELECT * FROM products WHERE id =" $ id ");
$ produkt = mysql_fetch_assoc ($ q);
?>



”/>




}
annat (
// Redigera data:
$ q = mysql_query (”UPDATE products SET name = '”. $ _ POST [' name ']. ”', price = '”. $ _ POST [' price ']. ”' WHERE id = '”. $ _ POST ['id']. ”'”);
om (! q) (
echo "Det gick inte att köra SQL -fråga";
}
}
?>

Observera att formulärhanteraren och själva formuläret finns på samma update.php -sida. Således kan vi nu redigera data i MySQL -databasen och sedan ändra formuläret för din datastruktur.
Observera: Observera att id -värdet måste skickas till sidan update.php, genom vilken produkten väljs, vanligtvis kan det skickas med GET -metoden genom att lägga till id -värdet, dvs. länken till redigeringssidan kommer att se ut så här: update.php? id = ...

Senast uppdaterad: 1.11.2015

Att redigera befintlig data blir lite svårare att hämta och lägga till data från databasen. Först och främst, för här måste vi först kombinera, ta emot de redigerade data och sedan uppdatera databasen med nya värden.

SQL -satsen "UPDATE" används för att uppdatera:

$ query = "UPDATE tovars SET name =" Samsung ACE II ", company =" Samsung "WHERE id =" 1 "";

SET följs av en lista över kolumnnamnen och nya värden för dem. Väljaren anges i slutet av frågesträngen med hjälp av en WHERE -sats. I det här fallet är alla rader med id = "1" inställda på name = "Samsung ACE II" och company = "Samsung"

Låt oss nu skapa en ny fil edit.php som innehåller redigeringslogiken. Och lägg till följande innehåll:

Uppdaterade data";) // om förfrågan är GET if (isset ($ _ GET [" id "])) ($ id = htmlentities (mysqli_real_escape_string ($ länk, $ _GET [" id "])); // skapa en fråga string $ query = "SELECT * FROM tovars WHERE id =" $ id ""; // kör frågan $ resultat = mysqli_query ($ länk, $ fråga) eller die ("Fel". Mysqli_error ($ länk)); // om frågan innehåller mer än noll rader om ($ result && mysqli_num_rows ($ result)> 0) ($ row = mysqli_fetch_row ($ result); // få första raden $ name = $ row; $ company = $ row; echo "

Byt modell

Ange modell:

Tillverkare:

"; mysqli_free_result ($ resultat);)) // stäng anslutningen mysqli_close ($ länk);?>

Strukturellt är hela koden uppdelad i två delar: bearbetning av POST -begäran och behandling av GET -begäran. Att behandla en POST -begäran liknar att lägga till data, bara i detta fall används UPDATE -satsen: "UPDATE tovars SET name =" $ name ", company =" $ company "WHERE id =" $ id ""

När vi behandlar en GET -begäran får vi postens id och för det får vi hela posten med uttrycket "SELECT * FROM tovars WHERE id =" $ id "". Om mer än noll rader tas emot visar vi innehållet i raden i formuläret för redigering.

Nu, för att redigera den första posten, måste vi hänvisa till skriptet i webbläsaren på http: // localhost: 8080 / edit.php? id = 1.

Vi fortsätter vår serie självstudier om att arbeta med MySql -databaser. I denna handledning lär vi oss hur man redigerar information i en MySql -databas direkt från en webbsida.

Du kan behöva sådana möjligheter när du ger användaren av din resurs att fylla i hans profil och redigera den. Denna kunskap kommer också att vara till nytta om du skriver ett administratörssektion för en webbplats och vill kunna redigera poster utan att gå in i databasen.

Under de tidigare lektionerna skapade vi en MySql -databas, fyllde i den, skapade kod för att visa information från databasen, samt för att lägga till nya poster i databasen direkt från webbsidan.

I den här självstudien kommer jag att fortsätta använda den befintliga filstrukturen. Alla filer för den här lektionen finns i källan för den här lektionen.

Så låt oss komma igång!

Redigera en post i MySql -databasen från webbsidan.

Vad behöver vi göra?

1. Skapa en knapp som begär alla poster från databasen.

2. Skapa en fil där alla poster i databasen visas som en lista (för att välja den som vi vill redigera).

3. När en specifik post väljs ingår en hanteringsfil i arbetet, som tar från databasen all information om posten vi behöver.

4. Den valda informationen infogas i fälten i redigeringsformuläret som vi kommer att skapa.

5. Efter redigering, med en specifik SQL -fråga, skickas informationen för uppdatering till MySql -databasen.

1. Det första vi ska göra är att skapa en “select_change.php” -fil och placera den i samma katalog som alla våra huvudfiler (dvs. huvudkatalogen).

Tills vi började arbeta med det, låt oss öppna filerna: “search_user.html”, “info_form.html”, “select_user.php”, “all_users.php” och lägg till en länk till den här filen så att den är tillgänglig från alla filer vår applikation (detta är för enkelhets skull, så att vi varje gång inte skriver dess adress i adressfältet när vi testar våra webbsidor).

Lägg till följande rad i var och en av filerna före stängningstaggen kropp.

Redigera databaspost

2. Låt oss nu öppna själva "select_change.php" -filen. Vi visar bara för- och efternamnet från databasen för att välja den användare vars information vi vill redigera.

För att göra detta, först kommer vi att bilda en fråga till databasen, som kommer att berätta att du väljer alla poster från databasen och sedan visar listan med namn och efternamn för varje person.

Vi kommer att visa data som alternativknappar. Vi gör detta för att kunna välja en användare (dessutom bara en).

Vi kommer bara att begära 3 parametrar från databasen: dessa är id, förnamn, efternamn. De två sista kommer att visas på skärmen så att vi kan avgöra vilken information från databasen vi kommer att redigera. ID -parametern är osynlig (det är värdet på värde), men det är nödvändigt för att programmet ska kunna identifiera det valda elementet i databasen (efternamn och namn kan upprepas och id: et är alltid individuellt).

Var också uppmärksam på hur informationen visas i den här filen. Du kan se symboler som % s.

Principen är följande: HTML -kod matas ut i dubbla citattecken i funktionen “printf”, istället för en viss variabel (till exempel “$ row [‘ first_name ’]”) sätter vi ankare -% s. Och efter att de dubbla citaten stängts listar vi dessa variabler som motsvarar de medföljande ankarna. Detta är praktiskt när du arbetar med "printf" -funktionen, men du bör hålla reda på ordningen på ankarna och de uppräknade variablerna, eftersom de kommer att ersättas i den exakta ordningen som du räknar upp dem.

Allt detta är insvept i en formulärtagg med action = "edit.php". Vi kommer att skapa filen edit.php i nästa steg.

Så koden för vår select_change.php -fil kommer att se ut så här:

Användarval för redigering.

% s% s

", $ row [" id "], $ row [" first_name "], $ row [" last_name "]);) medan ($ row = mysql_fetch_array ($ resultat))?>
Lägg till användare

Återgå till sökningen

Och om du laddar sidan i en webbläsare kan du se något liknande följande:

3. Skapa en fil “edit.php” och placera den där i huvudkatalogen.

Den här filen är hanteringsfilen för vår tidigare fil. Det kommer att visa formuläret och automatiskt fylla i informationen från MySql -databasen för den post som vi har valt.

Dessutom kommer det i denna form att vara möjligt att ändra en eller flera parametrar (till exempel förnamn, efternamn, etc.).

Först måste programmet förstå vilken typ av rekord du behöver från den. Och för detta måste parametern vara godkänd id... Namn för inmatning i den senaste filen vi gav - "användare", på samma plats lagras den i attributet värde behövs id... Därför kan du få det genom att begära det med "$ _REQUESR ['användare']". Och skriv sedan in resultatet i en variabel "$ Id".

För det andra måste du bilda en fråga som visar all information om posten med den angivna identifieraren från vår databastabell.

För det tredje måste du utföra denna begäran och visa varje parameter i fältet som tillhandahålls för den (i attributen värde).

Här är koden för allt ovanstående:

Gör en förändring











", $ row [" id "], $ row [" first_name "], $ row [" last_name "], $ row [" email "], $ row [" facebook "]);?> Lägg till användare

Återgå till sökningen



Observera att vårt formulär action = 'scripts / update.php'... Vi kommer att skapa den här filen i nästa steg.

Observera också att id -parametern också är godkänd, men vi kommer inte att se den, eftersom den är tilldelad typ = 'dold'. Du måste överföra det, men det är bättre att inte ge möjlighet att ändra det för att undvika misstag.

Och här är resultatet vi har uppnått hittills:

4. Tja, det är väldigt lite kvar!

Du måste skapa filen update.php och lägga den i skriptmappen.

Vad kommer den här filen att göra?

Den kommer att ta emot alla inmatade värden från den föregående filen och sätta var och en i en variabel.

Sedan kommer han att bilda en fråga till databasen, där han kommer att be om att uppdatera posten med hänsyn till den godkända identifieraren och ersätta motsvarande variabel i motsvarande fält.

Sedan skickar han en begäran om körning och visar resultatet i form av ett textmeddelande (antingen gick allt bra, eller så uppstod ett fel).

Här är koden för den här filen:

Namnlöst dokument Posten har uppdaterats!

";?> Lägg till användare

Återgå till sökningen

Återgå till att välja poster för redigering

Och här är resultatet av detta manus:

Så för närvarande (om du har slutfört alla fyra lektionerna i den här serien) har du ett program som du kan lägga till nya poster i databasen, visa dem i listan eller söka och visa med önskat för- och efternamn, samt redigera redan befintliga poster.

Håller med, inte lite. Och allt detta utan att gå in i själva basen. Allt kommer från webbsidor.

I nästa lektion kommer jag att visa dig hur du tar bort utvalda poster från databasen.

Om du ännu inte har prenumererat på blogguppdateringen, var noga med att prenumerera för att inte missa nya lektioner.

Jag ser också fram emot din feedback och kommentarer.

Lycka till och vi ses på nästa lektion!







2021 gtavrl.ru.