Doğru Cevap
-
Grafikten anladığım kadarıyla kullanıcıların verdiği cevapları yan yana sıralamak istiyorsun. Bu iş mantıken ve performans olarak mysql yaptıralacak iş değil.
Onun yerine tüm datayı çekip kullanıcı id sine göre php ile sıralamak çok daha mantıklı.
* kısmını çağırmak istediğin sütunların adalarını yaz hem mysql e ekstra yük bindirmez hemde array olarak veriyi çekince işlemesi kolay olur.SELECT * FROM cevaplar LEFT JOIN kullanici ON cevaplar.kullanici_id = kullanici.yuyeid
Bu kod ile database deki tüm kullaniciların sorularını çektik.
//database bağlantısı query vs echo '<table border="1">'; foreach($results = mysql_fetch_array($query) as $result ){ echo '<tr>'; echo '<th>'.$result[0].'</th>'; echo '<th>'.$result[1].'</th>'; echo '<th>'.$result[2].'</th>'; echo '<th>'.$result[3].'</th>'; echo '<th>'.$result[4].'</th>'; //... array içinde bulunan keyleri 41 taneyi vede user idsini yazdırabilirsin echo '</tr>'; } echo '</table>';
Bazı hatalar olabilir genel mantık bu.-
Kesali
Biraz baktım yanlış bilgi vermemek adına aşağıdaki linkte bir kişi daha sormuş genel kanı aynen benim dediğim gibi sql bu iş için çok uygun değil. Ayrıca yeni fark ettim th leri td yapman lazım gözümden kaçmış.
http://stackoverflow.com/questions/1187460/sql-rows-to-columns11 yıl önce yazılmış -
hkor
Cevap için teşekkürler sonuç alamadım, $query üstteki select li olan ifademi orayı tam anlamadım.11 yıl önce yazılmış -
siyahbeyaz
$results = "select * from tablo...";
foreach($results=mysql_fetch_array.....)11 yıl önce yazılmış -
Kesali
Son sql kodu böyledir yukardaki örnek ten biraz farklı ilgileneneler için. Php kısmıda aşağıdaki gibidir.
Hala daha güncellenebilir ama bu haliyle bile oldukça iş görür. İyi çalışmalar.
SELECT y_uye.*,GROUP_CONCAT(cevaplar.adi ORDER BY cevaplar.id ASC SEPERATOR '~' ) AS cevap FROM y_uye INNER JOIN cevaplar ON y_uye.yuyeID = cevaplar.id GROUP BY y_uye.yuyeID ORDER BY 'y_uye.yuyeID' ASC
while($sonuc = mysql_fetch_assoc($sorgu)){ echo "<tr><td>".$sonuc['yuyeID']."</td>"; $cevaplar = explode("~", $sonuc['cevap']); foreach($cevaplar as $cevap){ echo "<td>".$cevap."</td>"; } echo "</tr>"; }
11 yıl önce yazılmış -
hkor
teşekkürler üstad eline sağlık...11 yıl önce yazılmış
-
Cevaplar
-
sorular ve kullanıcları tablosunu vermemişsin..
sorular tablosunu su sekilde kaide alırsak
sorularID | soru
kullanicilarID | kullanici_adi |
seklinde oldugunu farz edersek
select * from ek_tablo E right join kullanicilar K ON E.kullanici_id=K.kullanicilarID RIGHT JOIN sorular S ON E.soru_id=S.sorularID
-
hkor
Cevap için teşekkürler soruyu düzgün soramadım sanırım, tekrar yeni görüntü ekledim. 640 kişi her biri 42 anket sorusunu cevapladı bunları 640 satır ve 42 sütun olarak listelemem lazım? yazdığın sorguyu denedim ama tam sonuç alamadım:(11 yıl önce yazılmış -
siyahbeyaz
yanı kast ettigin sey..
42 tane anket sorusu var
ve 640 tane kullanıcı..
her bır kullanıcının 42 soruya ne cevap vermek ıstedıgını tek satırda gostermek mi?11 yıl önce yazılmış -
hkor
evet hocam o şekilde her 1 kişi 42 cevap yan yana olacak şekilde 640 satır listeletmek.malesef sonuc alamdım henüz:(11 yıl önce yazılmış
-