Ekstra olarak size 'gerçekten açıklayıcı şekilde sorular sorduğunuz' için de teşekkür etmek istiyorum :)
Buradaki cevap der ki FIND_IN_SET
sadece bir değer aramak için kullanılabilir.
Hemen aşağısında bulunun bu cevap da bir 'trick' ile yakın da olsa tam bir çözüm bulamamış.
Bu cevap ise aradığınız şeye en yakın cevap gibi ama sorgu yapısı dinamik olduğu için aradığınız değer sayısına göre kodda düzenleme yapmanız gerekecekir.
Mobilden yazmak işkence. join ile tek sorguda halledilebilir gibime geliyor. Yarın test edip yazacağım
Öncelikle doğru anlamış mıyım diye bir sorayım. Sizin kodlamış olduğunuz bir sistem mevcut ve bu sistemi satış veya başka yollarla başkalarına veriyorsunuz ve onlar da kendi domainlerine bu sistemi kuruyorlar. Ama kendi domainlerine kurmuş oldukları sisteme sizin siteniz üzerinden login olmaları gerekiyor. Kullanıcı adı ve şifreleri sizin sunucularınızda mevcut. Ve eğer doğru giriş yapılırsa karşı tarafın sitesinde session aktif olup giriş yapabilecekler.
Veri tabanı yapınızın şemasını örneklendiri
query
ile yaparsan SQL Injection a açık olursun, kullanıcıdan gelen veriye güvenme hiçbir zaman, prepare
ile yap.
if ($_POST) {
$_POST = array_map('trim', $_POST);
extract($_POST);
$hata = "";
if (isset($_FILES['foto'])) {
if ($_FILES['foto']['error'] != 0) {
$hata .= 'Dosya yüklenirken hata gerçekleşti lütfen daha sonra tekrar deneyiniz.';
} else {
$dosya_adi = strtolower($_FILES['foto']['name']);
if (file_exists('images/' . $dosya_adi)) {
$hata .= " $dosya_adi diye bir dosya var";
} else {
$boyut = $_FILES['foto']['size'];
if ($boyut > (1000 * 1000 * 5)) {
$hata .= ' Dosya boyutu 2MB den büyük olamaz.';
} else {
$dosya_tipi = $_FILES['foto']['type'];
$dosya_uzanti = explode('.', $dosya_adi);
$dosya_uzanti = $dosya_uzanti[count($dosya_uzanti) - 1];
if (!in_array($dosya_tipi, ['image/png', 'image/jpeg', 'image/gif']) || !in_array($dosya_uzanti, ['png', 'jpg', 'gif'])) {
//if (($dosya_tipi != 'image/png' || $dosya_uzanti != 'png' )&&( $dosya_tipi != 'image/jpeg' || $dosya_uzanti != 'jpg')) {
$hata .= ' Hata, dosya türü JPEG veya PNG olmalı.';
} else {
$check = $baglanti->prepare("SELECT ad FROM uyeler WHERE ad = ?");
$check->execute([$ad]);
if ($check->rowCount()) {
$hata = 'Bu ad kullanılıyor!';
}
else {
$foto = $_FILES['foto']['tmp_name'];
copy($foto, 'uyeler/' . $dosya_adi);
//Eklencek veriler diziye ekleniyor
$satir = [
'foto' => $dosya_adi,
'ad' => $ad,
'whatsapp' => $whatsapp,
'uzmanlik' => $uzmanlik,
'ozgecmis' => $ozgecmis,
];
// Veri ekleme sorgumuzu yazıyoruz.
$durumx = $baglanti->prepare("INSERT INTO uyeler SET foto=:foto, ad=:ad,whatsapp=:whatsapp,uzmanlik=:uzmanlik,ozgecmis=:ozgecmis")->execute($satir);
if ($durumx)
echo '<script>Swal.fire("Başarılı","Kayıt Başarılı","success").then((value)=>{ window.location.href = "index.php"});</script>';
}
}
}
}
}
}
if($hata!=""){
echo '<script>Swal.fire("Hata","'.$hata.'","error");</script>';
}
}
$text = 'Türkçe karakter içeren metin';
$invalid = 'Türk';
if (preg_match('/^[\w ]{15,155}$/u', $text)) {
echo 'Geçerli';
}
Bu işinizi büyük oranda görecektir fakat aşmanız gereken başka sorunlar da var. Kullanıcı sadece boşluk girerek de bu kontrolü geçebilir. Bunun için öncesinde trim()
fonksiyonunda geçirmeniz iyi olacaktır. Bir de hard space problemi var. Bu videoyu izleyerek istenmeyen boşluklardan nasıl kurtulabileceğinizi görebilirsiniz.
Kısa yazmak için arrow function kullanmak istedim ve sizin de söylediğiniz gibi PHP 7.4 sürümünde eklenen bir özellik olduğu için eski sürümlerde hata verir.
https://www.php.net/manual/en/functions.arrow.php
Normal function şekliyle de kullanabilirsiniz.
uasort($dizi1, function($a, $b) {
return $a['item_id'] - $b['item_id']
});