<link rel="stylesheet" href="//simgbb.com/2801/ibb.css">
Bu stil için de rel="preconnect"
kullanabilirsin.
Ayrıca yazmadan geçemeyeceğim: Çok reklam var.
Linke tıkladığınızda görünüyor. Ama sonra sayfa yenileniyor. Yeni sayfa yüklenene kadar geçen sürede butonu görüyorsunuz. Sonra sayfa yenilendiği için her şey ilk haline geri dönüyor.
Linke tıkladığınızda sayfanın yenilenmesi gerekiyorsa, sayfa yenilendikten sonra bir şekilde sayfanın yenilendiğini anlayıp butonu görünür yapmanız gerek.
linke tıkladığınızda aynı sayfaya "?idcek=..." şeklinde parametre gönderiyorsunuz ve aynı sayfaya bu parametreyle gelmiş oluyorsunuz. buradan anlayabilirsiniz.
js tarafında butonu display:none yapmadan önce, query string'te idcek parametresi var mı diye kontrol edebilirsiniz. Eğer varsa butonu display:none yapmazsınız.
Belirttiğiniz 3 satırlık js kodu yerine aşağıdaki script tag'ı içeriklerini yazıp deneyebilirsiniz.
getQueryParam fonksiyonunu ChatGPT'ye yazdırdım, test etmedim.
<script>
function getQueryParam(key) {
var regex = new RegExp('[?&]' + key + '(=([^&#]*)|&|#|$)');
var results = regex.exec(window.location.search);
if (!results) return null; // anahtar yoksa null döndür
if (!results[2]) return ''; // anahtara değer atanmamışsa veya "=" işareti yoksa boş string döndür
return decodeURIComponent(results[2].replace(/\+/g, ' '));
}
const thisProjectId = "<?=$yeniprojegoster['yeniproje_id']?>";
const queryString_cekId = getQueryParam('idcek');
if(queryString_cekId !== thisProjectId) { document.getElementById("firstHref").style.display = "none"; }
document.getElementById("secondHref").onclick = function() {
document.getElementById("firstHref").style.display = "block";
}
</script>
Bu script ile, sayfaya idcek parametresiyle gelinmiş mi ve bu parametrenin değeri php'deki $yeniprojegoster['yeniproje_id']
değeriyle aynı mı diye bakıyoruz.
Çok da detaylı inceleyemedim ama sanki şu satırların sıralaması hatalı:
// Bind variables to the prepared statement as parameters
mysqli_stmt_bind_param($stmt, "s", $param_username);
// Set parameters
$param_username = $username;
Yani $param_username
değişkenine henüz değer atamamışken bind etmeye çalışıyor olabilirsin. Bu da "?" karakteri yerine değer girilememesine neden oluyordur. Çünkü aldığın hata da "?" ile alakalı:
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '?' at line 1
Şimdi örnek yazmam mümkün değil ama sanırım şu kütüphaneler yardımcı olabilir:
box-shadow için: react-native-neomorph-shadows
gradient için: react-native-linear-gradient
ChatGPT4'ten bu kütüphaneleri kullanarak bir örnek hazırlamasını istedim:
import React from 'react';
import { View, Text, TouchableOpacity } from 'react-native';
import LinearGradient from 'react-native-linear-gradient';
import { Neomorph } from 'react-native-neomorph-shadows';
const StyledButton = () => {
return (
<Neomorph
inner // <- enable shadow inside of neomorph
swapShadows // <- change zIndex of each shadow color
style={{
shadowRadius: 4,
borderRadius: 48,
backgroundColor: '#FFF',
width: 200,
height: 60,
alignItems: 'center',
justifyContent: 'center',
}}>
<TouchableOpacity
style={{
borderRadius: 48,
borderColor: '#FFF',
height: '100%',
width: '100%',
alignItems: 'center',
justifyContent: 'center',
}}
activeOpacity={0.6}>
<LinearGradient
colors={['#FFF2DC', '#FFF']}
style={{
position: 'absolute',
left: 0,
right: 0,
top: 0,
height: '100%',
borderRadius: 48,
}}
start={{ x: 0, y: 0 }}
end={{ x: 1, y: 0 }}/>
<Text style={{ color: '#CE7F41', fontWeight: 'bold' }}>Test Button</Text>
</TouchableOpacity>
</Neomorph>
);
};
export default StyledButton;
Ama tabi muhtemelen düzgün çalışmaz. GPT bu kütüphanelerin çok eski hallerinden örnek veriyor.
Ama sen kütüphanelerin dokümantasyonu üzerinden ihtiyacına uygun bi'şeyler yapabilirsin.
Bol bol YouTube videoları izleyip örnekleri kendin de tekrarlayarak öğrenmek...
Bir yazılım şirketinde işe girip gerekirse ücretsiz çalışarak işi uzmanlarından öğrenmek...
Dokümantasyonu takip etmek...
Hazine ve Maliye Bakanlığının 1Milyonİstihdam projesine katılıp js derslerini almak...
Udemy'den kurs alıp...
Bunların hepsi birer yol ama bir konuyu derinlemesine öğrenmek için bence en iyi yol onu öğretmek:
JS üzerine yazılar yazacağın bir blog sayfası aç ve js'nin nasıl kullanılabileceğiyle ilgili özgün içerikler üret. En az haftada 2 tane yayın oluştur.
Örneğin bir yayınında reduce fonksiyonunun ne şekillerde kullanılabileceğini örneklerle açıkla. Hiç JS bilmeyen birine JS öğretirmiş gibi yaz. Konu aldığın fonksiyonun tüm özelliklerini örneklerle açıklamanın yanında nasıl ilk görünen amacı dışında kullanılabileceğine dair de örnekler hazırlayıp temel mantığını iyice öğret.
JS üzerine "zero to hero" seti oluştur ve düzenli olarak içerik gir. Kaliteli ve özgün içerik üretmek birinci hedefin olsun.
Yani senin hedefin JS öğrenmek değil, hiç bilmeyen birini JS uzmanı yapacak özgün bir eğitim seti oluşturmak olsun.
Böyle bir eğitim içeriği oluştururken doğru ve kaliteli bir iş çıkarmak için fonksiyonları ve js mantığını derinlemesine inceleme mecburiyetinde kalacaksın ve tam olarak ne araştırman gerektiğini bileceksin. Çünkü başlangıçta konuyu sen de iyi bilmiyorsun ve hiç bilmeyen birinin neleri merak edebileceğine dair sağlam fikirlerin var.
Blog sitenin tasarımı çok önemli değil. Önemli olan içeriğin kalitesi. Bu nedenle herhangi bir ücretsiz blog sayfası sağlayıcı platform kullanabilirsin.
https://app.gitbook.com kullanmayı öğrenmeni ve içeriklerini buraya girmeni öneririm. İçeriklerini prototurk'tekine benzer şekilde markup dili kullanarak yazarsın ve github'la doğrudan entegre çalışabilirsin.
İngilizce kesinlikle gerekiyor. Onu geliştirmelisin. Hatta İngilizceyi çözünce orda da durmayıp başka bir dil daha öğrenmeni öneririm. Özellikle Araplarda (Arabistan, Katar) iyi para var. Zaten gelecekte de çok kullanacağız gibi görünüyor...
Yazıyla anlatmak zor. Bir yol sunayım:
- Öncelikle css dosyası projenin içinde olmalı.
- Düzeltmek istediğin alan sağ tık > Inspect dedikten sonra stillerini görebiliyorsun.
- Bu stiller üzerinde istediğin bir değişiklik yaptın. Tarayıcıda gözüne hoş görünür hale getirdin.
- Bu düzelttiğin stilin sağ üst tarafında stil dosyasının adı yazıyor. Ona basıyorsun.
- Sources sekmesinde ilgili stil dosyası tarayıcının gördüğü haliye açılıyor. Az önce yaptığın değişiklikler de burada. Bu dosyanın içindeki her şeyi kopyala ve sendeki asıl dosyaya yapıştır.
- Böyle adım adım göre göre değişikliklerini yapabilirsin.
Aylık 200 Dolar'cık karşılığında 28.500 defa harita görüntülemeye izin verdiği yazıyor sitesinde.
Kaynak (20.06.2023)
Şu alternatifler varmış: (Kaynak)
1) OpenLayers ücretsiz
2) TomTom Günlük 50.000 istek ücretsiz
3) MapBox Aylık 100.000 istek ücretsiz
4) Here Aylık 30.000 istek ücretsiz
5) Distancematrix.ai Her 1000 istek için 2$
Detaylı incelemedim translate çevirisiyle yazıyorum:
Hangisini kullanacaksın?
Param yok diyorsan OpenLayers
Navigasyona ihtiyacın varsa TomTom
Harita görselleştirmelerine ihtiyacın varsa Here
Özel haritalara ihtiyacın varsa Mapbox
Yönlendirme verilerine ihtiyacınız varsa Distancematrix.ai
Redux daha beceriklidir.
Ama basit bir state yönetimine ihtiyacın varsa veya kolayına geliyorsa ContextAPI da iyidir.
Veya global değişkenler ve custom hook'lar üzerinden kendine özgü, daha az karmaşık bir yapı da uydurabilirsin.
Böyle bir endişen varsa sorunu önce ChatGPT'ye sorabilirsin. Muhtemelen "bunu da sormazsın bee" dedirtecek bir soruya kolaylıkla cevap verebilir.
Soracağın konuda yabancı dillerde kaynaklar bulduysan bunların çevirisini ve açıklamasını yine ChatGPT'ye yaptırabilirsin.
Hata aldığın bir kod bloğunu kopyalayıp GPT'ye yapıştırabilir ve anlamadığını yeri sorabilirsin. Kod üzerinde uzun uzun tartışabilirsin.
Muhtemelen sadece sepet sayfasına dahil ettiğin, diğer sayfalara çağırmadığın bir fonksiyon var. Bu fonksiyonu bulmalısın.
En kısa yol olarak (yanlış da olsa) header'ının bulunduğu ve her sayfaya çağırdığın dosyayı aç.
header tag'ının hemen altına script tag'ı aç. Butonların çalışması için gereken js kodunu buraya yaz.