bu tarz bir proje için framework kullanmasan bile olur. ancak ben standartları yakalayayım yarın öbürgün geliştirmeyi birkaç kişi yaparız ekibi büyütürüm ya da öğrendim frameworke göre işe girerim diyorsan şu an revançta olan Laravel. Tecrübelerimden de söyleyebilirim ki geliştirme yapmak için mükemmel bir ortam, biraz daha basit sade bir framework istersen Codeigniter'ın yeni versiyonu hiç fena değil. Laravel symfony componentleri üzerine yazılmış olsada popülerlik olarak şu an symfony'i geçmiş durumda bunuda belirteyim. Zend'e hiç girme değmez, diğerleri de çok popüler frameworkler değiller.
şunu denedin mi? https://gist.github.com/pklauzinski/b6f836f99cfa11100488
$.expr[':'].icontains = $.expr.createPseudo(function(text) {
return function(e) {
return $(e).text().toUpperCase().indexOf(text.toUpperCase()) >= 0;
};
});
kısaca :contains yerine :icontains kullanıyorsun kullanım aynı.
Evet kesinlikle sadece dosya isimlerini tut, hem veritabanında daha az yer kaplarlar veri arttıkça gecikme yaşamazsın hem de client-side tarafında linklendirmek daha esnek olur senin için.
Güncel sürümünü kullanıyorsan şu şekilde yapabilirsin;
$db->update('uyeler')
->set('bildirim', '+1');
$db->update('uyeler')
->set('bildirim', '-1');
ilk olarak 2. bir sunucun olmalı. Bu sunucu, güncellemeleri vereceğin sunucun olacak. Örneğin şu adreste versiyonu json formatında tutacaksın;
https://site.com/version.json
Ve mevcut script'de yönetim tarafında bu adrese istek atıp güncel versiyonu kontrol edeceksin. Bu arada mevcut scriptinde de versiyon'u tutacağın bir php dosyan olmalı.
Eğer mevcut scriptindeki versiyon ile 2. sunucudaki versiyon aynı değilse yeni versiyon var gibi kabul edip yükleme sayfasına yönlendireceksin.
Yükleme sayfasında, 2. sunucudaki güncel dosyalarının zipli halini curl yardımı ile indirteceksin.
Ve phpdeki zip sınıfı yardımıyla bunu açacaksın, otomatik olarak varolanların üzerine yazılacak zaten dosyalar. Böylece versiyonun güncellenmiş olacak.
Burada dikkat etmen gereken şey, güncelleme yaptığın dosyaların tamamen sistem dosyası olması gerek ve üzerinde oynanmamış olması gerek. Tıpkı wordpressde olduğu gibi, core dosyaları üzerinde kimse değişiklik yapmadığı için güncelleme işlemi yapılabiliyor. Eğer sen core dosyalarında bir değişiklik yapıp yeni versiyona güncellersen bu güncellemelerin gidecektir.
domain ve hosting olduktan sonra, ftp ile hostinge bağlanıp resmini yükleyebilirsin.
tam olarak takıldığın yer nedir?
kısaca;
.elem {
position: sticky;
position: -webkit-sticky;
top: 0;
}
ob = output buffering = çıktı tamponlama diyebiliriz.
Örneğin yorum gönderme işlemini ajax ile yaptığını düşünelim. Ve listelenen yorumlarıda bir php dosyasında tutuyorsun. Ve ajax ile yorum gönderdiğinde bu yorum sayfasını kullanmak istiyorsun.
Fakat require ya da include kullanırsan direk çıktıyı bastıracaktır. Bu durumda ob kullanarak çıktıyı sonradan yazdırmak üzere saklayabilirsin.
ob_start();
require 'view/comment.php';
$output = ob_get_clean();
//echo $output;
echo etmediğin sürece çıktın gözükmeyecektir.
Çok güzel bir soru olmuş aslında :) Normal şartlarda eğer şöyle bir yapın olsaydı;
let array = ['test', 'deneme'];
let clone_array = array;
clone_array.push('yeni değer');
console.log(clone_array); // ["test", "deneme", "yeni değer"]
console.log(array); // ["test", "deneme", "yeni değer"]
referans alarak kopyalayacaktı. Ancak ES6 ile spread operatörünü kullanarak referanssız bir şekilde kopyalayabiliyoruz.
let array = ['test', 'deneme'];
let clone_array = [...array];
clone_array.push('yeni değer');
console.log(clone_array); // ["test", "deneme", "yeni değer"]
console.log(array); // ["test", "deneme"]
Ancak aynı örneği senin örneğindeki gibi dizi içerisinde obje tutarak yaparsak diziyi referanssız kopyalasada içindeki objeyi referanslı kopyalıyor. Dolayısı ile kopya dizide değişiklik yapınca mevcut diziyide etkiliyor.
let array = [
{
"name": "Tayfun",
"surname": "Erbilen"
}
];
let clone_array = [...array];
clone_array[0].name = "Recep";
console.log(clone_array); // {name: "Recep", surname: "Erbilen"}
console.log(array); // {name: "Recep", surname: "Erbilen"}
Biraz araştırma yaparak şöyle objeleride referanssız kopyalamak için JSON objesini kullanabilirsin.
let array = [
{
"name": "Tayfun",
"surname": "Erbilen"
}
];
let clone_array = JSON.parse(JSON.stringify(array));
clone_array[0].name = "Recep";
console.log(clone_array); // {name: "Recep", surname: "Erbilen"}
console.log(array); // {name: "Recep", surname: "Erbilen"}
Yani senin örneğinde ise şöyle olacak;
let sourceList = [
{
sourceName: 'ASdasd',
channels: [{
channelName : 'aaa'
}]
},
{
sourceName: 'ASdasd',
channels: [{
channelName : 'bbb'
}]
},
{
sourceName: 'ASdasd',
channels: [{
channelName : 'ddd'
}]
},
{
sourceName: 'ASdasd',
channels: [{
channelName : 'ggg'
}]
},
{
sourceName: 'ASdasd',
channels: [{
channelName : 'ssss'
}]
}
];
let arr = JSON.parse(JSON.stringify(sourceList));
const searchParameter = 'bbb'
for(let source of arr) {
let _arr = source.channels.filter(c => {
return c.channelName.indexOf(searchParameter) > -1;
})
source.channels = _arr;
}
console.log(arr);
console.log(sourceList);
İlk olarak yapacağın şey, giriş yaptığında e-posta adresini SESSION'da tutmak.
İkinci olarak yapacağın şey, veritabanında e-posta alanını unique olarak ayarlamak. Yani benzersiz olacak, dolayısı ile hiçbir kontrol yapmadan güncelleme işlemini doğrudan yaptığında zaten 2. bir kişi aynı e-posta adresini kullanıyorsa bu güncelleme işlemi başarısız olacak çünkü e-posta alanın unique olduğu için hata verecek. Böylece 2. sorgu yapmadan işini çözeceksin. Kısaca;
$sessionEposta = $_SESSION['eposta'];
$eposta = "[email protected]";
$uye_id = 5;
if ($eposta == $sessionEposta){
echo "Şu an güncel olarak kullandığın e-posta adresin aynı.";
} else {
$update = $db->prepare('UPDATE uyeler SET eposta = :eposta WHERE uye_id != :uye_id');
$result = $update->execute([
'eposta' => $eposta,
'uye_id' => $uye_id
]);
if ($result){
echo "E-posta adresin başarıyla değiştirildi.";
} else {
echo "E-posta adresi, bir başkası tarafından kullanılıyor. Lütfen kontrol et.
}
}