Chirurgija pridėti php htm. PHP: „mini-DB“ kūrimas tekstiniame faile. PHP į HTML – failų plėtiniai

💖 Ar tau patinka? Pasidalinkite nuoroda su draugais

Kaip ir bet kuriame amato, PHP yra daugybė įvairių gudrybių, kurios žymiai palengvina paprasto programuotojo gyvenimą. Štai keletas iš šių gudrybių.

1 triukas: masyvų perdavimas iš formos.

Iš HTML formos galite perkelti ne tik reikšmes (kintamuosius), bet ir masyvus. Tarkime, kad turime formą su tokiu lauku:

Pateikiant duomenis iš formos, PHP scenarijus gaus reikšmę iš krovinio lauko kaip $cargo kintamąjį. Bet jei nurodysite „cargo“, o ne „cargo“, laukelis scenarijui siųs nebe kintamąjį, o masyvą $cargo, kurio vienintelis elementas turės vieną kaip raktą, o lauko turinys – kaip vertė. Automatiškai generuojant formą (tarkime, kai generuojant kainoraštį su daugybe prekių), šis triukas tikrai nepakeičiamas, o masyvo apdorojimą su scenarijumi tvarkyti daug lengviau, nei analizuoti krūvą kintamųjų su tokiais pavadinimais kaip tovar1, tovar2 ir pan. .

2 gudrybė: stenografinė forma sąlygai rašyti PHP.

Dizainas...

echo "param=";~^~if($a==1)~^~( echo "1"; )~^~else ( aidas "2"; )

Daug lengviau (ir trumpiau) pateikti jį sutrumpinta forma:

echo "param=".($a==1?"1":"2");

3 triukas: HTML „pateikti“ mygtukų analizė.

HTML mygtukas „pateikti“, kaip žinote, siunčia HTML formos duomenis į serverį (mūsų atveju, kad jie būtų apdoroti pagal PHP scenarijų). Bet ką daryti, jei forma reikalauja kelių mygtukų, kurie suteikia skirtingas duomenų apdorojimo parinktis? Susidūrę su šia užduotimi, dėl tam tikrų priežasčių mažai žmonių prisimena, kad mygtukai „pateikti“ turi savo „vertės“ atributą. Ne, žinoma, visi žino, kad šis atributas rodo užrašą ant mygtuko, tačiau, kaip taisyklė, jam nesuteikiama jokia kita reikšmė. Tuo tarpu, jei „pateikti“ tipo mygtukai turi „pavadinimo“ atributą, mygtukų etikečių tekstas siunčiamas iš formos į serverį kartu su kitais duomenimis ir gali būti analizuojamas pagal scenarijų, kuris leis tiek daug Skirtingas duomenų apdorojimas bus atliekamas spaudžiant skirtingus „pateikti“ tipo mygtukus. , kiek tik širdis geidžia. Triuko privalumas yra tas, kad šiuo atveju nereikia jokių „paslėptų“ laukų.

4 triukas: neegzistuojantys PHP funkcijos parametrai.

Gerai žinoma, kad iškviečiant funkcijas PHP, turite nurodyti lygiai tiek pat kintamųjų, kiek funkcija turėtų priimti:

$valanda=16;~^~$minute=35;~^~echo today_is($valanda,$minutė);~^~...~^~funkcija today_is($valanda,$minutė);~^~(~ ^~...~^~)

Mažiau žinoma, kad funkcijos antraštėje galite nurodyti numatytąsias kintamųjų reikšmes (naudoti, jei trūksta kintamųjų reikšmių arba pačius kintamuosius, kai jie pasiekiami iš išorės), o tai leidžia pasiekti funkciją bet kuriuo kintamųjų skaičių arba jų visai nenurodyti:

funkcija today_is($valanda=16,$minute=0)~^~(~^~...~^~)

5 gudrybė: neleiskite JS scenarijų ir CSS stilių kaupti talpykloje.

Kiek žmonių prisiekia kiekvieną dieną pakeitę JS scenarijaus turinį arba CSS stilius ir sužinoję, kad naršyklė tvirtai išsaugojo talpyklą sena versija ir niekaip nenori parodyti naujo darbo rezultatų. Ypač tie, kurie savo įmonėje turi prieigą prie interneto per tarpinį serverį. Ko tokiais atvejais nepadarysi: meta skiltyje dedamos pasibaigusios antraštės, anti-caching meta žymos ir pan.. Tuo tarpu kartais pakanka įdėti pseudoparametrą paminėjus atitinkamą failą atsitiktinio skaičiaus pavidalu sukurta trumpa PHP kodo dalimi:

Kad atidarant puslapį visada būtų įkeliama tik naujausia failo versija.

6 triukas: kabutės, apostrofai ir teksto interpretacija.

Į eilučių (teksto) verčių konteinerio pasirinkimą dažnai įprasta žiūrėti šiek tiek nerūpestingai. Bet veltui: daugelis žmonių pamiršta, kad PHP interpretatorius visada analizuoja dvigubų teksto kabučių (") turinį, ar nėra kintamųjų, o pavienių kabučių (apostrofų) konteinerių turiniui yra visiškai abejingas, tiksliai priskirdamas juos simboliais. charakteris be interpretacijos.

Todėl tekstus su kintamaisiais patogiau dėti į nepertraukiamas dvigubas kabutes:

$text="Sveiki, $(kliente)!";

Tačiau neįskaitomas kodas su apostrofais veikia pastebimai greičiau, ypač kilpose:

$text=Sveiki, .$kliente.!;

7 triukas: momentinis pasitraukimas.

Kitas puikus būdas paspartinti scenarijaus vykdymą – užuot iš karto ir kiekvieną kartą rodydama viską, kas ateina su komanda aidas, sukaupkite testo turinį kintamajame ir vieną kartą išspausdinkite tą kintamąjį:

$mytext="1 variantas";~^~$mytext.=" koduoti";~^~$mytext.=" prieiga";~^~echo $manotekstas;

Atkreipkite dėmesį, kad sujungimo operacija parašyta sutrumpinta forma: $mano tekstas.=, bet ne $manotekstas=$manotekstas.. Sutaupoma laiko – iki dešimties kartų sutrumpėja išvesties laikas. Įspūdingas?

8 triukas: tipo laukų masyvo perdavimas žymimasis langelis.

1 triukas leidžia mums perduoti masyvus iš HTML formos. Ir šiuo triuku išanalizuokime kitą situaciją: tarkime, kad turime perduoti masyvą iš formos, kurioje yra tik tokie laukai kaip žymimasis langelis(tai mažas kvadratas, kuriame paspaudus pasirodo varnelė). Pavyzdžiui, turime miestų sąrašą, iš kurio vartotojas gali pasirinkti jam reikalingus miestus, tačiau siųsdami duomenis norime siųsti ne tik vartotojo pasirinktų miestų identifikatorius, bet ir pastarųjų pavadinimus. Ir paslėpti laukai kaip paslėptas Tikrai nenorime nieko daryti šalia žymimųjų langelių (kad neapkrautų puslapio kodo ir į serverį siunčiamų duomenų masės). Ką turėčiau daryti?

Sprendimas labai paprastas. Kaip žinote, pagal numatytuosius nustatymus yra tipo laukas žymimasis langelis(kaip taip, netgi galite spustelėti: ) paprastai gali turėti reikšmę „on“ (laukas pasirinktas, tai yra, jame yra varnelė) arba „off“ (laukas nepasirinktas). Galima nurodyti ir alternatyvią lauko reikšmę, pavyzdžiui, 1. Tačiau ne visi mano, kad šiam laukeliui apskritai galima nurodyti bet kokią reikšmę, net ir romano „Karas ir taika“ tekstą. Ir ši vertė bus kruopščiai perkelta į serverio scenarijus analizei ir apdorojimui:

Vartotojas pasirenka reikiamus elementus, paspaudžia mygtuką „Pateikti“ ir į serverį siunčiamas pasirinktų langelių masyvas, kuriame galima pasirinkti vardasžymimasis laukelis yra kintamojo pavadinimas ir parinktis vertė- jo prasmė. Pritaikyta PHP tai atitinka eilutę:

$id548=Toyota Landcruiser;

Dabar dar kartą prisiminkime triuką numeris 1. Tarkime, kad nenorime analizuoti daugybės kintamųjų, o norime analizuoti vieną masyvą. Tai taip pat lengva:

Ir dėl to, kad pasirinkimo argumente aplink skaičių atsiranda du laužtiniai skliaustai vardasžymės langelį, tai nebėra kintamasis, siunčiamas į serverį id548 USD, ir masyvo elementą $id su raktu 548.

Rezultatas? Visai gerai: iš vieno langelio į serverį perdavėme net tris parametrus – masyvo pavadinimą, elemento raktą ir jo reikšmę, be jokių papildomų paslėptų laukelių ir nereikalingo HTML kodo.


aidas" ";
aidas" ";
aidas" ";
echo "Sveiki, šiandien yra";
echo data ("l, F jS, Y"); // kitas php kodas čia echo "";
aidas"";
?>

Tačiau tai paveiks daugumos HTML/PHP redaktorių HTML kodo spalvinimo parinktį, kuri leidžia lengvai suprasti HTML žymų vaidmenį. Kiekvieną dvigubą kabutę HTML kode turėtumėte palikti pasviruoju brūkšniu.

PHP HTML – failų plėtiniai

Kai nurodytame faile yra PHP kodas, jis turi turėti PHP plėtinį. Daugeliu atvejų tai yra .php, tačiau taip pat galite sukonfigūruoti .htaccess failą, kad jis nuskaitytų PHP kodą HTML faile jo nepervardydamas ar nekeičiant plėtinio. Žemiau galite peržiūrėti „tvarkytojus“, kuriuos reikės pridėti, kad tai būtų pasiekta

Paprastai sukonfigūruotam žiniatinklio serveriui:

AddHandler cgi-script .html .htm

Žiniatinklio serveris, kuriame veikia FastCGI:

AddHandler fcgid-script .html .htm Pastaba: tai yra išbandyta ir veikia su NTC žiniatinklio prieglobos serveriais. Jei naudojate kitą prieglobos paslaugų teikėją, kreipkitės pagalbos į juos. Be to, jei susiduriate su nuolatinėmis problemomis, galite apsvarstyti galimybę pereiti prie NTC Hosting, kad gautumėte jums reikalingus PHP optimizuotus stabilius serverius.

HTML PHP

Taip pat galite naudoti HTML kodą PHP scenarijuje. Tai gali būti labai naudinga, jei visą puslapį sukūrėte PHP, bet norite įtraukti, pavyzdžiui, tinkintą HTML formą. Viskas, ką jums reikia padaryti, tai pakeisti HTML ir PHP atidarymo žymų tvarką, atidarant puslapį naudojant PHP:

HTML naudojimas PHP:


$Fname = $_POST["Fvardas"];
$Lname = $_POST["Lvardas"];
?>


Asmeninė informacija



Pirmas vardas:

Pavardė:


echo "Sveiki, ".$Fname." ".$Lname.".
";
?>

Nors tai atrodo šiek tiek sudėtinga, tai iš tikrųjų sutaupo daug kodo. Čia mes naudojame $PHP_SELF super global, kuris leidžia mums naudoti po juo nurodytų laukų reikšmes tame pačiame faile. Paprastai tokioms formoms sukuriami du failai – pirmasis yra pati HTML forma, o antrasis – backend PHP failas, kuris atlieka visą darbą.

Jei jau turite sudėtingą PHP programą, kuri priklauso nuo daugybės failų, ir norite, kad viskas būtų kuo paprasčiau, tai gali būti labai naudinga.

PHP su NTC priegloba

NTC Hostingas siūlo savo klientams geriausią žiniatinklio prieglobos sprendimą. Visi mūsų žiniatinklio prieglobos planai palaiko HTML ir suteikia galimybę pasirinkti

(PHP 4, PHP 5, PHP 7)

htmlspecialchars – Konvertuoja specialiuosius simbolius į HTML objektus

apibūdinimas

Styga htmlspecialieji simboliai (eilutė $string [, int $ vėliavėlės = ENT_COMPAT | ENT_HTML401 [, eilutė $encoding = ini_get("default_charset") [, bool $double_encode = tiesa ]]])

HTML kai kurie simboliai turi specialias reikšmes ir turi būti vaizduojami kaip HTML objektai, kad būtų išsaugota jų reikšmė. Ši funkcija grąžina eilutę, kuri buvo konvertuota. Jei reikia konvertuoti visus galimus objektus, naudokite htmlsubjektai ().

Jei šiai funkcijai perduota įvesties eilutė ir gautas dokumentas naudoja tą pačią simbolių kodavimą, tada šios funkcijos pakanka paruošti duomenis įterpti į daugumą HTML dokumento dalių. Tačiau jei duomenyse yra simbolių, kurie neapibrėžti gauto dokumento simbolių koduotėje, ir tikitės, kad šie simboliai bus saugomi (kaip skaitiniai arba pavadinti objektai), tai ir htmlsubjektai () funkcijos (kurios tik transformuoja eilutes su atitinkamais objektais). Būtina naudoti funkciją mb_encode_numericentity().

Atliekamos šios transformacijos:

  • "&" (ampersandas) paverčiamas "&"
  • """ (dvigubos kabutės) konvertuojamas į ""“ režimu ENT_NOQUOTES nėra nustatytas.
  • """ (viena citata) konvertuojamas į """ (arba ") tik režimu ENT_QUOTES.
  • "<" (знак "меньше чем") преобразуется в "<"
  • ">" (didesnis už ženklą) paverčiamas ">"

Parametrų sąrašas

Eilutę konvertuoti ( styga).

Šių vėliavėlių, kurios nustato kabučių apdorojimo režimą, neteisingas koduotas ir naudojamo dokumento tipą, bitų kaukė. Numatytasis yra ENT_COMPAT | ENT_HTML401.

Galimos vėliavėlių parametrų reikšmės
Nuolatinis vardas apibūdinimas
ENT_COMPAT Konvertuoja dvigubas kabutes, nepakeičiant viengubų kabučių.
ENT_QUOTES Konvertuoja dvigubas ir viengubas kabutes.
ENT_NOQUOTES Dvigubos ir viengubos kabutės paliekamos nepakitusios.
ENT_IGNORE Be jokių pranešimų, atmeta netinkamas kodų sekas, užuot grąžinęs tuščią eilutę. Nerekomenduojama naudoti šios vėliavėlės, nes tai gali turėti » neigiamų pasekmių saugumui.
ENT_SUBSTITUTE Naudojant UTF-8 ir FFFD, netinkamos kodų sekos pakeičiamos Unikodo pakeitimo simboliu U+FFFD; kai naudojate kitą kodavimą, o ne grąžinate tuščią eilutę.
ENT_DISALLOWED Pakeičia netinkamus tam tikro tipo dokumento simbolių kodus Unikodo pakeitimo simboliu U+FFFD (UTF-8) arba FFFD; (kai naudojama kita koduotė), užuot palikę viską taip, kaip yra. Tai gali būti naudinga, pavyzdžiui, norint užtikrinti, kad XML dokumentai su įterptu išoriniu turiniu būtų formaliai teisingi.
ENT_HTML401 Kodo apdorojimas pagal HTML 4.01.
ENT_XML1 Kodo apdorojimas pagal XML 1.
ENT_XHTML Kodo apdorojimas pagal XHTML.
ENT_HTML5 Kodo apdorojimas pagal HTML 5.
kodavimas

Pasirenkamas argumentas, nurodantis kodavimą, naudojamą konvertuojant simbolius.

Jei nenurodyta, numatytoji kodavimo reikšmė priklauso nuo naudojamos PHP versijos. PHP 5.6 ir senesnėse versijose numatytoji reikšmė nustatyta į default_charset konfigūracijos parinktis. PHP 5.4 ir 5.5 jis naudojamas UTF-8 numatytas. Naudojamos ankstesnės PHP versijos ISO-8859-1.

Nors šis argumentas yra techniškai neprivalomas, labai rekomenduojama nurodyti teisingą kodo reikšmę, jei naudojate PHP 5.5 ar naujesnę versiją arba jei įvesties parametras default_charset gali būti nustatytas neteisingai.

Šios kodavimo funkcijos tikslais ISO-8859-1, ISO-8859-15, UTF-8, cp866, cp1251, cp1252 Ir KOI8-R yra praktiškai lygiaverčiai, darant prielaidą, kad pačioje eilutėje yra tinkamų simbolių nurodyta koduote, tada simboliai keičiami htmlspecialchars(), liks tose pačiose vietose visose šiose koduotėse.

Palaikomos šios koduotės:

Palaikomos koduotės
Kodavimas Slapyvardžiai apibūdinimas
ISO-8859-1 ISO8859-1 Vakarų Europos lotynų-1.
ISO-8859-5 ISO8859-5 Retai naudojama kirilicos koduotė (lotynų / kirilica).
ISO-8859-15 ISO8859-15 Vakarų Europos lotynų-9. Prideda euro ženklą, prancūziškas ir suomiškas raides prie Latin-1 (ISO-8859-1) kodavimo.
UTF-8 8 bitų Unikodas, suderinamas su ASCII.
cp866 ibm866, 866 DOS naudojama kirilicos koduotė.
cp1251 „Windows-1251“, „win-1251“, „1251“. „Windows“ naudojama kirilicos koduotė.
cp1252 Windows-1252, 1252 „Windows“ naudojama Vakarų Europos koduotė.
KOI8-R koi8-ru, koi8r rusiškas kodavimas.
BIG5 950 Tradicinė kinų kalba, daugiausia naudojama Taivane.
GB2312 936 Supaprastinta kinų kalba, standartinis nacionalinių simbolių rinkinys.
BIG5-HKSCS Honkonge naudojamas išplėstinis Big5.
Shift_JIS SJIS, SJIS-win, cp932, 932 Japoniškas kodavimas.
EUC-JP EUCJP, eucJP-win Japoniškas kodavimas.
MacRomanas Kodavimas naudojamas Mac OS.
"" Tuščia eilutė suaktyvina kodavimo iš scenarijaus failo (Zend multibyte), default_charset ir dabartinės lokalės nustatymo režimą (žr. nl_langinfo() Ir setlocale()), nurodyta tvarka. Nerekomenduojama naudoti.

komentuoti: Kitos koduotės nepalaikomos; vietoj to bus pritaikyta numatytoji koduotė ir bus sugeneruotas įspėjimas.

double_encode

Jei parinktis double_encode išjungta, PHP nekonvertuos esamų html objektų. Pagal numatytuosius nustatymus viskas konvertuojama be apribojimų.

Duomenų perkėlimas per $_SESSION masyvą leidžiamas vieną kartą; perkelti duomenys nedelsiant ištrinami. Tai gali būti naudinga, pavyzdžiui, „grąžinant“ į formą kitame modulyje įvestus duomenis.

Gerai, kai visos paslaugų funkcijos sujungiamos į vieną modulį, kurį pagrindiniai moduliai jungia per direktyvą request_once. Savo paslaugų funkcijų modulį vadinsime function.php ir, be minėtų trimall ir magic metodų, įtrauksime ir šias funkcijas:

  • read() – nuskaitys esamą duomenų bazę ir grąžins įrašų masyvą;
  • write($a) – įrašys $a įrašų masyvą į failą;
  • get_index_by_name ($a,$name) – ieškos atitinkamo įrašo pagal pavadinimą $name ir pateiks jo numerį (nuo nulio) arba reikšmę -1, jei įrašas nerastas. Tai naudinga norint atskirti, ar pridėti naują įrašą ir redaguoti esamą.

Be to, į funkcijų failą bus įtrauktas konfigūracijos failas ir prasidės seansas – šių galimybių gali prireikti bet kuriam jį jungiančiam moduliui.

Function.php failą
$item) ( sąrašas ($manovardas,$mano numeris) = sprogsta (DIV, $item); if ($name == mb_strtolower(trimall($manovardas),"UTF-8")) return $index; ) return -1 ; ) ?>

Atkreipkite dėmesį, kad skaitymo funkcija papildomai filtruoja įrašų masyvą iš tuščių eilučių (tik tuo atveju, jei apskritai jų neturėtų būti), o trimall pirmiausia pakeis bet kokią netuščią skiriamųjų ženklų eilutę vienu tarpu (antrasis preg_replace) ir tada pašalinkite galimus papildomus skyriklius likusios eilutės pradžioje ir pabaigoje (pirmasis preg_replace).

Taip pat yra skaitymo funkcijos niuansas, susijęs su kodo suderinamumu. Kadangi vienintelėje jos eilutėje yra anoniminė funkcija, daroma prielaida, kad naudojama ne žemesnė nei 5.3 PHP versija. Jei reikia, pakeiskite žemiau esantį kodą tokiu, kuriame filtravimo funkcija pavadinta arba visai nenaudojama, kaip čia:

Funkcijos skaitymas () ( $str=@file_get_contents (FILENAME); $a=explode("\n",$str); return $a; )

Taip pat svarbu teisingai įvesti Unikodo eilutę į mažąsias raides (žr. kode mb_strtolower). Čia nenaudojame lokalės.

Panašu, kad laikas parašyti pagrindinį index.php failą. Jis išspręs šias užduotis:

  • parodyti naujo įrašo pridėjimo formą, kurią apdoroja add.php modulis;
  • šalia papildymo formos parodysime papildomas komandas - formos išvalymą „savarankiškai iškviečiant“ scenarijų be parametrų (mygtukas čia netiks, nes neperduoda duomenų į serverį) ir nuoroda į įrašų rūšiavimo modulį, pavadintą sort.php ;
  • gauti savo darbo rezultatus iš kitų modulių skaitinio kintamojo $status forma ir rodyti atitinkamus pranešimus (masyvas $status_msg). $status reikšmė lygi nuliui bus priimta pagal numatytuosius nustatymus, ji atitinka trumpos pagalbos apie programos veikimą išvestį;
  • jei duomenų bazė nėra tuščia, parodyti jos įrašus ir suteikti perėjimą prie redagavimo ar trynimo.

Kad lentelė neapkrautų papildomais mygtukais ir nuorodomis, spustelkime pagal vardą eidami redaguoti įrašą naudodami edit.php modulį ir spustelėdami pagal lauką "skaičius" atitiks del.php modulio įrašo ištrynimą.

Štai kaip atrodo pridėjus kelis įrašus:

Scenarijaus „Mini-DB tekstiniame faile“ išvaizda

index.php failą
Vardas: Numeris: Išvalyti Rūšiuoti"; $status_msg = array ("Spustelėkite pavadinimą norėdami redaguoti arba ant numerio norėdami ištrinti įrašą", "Įrašas jau yra, reikšmė jame pataisyta", "Įrašas nurodytu numeriu nerastas ", "Duomenys, kuriuos reikia pridėti, nebuvo perkelti") ; if (empty($status)) $status = 0; echo "

".$status_msg[$status]."

"; if (count($a)>0) ( aidas " "."\n". " "."\n"; foreach ($a kaip $index=>$item) ( echo " "."\n"; sąrašas ($vardas, $numeris) = sprogti (DIV,$item); echo " "."\n". " "."\n". ""."\n"; ) echo "
vardasSkaičius
".htmlspecialchars(trimall($name)). "".intval(trimall($number)). "
"."\n"; ) apima "foot.php"; ?>

Dabar pereikime prie trūkstamų modulių. Atrodo, kad add.php darbas yra paprastas – gaukite $name ir $number kintamuosius iš index.php ir įrašykite juos į failą. Tačiau modulis turi patikrinti, ar jam perduodami netušti duomenys, taip pat gebėti atskirti situaciją, kai įvedamas duomenų bazėje jau esantis pavadinimas nuo naujo įrašo įvedimo (žr. jei ($id>- 1) ( ... ) dar ( ... ) kode). Pastaruoju atveju įrašas visada pridedamas prie pabaigos, nes bus modulis eilučių rūšiavimui abėcėlės tvarka.

Taip pat svarbu, kad $name eilutėje, „perduotoje“ per parametrų tvarkyklę, jau nebūtų „kritinių“ žymėjimo simbolių, tokių kaip „, „,< и >, o $a masyve, nuskaitytame iš duomenų failo, visos eilutės yra tokios, kokios yra, ir<>123 nebus rastas, jei po apdorojimo bus įjungtas $name<>123. Todėl įrašų paieškos funkcijai, kurią vadiname get_index_by_name , perduodama eilutė, konvertuojama į pradinę formą, naudojant standartinę htmlspecialchars_decode funkciją (pasiekiama nuo 5.1 PHP). Ta pačia forma eilutė grąžinama atgal į index.php per $_SESSION masyvą. Tai suteiks šiek tiek patogumo – įvedus naują įrašą, jo duomenys išliks formoje ir bus galima įvesti kitą įrašą, kiek kitokį pavadinimą („Ivanova“ po „Ivanov“).

Na, o grįžimas iš modulio į modulį yra visiškai standartinis – per standartinę antraštės funkciją. Atminkite, kad jį galima naudoti tik tuo atveju, jei modulis dar nieko neišvedė į naršyklę.

add.php failą
-1) ( sąrašas ($vardas,$numeris0) = sprogsta (DIV,$a[$id]); $a[$id] = $nauja_string;; $status=1; ) else ( $id = count($ a)+1; masyvo_push ($a,$nauja_eilutė); ) rašyti ($a); $_SESIJA["id"] = intval($id); ) else $status=3; $_SESSION["vardas"] = htmlspecialchars_decode($vardas); $_SESIJA["skaičius"] = intval($numeris); header("Vieta: index.php".($status==0?"":"?status=".$status)); ?>

Dabar apie redagavimą, jis bus įdiegtas edit.php. Redagavimo forma beveik tokia pati kaip ir papildymo forma, tik tingėjome sukurti atskirą formos rodymo funkciją. Dar svarbiau, kad pats modulis bus duomenų, perduodamų per redagavimo formą, procesorius, todėl turi atskirti situaciją, kai jis ką tik iškviečiamas, nuo tos, kai vartotojas paspaudė „Išsaugoti“. Paskutinė užduotis – patikrinti

If (!empty($_POST["pateikti"]) && !empty($vardas) && isset($numeris) && isset($id)) (

nustatyti, ar mygtukas buvo paspaustas ir visi duomenys perkelti. Antroji šaka -

Else if (isset($a[$id])) (

yra skirtas situacijai, kai $a masyve yra įrašas, kurio numeris perduodamas scenarijui ir jį reikia redaguoti. Įrašo numeris saugomas paslėptame HTML lauke .

Failas edit.php
Vardas: Numeris: Atgal"; įtraukti "foot.php"; išeiti (0); ) else $status = 2; antraštė ("Vieta: index.php".($status==0?"":"?status=".$status) ); ?>

Del.php įrašų pašalinimo modulis bus gana paprastas, jam tereikia gauti galiojantį įrašą $id (elemento numerį $a masyve), pašalinti atitinkamą elementą iš masyvo, perrašyti failą ir grįžti į pagrindinį modulį puslapį.

Failas del.php

Galiausiai sort.php rūšiavimo modulis pristatys naują problemą – kaip surūšiuoti Unicode eilutes abėcėlės tvarka, neskiriant didžiųjų ir mažųjų raidžių? „Tiesioginis“ rūšiavimas naudojant standartinę rūšiavimo funkciją vargu ar tinkamas – mažąją ir didžiąją raidę jis laiko skirtingais simboliais. Mes nenustatėme lokalės, juolab kad nėra vienos įvedimo formos visoms operacinėms sistemoms ją įdiegti.

Apsiribokime pasirinkimu usort iš daugybės masyvų rūšiavimo funkcijų su pasirinktine elementų palyginimo funkcija.

Naudotas „tiesioginis“ vieno simbolio Unikodo eilučių palyginimas, atrodo, nėra visiškai teisingas, bet strcmp lygina eilutes baitas po baito ir mums netinka, bet apskritai palyginimas yra teisingas bet koks eilutės Unicode yra labai sunki užduotis... Man viskas veikė sistemoje rusų ir anglų kalboms, pavyzdžiui, po rūšiavimo gaudavau natūralias žodžių eiles, pvz.

Abba, Avka, avklit, basya, Bobi, Bobik, bobik, Bobina

Failas sort.php
$cb) grąžinti 1; ) if ($alen<$blen) return -1; else if ($alen>$blen) grąžinti 1; kitaip grąžinti 0; ) usort($a,"cmp"); rašyti($a); header("Vieta: index.php"); ?>

Tereikia sukurti failą aplanke pavadinimu .htaccess , kuriame numatytąją koduotę nustatysime į Unicode ir nurodysime svetainės kabučių nustatymo direktyvas, taigi...

Tame pačiame aplanke sukurkite tuščią (0 baitų) failą data.txt (nebūtina, jei sukonfigūruotos visos teisės).

Failas.htaccess
AddDefaultCharset utf-8 php_flag magic_quotes_gpc off php_flag magic_quotes_runtime off php_flag magic_quotes_sybase off

Galite pamatyti, kas atsitiko, ir praneškite man apie problemas, kurias radote, scenarijų parašiau labai greitai, 2 žingsniais ir galbūt nieko nesugalvojau :)

pasakyk draugams