javascript'de navigator adında bir web api mevcut, cihaz bilgileri fazlasıyla veriyor. işletim sistemi, ram, cpu, dahil edilmiş medya donanımları vs. https://developer.mozilla.org/en-US/docs/Web/API/Navigator bu yılın kasım ayında google bu api için desteğini sonlandıracağını duyurdu. detaylarını pek hatırlamıyorum, alternatifi ne olur bilmiyorum. bilginiz olsun.
var tanimlama = {
ekran :{
genislik : screen.width,
yukseklik : screen.height,
bgenilsik : screen.availWidth,
byukseklik : screen.availHeight,
aci : screen.orientation.angle,
tur : screen.orientation.type,
renk : screen.colorDepth
},
baglanti :{
hiz : navigator.connection.downlink,
tur : navigator.connection.effectiveType,
rtt : navigator.connection.rtt,
tasarruf : navigator.connection.saveData,
durum : navigator.onLine
},
donanim : {
ram : navigator.deviceMemory,
cpu : navigator.hardwareConcurrency,
sistem : navigator.platform
},
tarayici :{
cerez : navigator.cookieEnabled,
appC : navigator.appCodeName,
appN : navigator.appName,
dil : navigator.language,
desteklenen: navigator.languages,
bilesen : navigator.product,
bilesenN : navigator.productSub,
dahil : navigator.plugins,
vendor : navigator.vendor,
user : navigator.userAgent,
browser : navigator.userAgentData
},
parametreler: {
tarih : Date(),
referans : ref,
ipadresi : ipadresi,
firma : firma,
firmaN : nickname,
token : token,
},
gecmis: [
[],
[]
],
...
}
kendim için oluşturduğum basit bir örnek mevcuttu ekleyim dedim. dosyaya bile yazmadan consoldan çalıştırıp dönen değerlere bakabilirsin. diğer özellikler içinde yukarıda bıraktığım linkten faydalanabilirsin.
https://prnt.sc/o07E_zCF0sHt bunu yaptığına göre, bir id belirliyor olmalısın. bütün soru ve cevaba ait o kolonları sil. https://prnt.sc/aoOfwxazIp6n kare içine alıp işaretledim bak sileceğin yeride. bunlar yerine 1 tane soru, 1 tane cevap oluştur. zaten kategori_id'ye göre çekmiyor musun, yine öyle çek. o kategori_id ile ileşesen 5 sonucun hepsi dönecek. bir önceki mesajımdan en ufak detayına kadar nasıl doğru şekilde listeleme yapacağını anlattım ve bunun üzerine artık söyelebileceğim bir şey yok. sen ne istiyorsun öğrenmek mi, yoksa her ayağın takıldığında burda kod yazacak birini bulup oraya yapıştırıp çalıştırmak mı? anlamıyorum ya, bunu anlamıyorsan buraya kadar nasıl geldin? kendi kendine, çözüm olarak görmediğin ve anlamadın şeyi, ya bi deneyim desen. php'yide geç, sql de denesen kurcalasan. anlatımda değil belki pratikte "haaa böylemiş" diyeceksin, oda yok.
son deneme;
şimdiye kadar yazdığım her şeyi boşver, yukarıdaki pragrafı da, sadece aşağıdaki kısa anlatımı uygula. uygulama ama, anlamasanda uygula.
veritabanında birden çok anahtar vardır, en çok kullanılan ve ihtiyaç duyulan primary key adı verilen birincil anahtardır, ve ardışık olarak arttığı için benzersizdir. her girdi için +1 değer alır. kesin eşleşme sağlamak için tek bir sonuç döndürmek için kullanılır.
birde ikincil anahtar vardır, soyut veye doğrudan başka tablolarda yer alan verilerle eşleşme sağlamak için kullanılır.
bak iki tip anahtarımız varmış, birincil anahtar; tek sonuc döndürür, ikincil anahtar eşleşen tüm sonuçları döndürür. senin birincil anahtarın id, bu tek sonuç döndürür. ikincil anahtarın ise category_id bu da eşleşen tüm sonuçları döndürür.
hiçbir şeyi bozmadın diyelim, tablon, kodların her şeyin şimdiki gibi aynı. o tabloya hemen 5 tane ekeleme yap. 5 kere bütün kolonları doldur. sadece kategor_id'lerin hepsi aynı olsun, sayıyla tutuyorsan sayı, metinle tutuyorsan metin artık neyse. sonra phpmyadmin gir o tabloya tıkla, tıklayınca zaten hemen üst tarafta SELECT * From tablo diye kod çıkıyor onu kopyala sonuna where kategori_id = artık ne belirlediysen onu yaz ve sonucu kendin gör.
ha yok illa saydırcam ben yaaa diyorsan, zaten 5 sabitmiş hesaplama gerektirecek bir durum yok. sıfıra eşit bir değişken belirle, her undefined veya null değer için ++ operatörü ile bir kere arttır.
foreach ($adi as $key => $value) {
$yazar[] = $value.' '.$soyadi[$key];
}
$projeyazarlari = implode(', ', $yazar);
mübarek sen beni çok yordun ya. biraz daha temele inip, syntaxı anlamaya çalışmanı tavsiye ederim. birde soru sorarkende sakin kal, başlık içerikle çok alakalı değil teknikte değil. kaç kere cevapta yazıldı, çözümede ulaşamadık. sence çözüme ulaşılması bu kadar zor bir şey mi sordun? hayır tabi. pratiğe geçmeden, biraz daha teoride bilgilerini pekiştir.
döngü bitince implode'yi kullan
$yazar=$value.' '.$soyadi[$key]; bu dizi değil, değişken olarak tanımlanıyor
$yazar[] = şeklinde olmalı
benim tablondan anladığım kadarıyla, Sıkça Sorulan Sorular tarzında bir şey yapmaya çalışıyorsun gibi duruyor. bu genelde önceden belli olan soruları içerir, "Siparişimi Nasıl İptal edebilirim?" gibi bir başlık olur ve tıklayınca altında cevabı yazar. ama sen diyorsan ki ben kullanıcıların buraya gireceği ve sorularla cevapların önceden belli olmadığı spesifik bir içerik oluşturacağım. o zamanda durum pek farklı değil aslında. script yazmak, kodları bilmekten değil, düşünmekten geçiyor. sen nasıl kaydedip sıralayabileceğine dair bir fikire sahipsin ve bunu uygulamaya çalışıyorsun. ama yeterince düşünmeden bunu uygulamışsın. bu tabloyu ders ile ilişkili bir tablo olarak ele alalım ve özünde sınav sistemine benzer soru cevap gibi bir senaryosu olsun.
bir tablo oluşturdum ve resimde de gördüğün gibi tablonun yapı kısmındayım.
1 numaralı kolon id değeri ve her girdi de (veritabanına yapılan yeni kayıtta) otomatik olarak artıyor 1-2-3 gibi.
2 numaralı kolon ise sorunun başlığını içeriyor seninkinden farklı olarak Question1 gibi sonuna sayısal ek almıyor. sen bu sayısal ek ile sıralama yaparken eşleşme sağlamayı planlamıştın. ama gereken tüm içerik tek sütunda (satır) olduğu için biz buna id değeri ile erişebiliriz. yani id 1 dediğimiz zaman, soruyu ve cevapları alabiliriz.
3 numaralı kolon ise cevap kolonu
mantığı bu şekilde olmalıydı. hatta bunu biraz daha ilerletmek istersen, bir kolon daha açıp (yapı kısmında gördüğün id, cevap vb. kolondur) kategori diyebilirdin.
şimdi yeni bir tablo yapısı oluşturdum. bu tabloyu standart çoktan seçmeli bir sınav gibi düşünebiliriz. bir soru var ve sorunun altında şıklar şeklinde a) b) c) d) cevapları mevcut. soru kolonu sorumuzu sormak için, cevap kısmını doğru cevabımızı saklamak için, cevap_a ve diğerlerini de şıkları saklamak için kullanabiliriz. Örneğin doğru cevap b ise, kişi cevap seçtiğinde, doğru cevabımız da "cevap" kolonunda tutulduğundan, $secim == $row["cevap"] diyerek kişinin yanıtı doğru verip vermediğini de kolayca anlayabiliriz. ekstradan ne demiştik, kategori. örneğin bu sorular fen dersini içeriyor olsunlar, ben daima veritabanına sayısal değer kullanmayı tercih ederim byte değerleri daha düşük olduğu için. yani benim için fen dersi 6 numara olabilir, bu yüzden yapıda da gördüğün gibi kategori kısmı int(2) bu da en fazla 0 ile 99 arasında bir sayı belirtebileceğimi yani 100 kategoriden fazla kategorim olmadığı anlamına gelir. nasıl doğru cevabı eşleştirme yaparak bulduysak, tüm soruları listelemek yerine kategorilere göre soruları listelemek için böyle bir yöntem kullanabiliriz. ben her zaman mantıksal açıdan insanlara anlatımda bulunmayı tercih ediyorum. çünkü sen zaten veritabanına bağlanabiliyorsun, verileri listeleyebiliyorsun, ekleyebiliyorsun... benim anlattıklarım için ekstra bir kod yazmana veya bilmene gerek yok, sadece analitik düşünmüyorsun. düşünmen gerekiyor.
sadece soru ve cevabı görüntülemek istedim ve hedefim de 1. sıradaki soru yani id 1 değerine sahip olan olsun
birde sınav benzer bir bir soru olsun ve kategorisi sosyal bilgiler (buna 3 dedim) olsun ve tüm soruları getirelim
şimdi kullanıcı bir şık seçmiş gibi doğru cevabı arayalım
önce cevabı D olarak seçtim ve veritabanı sonuç bulamadı, bu da yanlış cevap verdim demek.
sonra cevabı A olarak işaretledim ve Ankara sonucunu aldım, yani cevap doğruymuş.
veritabanını yanlış kullanıyorsun. böyle tabi kendine sorun teşkil eder sıralama yaparken. tablo yapını tekrar düzenle.
id, soru, cevap şeklinde yapı oluştur ve id'ye göre sırala. kodları değiştirmene gerek kalmaz.
count dizide bulunan öğeyi hesaplar
if(count($veri) < 5){
//veri beşten küçükse çalışacak blok
}
çok açık uçlu bir soru sormuşsun ve yeterince detay vermemişsin. bir örnek hazırladım. umarım işini görür.
<a id="php">PHP </a>
<script>
$( "#term" ).autocomplete({
source: [ "c++", "java", "php", "coldfusion", "javascript", "asp", "ruby" ],
change: function(event, ui){
$('#'+ui.item.value).attr("href", ui.item.value);
}
});
</script>
$sonuc = implode(', ', $adsoyad);
echo $sonuc;
bunun için implode kullanman gerek, dizileri birleştirir.
$mevcutkonu=5;
"SELECT * FROM posts WHERE id != $mevcutkonu"