PHP dan borang. Penukar halaman dengan PHP Penukar halaman mudah dengan php

Dalam tutorial ini, kami akan mencipta penukar kulit mudah menggunakan pembolehubah PHP dan CSS.

Terdapat banyak suis sedemikian, dan beberapa kali saya telah menterjemah pelajaran mengenai topik ini. Anda boleh menukar reka bentuk sepenuhnya dengan bantuan skrip PHP khas, anda boleh menggunakan JavaScript. Dalam kes ini, skrip hanya menukar helaian gaya. Tetapi bagaimana jika kita perlu menukar hanya beberapa gaya pada halaman? Kami tidak akan membuat beberapa fail CSS yang berbeza kerana ini.

Nasib baik, ada jalan keluar dari situasi ini. Pembolehubah PHP akan membantu kami dengan ini, yang akan menukar beberapa baris dalam helaian gaya dan, dengan itu, kami akan menukar reka bentuk.

Pertama sekali, kami perlu mencipta fail PHP untuk kandungan halaman kami. Kami akan menjadikannya semudah mungkin, tetapi anda boleh membangunkan skim aplikasi yang lebih kompleks. Sila ambil perhatian bahawa helaian gaya kami mempunyai sambungan .php dan terletak dalam folder CSS.


< html >

Pembolehubah PHP Dalam Demo CSS
< meta http -equiv="Content -Type" content="text /html; charset = utf-8" />










Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut laboure et dolore magna aliqua. Untuk meminimumkan veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.





Saya mencipta beberapa kandungan dengan sedikit navigasi yang membolehkan kami menukar templat (dalam kes kami, pengepala akan berubah).

Kami akan menggunakan rentetan pertanyaan untuk menukar kulit semasa dengan menghantar nilai nama kepada fail PHP yang sama. Kami juga memerlukan skrip untuk mengingati reka bentuk yang sedang kami gunakan dan ia kekal di seluruh tapak.

Tampalkan kod berikut sebelum doctype:

session_start();


$_SESSION["template"] = $_GET["template"];

) elseif (isset($_SESSION["template"])) (
$template = "?template=".$_SESSION["template"];
) lain (
$template = "";
}
?>

Jadi inilah yang dilakukan oleh kod ini. Memandangkan kami menggunakan sesi, kami perlu memulakan sesi terlebih dahulu. Seterusnya, kami menyemak sama ada rentetan pertanyaan mengandungi nilai pembolehubah templat. Jika tidak, kami kemudian menetapkan pembolehubah sesi kepada nilai templat. Seterusnya, kami mencipta pembolehubah tempatan dengan rentetan yang akan kami tambahkan pada lokasi fail CSS. Ia akan membolehkan kami menghantar nama templat yang ingin kami gunakan ke fail PHP, mencipta gaya CSS.

Sekarang kita boleh membuat penukar templat. Kami menggunakan nombor 1-3 untuk mengenal pasti corak yang diingini:

tukar tema:
1
2
3

Kami juga perlu menukar lokasi fail PHP yang bertanggungjawab untuk menjana CSS.

Kami kini bersedia untuk mencipta fail PHP yang akan bertanggungjawab untuk mencipta templat kami. Kami perlu memberitahu penyemak imbas pada awal fail bahawa gaya CSS akan terkandung di sini. Baris kod berikut akan membantu kami dengan ini:

Header("Content-type: text/css; charset: UTF-8");

Kini anda hanya boleh menggunakan fail ini seperti lembaran gaya biasa dengan keupayaan untuk memasukkan pembolehubah PHP. Ini membuka peluang besar kepada anda bukan sahaja untuk menukar penampilan halaman, tetapi juga untuk menggantikan kandungan secara dinamik.

Oleh kerana kita hanya mempunyai 3 kemungkinan corak, kita perlu memastikan bahawa hanya 3 nombor ini boleh digunakan. Jika tiba-tiba, seseorang dalam rentetan pertanyaan cuba menghantar nilai lain, templat lalai akan dibuka di hadapan matanya (dalam kes kami, ia adalah "1").

$numberoftemplates = 3;
if (isset($_GET["template"])) (
$template = $_GET["template"];
if ((!is_numeric($template)) || ($template > $numberoftemplates) || ($template< 0)) {
$template = 1;
) lain (
$template = bulat($template);
}
) lain (
$template = 1;
}

Sekarang kita mempunyai pembolehubah tempatan yang dipanggil $template yang mengandungi nombor templat untuk digunakan. Untuk kejelasan, anda boleh menguji ini dengan menggunakannya sebagai ulasan CSS:

echo "/*====== templat digunakan: ".$template." ======*/";

Anda kemudiannya boleh beralih ke fail style.php dan lihat inskripsi berikut dalam kod sumber: “/*====== template used: 1 ======*/”. Jika penyemak imbas mengakses style.php?template=2, maka akan ada nilai yang berbeza.

Memandangkan kami tidak mencipta helaian gaya yang berasingan untuk setiap templat, kami hanya perlu menentukan perbezaan antara reka bentuk kami dalam satu fail. Kita boleh menulis perubahan ini ke dalam tatasusunan:

$css = tatasusunan(
"header-background" => array(
1 => "url(../images/header-bg-1.jpg) no-repeat",
2 => "url(../images/header-bg-2.jpg) no-repeat",
3 => "url(../images/header-bg-3.jpg) no-repeat"
),
"header-h1-colour" => tatasusunan(
1 => "#fff",
2 => "#fff",
3 => "#666"
),
"header-h1-font" => tatasusunan(
1 => "bold normal 35px Helvetica, Arial, sans-serif",
2 => "bold normal 35px Trebuchet MS, Arial, sans-serif",
3 => "normal normal 35px Georgia, serif"
);

Seperti yang anda lihat, saya telah memperuntukkan 3 elemen dalam tatasusunan kepada setiap pemilih CSS.

Sekarang, di tempat yang betul, kita hanya perlu menggantikan:

latar belakang:;

dan kami, bergantung pada templat, akan mempunyai imej latar belakang yang berbeza.

Itu sahaja yang anda perlukan. Gunakan binaan sedemikian sepanjang fail. Dengan cara ini anda boleh menggantikan banyak elemen berbeza pada halaman. Lembaran gaya penuh:

* {
margin:0;
padding:0;
}
badan (
saiz fon:.8em;
latar belakang:#F3F4F9;
font-family:Arial;
text-align:center;
}
#bungkus (
lebar: 990px;
margin:0 auto;
text-align:left;
}
#nav (
padding:10px 0;
lebar: 990px;
limpahan:auto;
}
#logo(
float:left;
}
#switcher (
float:right;
lebar: 170px;
text-align:right;
padding:45px 20px 0 0;
}
#switcher span(
float:left;
padding:6px 10px 0 0;
}
#penukar a (
paparan:blok;
float:left;
padding:4px 8px;
sempadan:1px pepejal #ccc;
latar belakang:#eee;
jidar:0 0 0 2px;
}
#switcher a:hover (
latar belakang:#fff;
}
#kepala(
jelas:keduanya;
latar belakang:;
ketinggian: 206px;
}
#header h1 (
text-align:right;
padding:155px 25px 0 0;
warna:;
fon:;
}
#col1(
lebar: 450px;
float:left;
jidar:20px 0 0 0;
}
#col2(
lebar: 450px;
float:right;
jidar:20px 0 0 0;
}

Itu sahaja! Selamat menikmati!

Dalam semua bahasa di dunia terdapat perkataan "suis",
dan hanya dalam bahasa Rusia - "suis"!
Mikhail Zadornov

Hari ini kita akan bercakap tentang elemen sintaks sedemikian PHP seperti suis. Jangan keliru dengan tag HTML. , yang juga mencipta butang radio. Jadi,

penyataan suis

Tugas: bergantung pada apa yang pengguna pilih, paparkan pilihan yang diperlukan untuknya. Mari lihat kod:

Contoh 1. Halaman HTML dengan borang:

tinjauan pendapat

Masukkan gred Rusia anda:

Dan inilah kod pengendali:

Contoh 2. Pengendali borang (fail cup6.php):

jika (! $skor ) (
gema();
) elseif ($skor == 1 ) (
echo ("Seram!" );
) elseif ($skor == 2 ) (
echo ("Gagal %-(" );
) elseif ($skor == 3 ) (
echo ("UD..." );
) elseif ($skor == 4 ) (
echo("Baik" );
) elseif ($skor == 5 ) (
echo ("Hebat!" );
) lain (
gema ( "Penilaian yang menarik...");
}
?>

Saya fikir anda semua dengan mudah mengetahui kod tersebut dan memahami cara ia berfungsi. Secara umumnya, kod ini betul, dan tiada ralat di dalamnya (nampaknya ...), tetapi ia sangat menyusahkan: banyak keadaan, agak sukar untuk menjejaki di mana. Apa nak buat? Sekarang kita memerlukan suis suis.

Suis kelihatan seperti ini:

Contoh 3. Kemunculan suis suis:

suis (ungkapan ) (
nilai kes1:
// arahan yang dilaksanakan jika ekspresi = nilai1
pecah; // tidak perlu
nilai kes2:
// arahan yang dilaksanakan jika ekspresi = nilai2
pecah; // tidak perlu
...
lalai:
// arahan untuk dilaksanakan jika tidak dijumpai
// tiada padanan
pecah; // tidak perlu
}

Cara keseluruhan blok ini berfungsi:

  1. Nilai ungkapan dinilai.
  2. Nilai ungkapan disemak terhadap nilai 1 . Jika ia sama, maka kod selepas perintah case value1 dilaksanakan:
  3. Jika nilai ungkapan tidak sama dengan nilai 1, ia akan disemak dengan nilai 2, 4 dan seterusnya.
  4. Jika tiada padanan ditemui, maka kod blok lalai akan dilaksanakan.

Blok lalai adalah pilihan: ia boleh ditinggalkan.

perintah break(); selepas setiap blok kod diperlukan supaya selepas kod dilaksanakan, semua kes berikutnya hanya dilangkau.

Sekarang mari kita tukar kod contoh kedua supaya lebih mudah! Sebagai contoh, seperti ini:

Contoh 4. Kod contoh 2 yang diubah suai (fail cup6.php):

suis ($skor ) (
kes 0:
gema ( "Anda masih memasukkan penilaian tentang sesuatu ...");
pecah;
kes 1:
echo ("Seram!" );
pecah; kes 2:
echo ("Gagal %-(" );
pecah;
kes 3:
echo ("UD..." );
pecah;
kes 4:
echo("Baik" );
pecah;
kes 5:
gema ("Hebat!" );
pecah;
lalai:
gema (
"Penilaian yang menarik...");
}
?>

macam ni. Mudah dan selesa. Hasil kerja ini ditunjukkan dalam angka:

Sebelum selepas

Sambungan

Selalunya adalah lebih mudah untuk memecahkan kod kepada beberapa bahagian dan memaparkannya di tempat yang betul. Untuk memasukkan kandungan satu fail ke dalam fail lain, kita boleh menggunakan dua arahan: require(); dan sertakan();

memerlukan()

Penampilan pasukan:

Contoh 6. Rupa perintah require() :

memerlukan("nama fail");

Sebelum memulakan skrip PHP mencari semua perintah memerlukan(); Dan menggantikannya (perintah) dengan kandungan fail yang ditentukan.

Penggantian hanya berlaku sekali sebelum skrip bermula, jadi anda tidak akan dapat memasukkan perintah require(); dalam badan gelung!

Fail yang anda sertakan dengan perintah require(); mungkin mengandungi PHP-kod. Kod ini akan dilaksanakan.

sertakan()

Penampilan pasukan:

Contoh 7. Kemunculan perintah include() :

include("nama fail");

include() perintah; memasukkan dan melaksanakan kandungan fail yang ditentukan, dan ini berlaku semasa pelaksanaan skrip setiap kali perintah inlcude () ditemui; .

Walaupun persamaan yang jelas, require(); dan sertakan(); serius berbeza: perintah memerlukan (); dilaksanakan sekali sebelum permulaan pelaksanaan skrip, dan inlcude(); setiap kali ia berlaku dalam kod dan anda boleh meletakkan perintah inlcude() dengan mudah; ke dalam kitaran.

Bagaimana ia boleh membantu dalam kehidupan: hampir setiap tapak mempunyai bahagian halaman sedemikian yang tidak berubah di seluruh tapak - ini adalah, sebagai contoh, pengepala (pengepala, pengepala) tapak dan pengaki ("pengaki", bawah) daripada tapak tersebut. Untuk tidak mencetaknya pada setiap halaman sekali lagi, anda harus meletakkannya dalam dua fail berasingan (contohnya, header.php dan footer.php) dan memasukkannya mengikut keperluan.

Kod untuk halaman sedemikian mungkin kelihatan seperti ini:

Contoh 8. Menyambungkan pengepala dan bahagian bawah halaman daripada fail luaran:

memerlukan("header.php"); // berikut ialah teks halaman semasa
memerlukan("footer.php");
?>

Penggunaan require() dalam contoh ini adalah lebih baik, kerana kami hanya memasukkan fail ini sekali sahaja.

memerlukan_sekali() dan inlcude_sekali()

Jika anda perlu memastikan bahawa fail tertentu dimasukkan ke dalam kod sekali sahaja, maka bukannya require(); dan sertakan(); perlu menggunakan require_once(); dan memerlukan_sekali();

Lihat contoh:

Contoh 9. Penggunaan dua kali include_once():

include_once("top.php");
// beberapa kod di sini include_once("top.php");
?>

Dalam contoh sebelumnya, fail top.php hanya akan dimasukkan ke dalam kod halaman sekali, walaupun terdapat dua arahan dalam kod tersebut.

Itu sahaja...

Nah, nampaknya itu sahaja yang saya ingin beritahu anda untuk hari ini. Adakah akan ada sebarang masalah PHP- tulis kepada saya, saya akan membantu!

Sebagai kerja rumah: buat kalkulator mudah. Sebagai petunjuk, berikut ialah gambar untuk anda:

Dan satu perkara lagi: adakah patut bertanya "kerja rumah" itu sama sekali?

Bukan rahsia lagi bahawa cara paling biasa halaman html berinteraksi dengan tapak adalah melalui borang. Borang (iaitu, elemen html yang dibentuk oleh teg borang) juga digunakan oleh perkhidmatan e-mel percuma, kedai dalam talian dan banyak jenis tapak lain.

Memproses borang ringkas dengan PHP adalah mudah. Walau bagaimanapun, dari semasa ke semasa terdapat keperluan untuk memproses borang yang mengandungi beberapa medan jenis yang sama, walaupun pada hakikatnya bilangannya boleh berbeza-beza dalam julat yang luas dan bilangannya tidak diketahui terlebih dahulu. PHP menyediakan untuk kes sedemikian pemprosesan medan dari jenis yang sama dengan tatasusunan nilai.


Mari kita lihat lebih dekat pilihan untuk pelbagai jenis medan.

Medan teks

Untuk tujuan artikel ini, medan teks merujuk kepada elemen yang dicipta oleh teg input dengan nilai parameter jenis teks dan teg textarea. Ia adalah paling mudah untuk mengatur pemprosesan borang yang terdiri daripada beberapa medan tersebut. Penyenaraian di bawah menunjukkan penanda html untuk borang sedemikian.






Seperti yang anda boleh lihat daripada penyenaraian, nama untuk elemen bentuk, dari sudut pandangan PHP , ialah elemen tatasusunan. Oleh itu, skrip PHP yang akan memproses borang ini akan merawat semua banyak medan teks borang ini sebagai tatasusunan tunggal. Elemen individu boleh diakses melalui indeks atau dikira menggunakan senarai dan setiap arahan, seperti dalam contoh berikut.

n"; ?>

Suis

Kotak semak ( kotak semak ) dalam artikel ini ialah elemen yang dicipta oleh teg input dengan nilai parameter jenis sama dengan kotak semak . Borang untuk menggunakan bilangan pembolehubah "suis" dibina dengan cara yang sama. Ambil perhatian bahawa pilihan nilai butang radio tertentu (iaitu, nilai harta nilai) adalah tidak penting. Satu contoh ditunjukkan dalam penyenaraian di bawah:






Walau bagaimanapun, pemprosesan borang sedemikian berbeza daripada pemprosesan yang diterangkan untuk medan teks. Dalam kes ini, adalah perlu untuk menentukan sama ada pelawat tapak telah mendayakan satu atau satu suis lain atau tidak. Jika disertakan, maka unsur tatasusunan yang sepadan wujud, jika tidak, maka ia tiada. Penyenaraian berikut ialah contoh skrip PHP yang mencetak butang radio yang didayakan:

Butang radio

Sebelum menerangkan pemprosesan butang radio, perlu diingat bagaimana ia berfungsi. Intipati butang radio (elemen yang dicipta oleh teg input dengan nilai parameter jenis sama dengan radio ) ialah dengan memilih satu butang, pengguna secara automatik menyahpilih butang lain daripada set yang sama. Butang digabungkan menjadi satu set dengan sangat mudah: semua butang dalam set mempunyai nama yang sama.

Tetapi nilai (iaitu, parameter nilai) butang dalam set adalah berbeza. Dan nilai butang yang dipilih dengan nama set akan dihantar ke tapak. Seperti medan teks dan butang radio, nama set butang radio mesti diformatkan sebagai nama elemen tatasusunan dalam PHP. Contoh borang sedemikian ditunjukkan dalam penyenaraian berikut:

// set pertama butang
// set kedua butang
// set ketiga butang

Mengendalikan butang radio menggabungkan idea, menggunakan kedua-dua medan teks dan butang radio dalam pemprosesan. Jika pengarang halaman html tidak menetapkan nilai lalai, dan pengguna tidak memilih butang tertentu dalam set butang radio, maka elemen ini tidak akan berada dalam tatasusunan (seperti untuk butang radio).

Jika butang dipilih, maka elemen tatasusunan yang sepadan akan mengandungi nilainya (seperti untuk medan teks). Di bawah ialah senarai contoh yang mengendalikan borang dengan berbilang set butang radio.

n"; ?>

Oleh itu, tidak ada yang rumit dalam memproses bentuk kompleks.

Apa lagi yang perlu dibaca