İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

Maç Başlığı İçin İlk 11 Belirlemek İstiyorum / array kullanımı

Tias

0
İyinet Üyesi
Katılım
2 Ağustos 2008
Mesajlar
38
Reaction score
0
Arkadaşlar merhaba,

Yeni bir script üzerinde çalışıyorum. Maç başlığı var içerisinde ve maçın ilk on birini girmem gerekiyor. Basit gibi durdu gözümde ama yapamadım yardım isteyeyim dedim.

Aslında maç başlığı altına mysqlden ilkonbir diye yeni bir alan ekleyip virgül kullanarak yapabilirim. Hatta evsahibiilkonbirfutbolcu1, evsahibiilkonbirfutbolcu2, ..., evsahibiilkonbirfutbolcu11 şeklinde alanlar ekleyerek de yapabilirim. Ama birinci şekilde yapınca futbolcuların diğer bilgilerini alamıyorum. İkinci şekildeki gibi yapınca da 11+7x2 sorgu yapmam gerekiyor.

Bana en basit yöntemi söyleyen birinin kölesi olabilirim :(

Maç başlığı altındaki ilk on bir bölümünde futbolcuların numarası, ismi yazacak ve tıklayınca o futbolcunun sayfasına (futbolcu.php?id=x) gidecek.

-------

Birde array kullanımı hakkında yardım almak istiyorum. Tam olarak ismini bilmediğim için alttaki bilgiler ışığında yardım isteyeceğim.


Scriptte yüzlerce futbolcu olacak ve bir yerlere eklerken uğraşmamak için daha kolay yolları bulmaya çalışıyorum. Aşağıdaki gibi array'ın arasına gelecek şekilde nasıl yazdırabilirim? mysql_query ile hiç denemedim ama büyük olasılıkla hata verir diye tahmin ediyorum.

Kod:
	$aCountries = array(
		"Futbolcu Isim 01",
		"Futbolcu Isim 02",
		"Futbolcu Isim 03",
		"Futbolcu Isim 04",
		"Futbolcu Isim 05",
		"Futbolcu Isim 06",
		"Futbolcu Isim 07"
	)
;

kodların tamamını göstereyim belki yardım olur.

http://b1108.hizliresim.com/11/8/25/4518.jpg
 

garrip

0
İyinet Üyesi
Katılım
28 Aralık 2010
Mesajlar
174
Reaction score
0
Şöyle bir şey yapabilirsin:

Maçlar adında bir tablon olsun
bunun içindede futbolcular alanın olsun
bu alana virgülle ayırarak futbolcu id numaralarını ekliceksin

futbolcuların id lerinide

futbolcular adlı bir tablo oluşturup ordan çekersin

gelelim bu futbolcuları listelerken diğer bilgilerinide almaya

Örneğin:
MacBaslik: Maçın başlığı
ilkOnBir : 12,13,14,15

Verimiz bu şekilde olsun
şu kodlada o verideki ilkOnBir futbolcuların id numaralarını parçalayarak her birinin futbolcular tablosundaki yerini bulup bilgilerini alalım
PHP:
$macid = '1';
$mac = mysql_fetch_array(mysql_query("SELECT * FROM maclar WHERE id='$macid'"));
$ilkOnBir = explode(",",$mac['ilkOnBir']); # burada ilkonbir alanındaki veriyi virgüllere bakarak parçalıyoruz ve ilkonbir degiskenine atıyoruz

# alt kısımdada parçalağımız id numaralarını tek tek futbolcular tablomuzdan bulup futbolcu adını ekrana yazdırıyoruz. burada sen kendine göre değişiklik yapacaksın tabi ki
foreach( $ilkOnBir as $id ){
    $futbolcu = mysql_fetch_array(mysql_query("SELECT * FROM futbolcular WHERE id='$id'"));
    echo $futbolcu['futbolcu_adi'] . "<br>";
}
 

Lansewebtr

0
İyinet Üyesi
Katılım
30 Aralık 2010
Mesajlar
256
Reaction score
3
veritabanı dersleri aldıysan; tavsiye edilen sistem yapısı her zaman birden fazla tablo lu ayrıntılı yapıdır.

yani arkadaşın dediği gibi maçlar diye bi tablo futbolcular diye bi tablo herşeye ayrı tablo yap. böylece futbolcuları sadece isimlerine göre değil mevkilerine istatistiklerine göre ve dahası şeklinde de listeleyebilirsin.

ilk 11 i ayarlamaya da gelince: maçlar tablosunda ilk 11 yazmasın. ilkonsekiz diye bi tablon olsun. burda her bi maç için 2 satır ekle. birisi ev sahibi birisi konuk için. ilk 18 in tamamını mevkilerine göre ekle ve yedekleride ayrıca belirt. oyuncu değişikliklerini anında yansıtırsın.

Örnek maçlar tablosu:
PHP:
id -> 7 (int)(sınırsız)( auto increment )
iddiaid -> 386 (int)(3)
tarih -> 0123456789 (int)(10) // bu ne diyosan tarihleri php time() formatında kullanmayı biran önce öğrenmelisin veritabanı işlerinde çok yararı olucaktır.
evsahibi -> 13 (int)(sınırsız) // takımlar tablosundaki bi takım ın autoincrement id si
konuk -> 26 (int)(sınırsız) // takımlar tablosundaki bi takım ın autoincrement id si
hakem -> 8 (int)(sınırsız) // hakemler tablosundaki bi hakem in autoincrement id si
ve stat, yayın kanalı.. aklına ne geliyosa eklersin.
Örnek ilkonsekiz tablosu:
PHP:
id -> 13 (int)(sınırsız)(autoincrement)
evsahibi -> 1 (int)(1) // 1 se evsahibi 0 sa konuk ekib in oyuncuları
kaleci -> 13 (int)(sınırsız) // oyuncular tablosundaki bi oyuncu nun autoincrement id si
mevki2 -> x
...
mevki10 -> x
yedek1 -> x
...
yedek6 -> x
PHP:
id -> 14 (int)(sınırsız)(autoincrement)
evsahibi -> 0 (int)(1) // 1 se evsahibi 0 sa konuk ekib in oyuncuları
kaleci -> 35 (int)(sınırsız) // oyuncular tablosundaki bi oyuncu nun autoincrement id si
mevki2 -> x
...
mevki10 -> x
yedek1 -> x
...
yedek6 -> x

sanırım sistemi anladın. dinamik bi yapı içinde veritabanı sistemini iyi oturtmalısın.
 

Troypc

0
İyinet Üyesi
Katılım
17 Eylül 2010
Mesajlar
849
Reaction score
7
Konum
Ankara
futbolcu bilgilerini bir base de tutacaksan garrip hocamın dedikleri işine yarayabilir. Fakat explode sayfayı biraz kasar, bence genel güncellemelerde sayfayı kasar.
 

Tias

0
İyinet Üyesi
Katılım
2 Ağustos 2008
Mesajlar
38
Reaction score
0
gerçekten çok iyi bilgiler gelmiş. öncelikle herkese teşekkürlerimi sunuyorum. kişisel olarak sormak istemiyorum. ben verilen 2 tavsiyeyi de denedim çalışıyorlar. fakat merak ettiğim hangisini kullanırsam en iyi performansı alırım? troypc'nin dediği gibi explode kasar mı gerçekten?

scriptten biraz detay vereyim. şimdi maç sayfam var diyelim. ki zaten var :) buraya ilk on biri, yedekleri, maç içerisindeki olayları (sarı/kırmızı kart, oyuncu değişikliği, goller ve dakikaları, hatta sarı kart sebepleri, gollerin hangi ayakla atıldığı vs. bir sürü bilgi) ve maç istatistiklerini (pas sayısı, şut sayısı vs.) giriyorum/gireceğim.

mesela olaylar için ayrı bir tablo açtım "olaylar" diye. içeriği şöyle. maç içerisinde göstermek için de "select * from olaylar where mac='$macid'" koduyla çekiyorum. sıralamayı dakikaya göre falan yapıyorum burada problem yok.

kadroları da böyle listeleyebilirim. hem ileride bana faydası da olur. futbolcunun kaç maçta forma giydiğini, toplam kaç dakika oynadığını falan daha kolay halledebilirim. ama olaylar gibi olması için tek tek girmem gerekiyor. olay ekmeyi şöyle yapıyorum; maç düzenleme sayfamda çerçeve (frame) açtım "olayekle.php?mac=$macid" diye. görüntüsü şöyle. işlem tamamlanınca tekrar çerçevenin ilk sayfası geliyor. böyle böyle ekliyorum.

fakat ben kadroları şu şekilde eklemek istiyorum. binlerce maç ekleyeceğim. bunun için ne kadar hızlı olabilirsem o kadar iyi.


---

bunları yazdıktan sonra aklım bir şey geldi ve hemen denedim.

resimdeki gibi form hazırladım.
aşağıdaki kodlar ile verileri çekip sıraladım.

Kod:
			$EvSahibiIlkOnBir	= $_POST['evsahibiilkonbir1'].", ".$_POST['evsahibiilkonbir2'].", ".$_POST['evsahibiilkonbir3'].", ".$_POST['evsahibiilkonbir4'].", ".$_POST['evsahibiilkonbir5'].", ".$_POST['evsahibiilkonbir6'].", ".$_POST['evsahibiilkonbir7'].", ".$_POST['evsahibiilkonbir8'].", ".$_POST['evsahibiilkonbir9'].", ".$_POST['evsahibiilkonbir10'].", ".$_POST['evsahibiilkonbir11'];
			$EvSahibiYedekler	= $_POST['evsahibiyedekler1'].", ".$_POST['evsahibiyedekler2'].", ".$_POST['evsahibiyedekler3'].", ".$_POST['evsahibiyedekler4'].", ".$_POST['evsahibiyedekler5'].", ".$_POST['evsahibiyedekler6'].", ".$_POST['evsahibiyedekler7'];
			$KonukIlkOnBir		= $_POST['konukilkonbir1'].", ".$_POST['konukilkonbir2'].", ".$_POST['konukilkonbir3'].", ".$_POST['konukilkonbir4'].", ".$_POST['konukilkonbir5'].", ".$_POST['konukilkonbir6'].", ".$_POST['konukilkonbir7'].", ".$_POST['konukilkonbir8'].", ".$_POST['konukilkonbir9'].", ".$_POST['konukilkonbir10'].", ".$_POST['konukilkonbir11'];
			$KonukYedekler		= $_POST['konukyedekler1'].", ".$_POST['konukyedekler2'].", ".$_POST['konukyedekler3'].", ".$_POST['konukyedekler4'].", ".$_POST['konukyedekler5'].", ".$_POST['konukyedekler6'].", ".$_POST['konukyedekler7'];


			
			echo "ev sahibi ilk on bir: ".$EvSahibiIlkOnBir."<br />";
			echo "ev sahibi yedekler: ".$EvSahibiYedekler."<br />";
			echo "konuk ilk on bir: ".$KonukIlkOnBir."<br />";
			echo "konuk yedekler: ".$KonukYedekler."<br />";

şimdi @garrip hocamın dediği metodu uygulayabilirim. artık son adıma geldim sayılır bu konuda. böyle kullanırsam sistem kasma yapar mı? ve ben x bir futbolcunun o maçta forma giydiğini, kart görüp görmediğini, gol atıp atmadığını ve kaç dakika oynadığını yazdırabilir miyim?

vallahi hocalar uğraştırıyorum ama gerçekten çok mühim bir konu benim için. gelmiş ve gelecek yardımlarınız için çok çok teşekkür ederim.

@www hocam aslında komple bir site yapmayı düşünüyorum haber, video vs. ama şimdilik sadece geçmiş maçları sunabileceğim/arşivleyebileceğim bir script yapacağım.
 

garrip

0
İyinet Üyesi
Katılım
28 Aralık 2010
Mesajlar
174
Reaction score
0
burdan sonra zaten fazla bir şey kalmıyor. foreach ile birlikte ilk onbiri donguye sokup olaylar tablondan futbolcu id VE maç id sine göre bilgileri çekebilirsin sarı kart, kac dk oynadı vs.

Evet bu tarz uzun işlemlerde foreach BİRAZ kasabilir ama sunucun iyi ise korkulcak bişe yok :)
 

Tias

0
İyinet Üyesi
Katılım
2 Ağustos 2008
Mesajlar
38
Reaction score
0
@garrip peki hocam her şey bitti gibi. şimdi bir şey daha sormak istiyorum.

"select * from olaylar where futbolcu='3 or olay='sarikart'"

bu kod ile gördüğünüz gibi 3 id'li futbolcunun sarı kart gördüğü maçları listeleyebiliyorum. ben 3 id'li futbolcunun forma giydiği maçları listelerken nasıl bir yol izleyeceğim, hangi kodu kullanacağım?

aslında burada anlattığın olay tam olarak etiket sistemi oluyor tahminime göre. böyle sorarsam daha kolay anlaşılabilir sanırım. ben ayhan akman etiketli yazıları nasıl çekebilirim :)
 

garrip

0
İyinet Üyesi
Katılım
28 Aralık 2010
Mesajlar
174
Reaction score
0
olay tablona şu şekilde alanlar yapabilirsin:

Olaylar Tablosu:
id => olayın id si
Olaytur => 1 2 3 4 5 6 -- buradaki rakamların anlamı 1=sarıkart,2=formagiydigimac,3=kırmızıkart vs gibi kendine göre isimler verirsin
futbolcu => futbolcu id

Verimiz:
id = 1
Olaytur = 2;
futbolcu=3;

Kod :
select * from olaylar where futbolcu='3' && olaytur='2'

Mantıken böyle
Olay tablonu nasıl kullangını/kullanmak istediğini bilmiyorum ancak bu şekilde çalışabilirsin

-------------------------------------------------------------------------------------------

Ha birde şöyle bir şey eğer hem sarı kart hemde forma giydiği macları istiyorsan o zaman tablondakı alanları hep ayırıcaksın örneğin


Olaylar Tablosu:
id => kayıt id
futbolcuid => futbolcu
olaytur => 1 2 3 4 5 -- 1=formagiydigi,2=kac gol attıgı vs.
karttur => 1 2 -- 1=sarı,2=kırmızı
vs.

GİBİ
 

Tias

0
İyinet Üyesi
Katılım
2 Ağustos 2008
Mesajlar
38
Reaction score
0
@garrip olaylar tablom şu şekilde. futbolcu bölümünü test aşamasında olduğu için elle, isim şeklinde girdim. oraya futbolcu id'leri gelecek. futbolcunun sarı kart gördüğü, hangi maçta kaçıncı dakikada oyundan çıktığını, kaç dakika oynadığını çekebiliyorum. ama bu herhangi bir olaya karışmış futbolcu için geçerli.

benim derdim bütün maç boyunca kart görmemiş, dışarı çıkmamış, gol atmamış oyuncunun o maçta oynayıp oynamadığını göstermek. ikinci önerinizde anladığım kadarıyla "formagiydigi" diye bir alan yaratmamı istiyorsunuz. fakat böyle olunca yine her seferinde 18 futbolcunun oyunda olduğunu belirtmem için olaylar bölümünden tek tek girmem gerekecek.

ben sizin anlattığınız gibi girmeyi planlıyorum şimdilik. girdik diyelim. resimde gördüğümüz gibi "ilkonbirevsahibi" alanında "4, 5, 6, 7, 8, 9, 10, 11, 12" rakamları var. ve yine diyelim ki 7 numara mustafa sarp'ı temsil ediyor. ben mustafa sarp'ın sayfasında oynadığı maçlar diye bölüm açacağım, o 7 rakamının orada olduğunu belirtmem gerekiyor :/ ve hala bunun nasıl yapıldığını çözemedim :(

sizi de uğraştırmak istemiyorum hocam. isterseniz cevap vermeyebilirsiniz. belki konuyu okuyan başka bir arkadaş cevap verebilir. bu resimden de anlayacağınız gibi 23-24 gündür bu konuyla uğraşıyorum ve gına geldi artık yine de yüzsüzlük yapmak istemiyorum.
 

garrip

0
İyinet Üyesi
Katılım
28 Aralık 2010
Mesajlar
174
Reaction score
0
Şuanda bende geniş bir proje üzerinde çalışıyorum vallahi tam olarak yogunlasamadım olaya :D

ayrıca sordugun sorulara cevap vermem sorun değil yalnız biraz geç olabilir yoğunluk dolayısıyla :)

Valla uykulu uykulu ne anladıysam artık :uyu: =>

futbolcugoster.php dosyamız olsun
gelen id ye gore futbolcuyu futbolcular tablosundan alsın verileri
sıra futbolcunun oynadıgı maclara gelince olaylar tablosundan ilkonbir den 7 numarayı arasın ve bulduklarını listelesin burası boyle oabilir

ancak senın dedigın bir sey daha var oda olaylar tablosu dısında oynanan maclar sanırım yada futbolcu için olaysız gecen maclar artık her neyse

onlarıda su sekılde yapabiliriz

olaylar tablosu dısında oynanan_maclar şeklinde bir tablo yapıp orada tum futbolcu verilerini oalylar tablosundaki gibi tutabilirsin

böylece her iki tablodan maça ait hem olaylı hemde olaysız futbolcu verilerini çekebilirsin.. bilmiyorum dogrumu anladım bu kadar bir şeyler cıkması bile şaşırttı benı bu saatte :deli

-------

Sonuçta buraya zorla girmiyoruz yardım etmek istemesek burda olmayız.. ;)
 

Tias

0
İyinet Üyesi
Katılım
2 Ağustos 2008
Mesajlar
38
Reaction score
0
çok teşekkür ederim hocam, çok mütevazisiniz :)

olaya geçersek; dediğiniz gibi yaparsam yine aynı şey olacak. zaman kaybı :(

bildiğimiz mysql sorgularını düşünün. "ilkonbir" alanı içerisinde o futbolcunun id'sinin geçtiği maçları çekmek istiyorum. özetle durum bu.

yani açarsak; makale sitelerinde arama yaparken sonuçları nasıl getiriyorsa, öyle bir şey olacak tahminimce. arama.php?kelime=7 olarak düşünün :)
 

garrip

0
İyinet Üyesi
Katılım
28 Aralık 2010
Mesajlar
174
Reaction score
0
futbolcugoster.php dosyamız olsun
gelen id ye gore futbolcuyu futbolcular tablosundan alsın verileri
sıra futbolcunun oynadıgı maclara gelince olaylar tablosundan ilkonbir den 7 numarayı arasın ve bulduklarını listelesin burası boyle oabilir

burada söylediğim gibi olacak o zaman

PHP:
$futbolcuid = 7;
mysql_query("SELECT * FROM olaylar WHERE ilkonbir LIKE '%$futbolcuid%'");

bununla olaylar tablosundaki tüm verilerin ilkonbir alanında 7 arayacak bulduklarını listeleyecek
bu sefer dogru anlamısmıyım :DD kafam fazla dolu kendi kodlarımla cebelleşiyorum anlık düşünüp yazıyorum çözüme biraz zor yaklaşıyoruz :)
 

Tias

0
İyinet Üyesi
Katılım
2 Ağustos 2008
Mesajlar
38
Reaction score
0
tamam hocam allah razı olsun tamam bu iş :) nasıl mutlu oldum anlatamam.

$sorgu = mysql_query("SELECT * FROM maclar WHERE ilkonbirevsahibi or ilkonbirkonuk LIKE '%$futbolcuid%'"); koduyla çektim ilk on birde çıktığı maçları.

şimdi çok ufak bir pürüz kaldı.

bu kod ile ilk on birde forma giydiği maçları çektik. fakat sonradan oyuna girdiği maçları alamayacağız bu listeye. onu da aynı sayfada çekebilir ve tarihe göre sıralayabiliriz.

örnek olarak göstereyim;

galatasaray v. fenerbahçe 18.10.2020
bursaspor v. galatasaray 12.10.2020
istanbul bb v. galatasaray 25.09.2020
galatasaray v. beşiktaş 18.09.2020

karabükspor v. galatasaray 03.11.2020
galatasaray v. sivasspor 09.10.2020
pendikspor v. galatasaray 05.10.2020

iki sorgu kullandık. kalın olanlar ilk on birde forma giydiği maçlar, normal olanlar oyuna sonradan girdiği maçlar. sıralamayı tarihe göre yaptığımız zaman ayrı ayrı listeleniyor gördüğünüz gibi :/ bu iki sorguyu karıştırıp tam anlamıyla tarihe gör listeleyemez miyiz?
 

garrip

0
İyinet Üyesi
Katılım
28 Aralık 2010
Mesajlar
174
Reaction score
0
Örneğin:
olaylar tablonda ilkonbir ve sonradangirenler alanların olsun

PHP:
mysql_query("SELECT * FROM olaylar WHERE ilkonbir LIKE '%$id%' || sonradangirenler LIKE '%$id%' ORDER BY tarih DESC");

bu şekilde ilkonbir ve sonradangirenlerde arar bulur listeler tarihe göre, iki alanda aramıs oluyoruz yanı burda

sen nerde ttuyorsun sornadan gırenlerı bılmıyorum o endenler boyle yaptım...
 

Tias

0
İyinet Üyesi
Katılım
2 Ağustos 2008
Mesajlar
38
Reaction score
0
oyuncu değişiklikleri olaylar tablomda listeleniyor. her oyuncu değişikliği için ayrı satır giriyorum. ilk on birse maçlar bölümünde duruyor. join olayı varmış galiba kurcaladım biraz ama arama sorgusuyla normal sorguyu birleştiremiyoruz sanırım :/ ben en iyisi olayları girer gibi gireyim. en garantisi o yöntem.
 

garrip

0
İyinet Üyesi
Katılım
28 Aralık 2010
Mesajlar
174
Reaction score
0
o zaman burda yapılması gerekn şey iki tabloda arama yapmak şöyle bir şey vardı buna benzer bir şey yapabilirsin

PHP:
mysql_query("select * from maclar,olaylar where maclar.ilkonbir LIKE '%$id%' || olaylar.degisenfutbolcu LIKE '%$id%'")
 

Tias

0
İyinet Üyesi
Katılım
2 Ağustos 2008
Mesajlar
38
Reaction score
0
yok hocam olmadı. kodları bayağı kurcaladım, farklı sitelerden de araştırma yaptım sürekli problem çıkıyor maalesef. olayın olduğu (yani oyuna sonradan girdiği) maçı çekiyor listeye, fakat sadece maçın id'sini yazıyor. maç bilgilerini alamıyorum. sadece olayın bilgileri geliyor. macid, olaycesit vs. neyse fazla zorlamayalım ben formagiyenler diye alan ekleyip oradan çekeyim, daha iyi olur :) size de çok çok teşekkür ederim yardımlarınız için...
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Üst