PHP Anket

Elfen

Kızıltaş Madencisi
Mesajlar
508
En iyi cevaplar
0
Beğeniler
596
Puanları
1,230
Şu sıralar bir anket scripti yazma isteği geldi bana bende yazmaya başladım fakat bir kısım'da takıldım ve bir türlü halledemiyorum nasıl yapabilceğimi çözemedim açıkcası yardımcı olursanız sevinirim. Script şu şekilde işliyor kullanıcı siteye girip üye olup bir anket oluşturuyor ankete sorular ekliyor her bir soru 1 sayfa'da gösterildiği için misal 2.soruya geçmek isteyince anketi dolduran kişi "sonraki soru" butonuna linki nasıl çekebileceği'mi çözemedim bir while döngüsün içine array ekleyerek yaparım dedim de beceremedim açıkçası.

Şimdi yaptığım olayı kod'da anlatmak istiyorum tam anlayabilmeniz için ;
Öncelikle bir GET metoduyla anketin id'sini çekiyorum sonra'da çekilen anket id'sini sorgulatıyorum.
PHP:
$id = $_GET['id'];

 $sorusor=$be->prepare("SELECT * FROM sorular WHERE anket_id=:anket_id");
 $sorusor->execute(array(
   'anket_id' => $_GET['id']
 ));
 $sorucek=$sorusor->fetch(PDO::FETCH_ASSOC);
Herhangi bir kullanıcı sitenin ana sayfasına girdiğinde önüne başka kullanıcıların açtığı anketler listelenicek istediği birine tıklayacak ve üstteki kod ile seçtiği anket'in ana sayfası gelecek o anketin ana sayfasında ankete başla butonu olacak başlama butonuna o anketin ilk sorunun adresini çektirecem.
Tablolarım resimdekiler gibi ;
Anketler Tablom

Sorular Tablom


Ayrıca şu "sonraki soru" kısmını anlamadıysanız scriptin şu anki haline bakabilirsiniz ne yapmak istediğimi anlayacağınızı zannediyorum.
http://anket.vonsc.pw/
 


SarıBücürIsBack

YASAKLANDI
Mesajlar
255
En iyi cevaplar
0
Beğeniler
422
Puanları
0
Ellerine sağlık. Eğer reklamını yapabilirsen Would You Rather'in Türkçe versiyonu olabilir.
Sana soru önerebilir miyim?
 

MegaCrafter

Obsidyen Madencisi
Mesajlar
1,419
En iyi cevaplar
0
Beğeniler
1,542
Puanları
3,070
Ben hala sorunu tam anlayamadım. Butonlara farklı event vermekle ilgili mi sorunun var yoksa o anketin sorusunun linkini almakta mı? Ama ikisinde de sorunun olacağını düşünmüyorum pek.
 

Elfen

Kızıltaş Madencisi
Mesajlar
508
En iyi cevaplar
0
Beğeniler
596
Puanları
1,230
Ellerine sağlık. Eğer reklamını yapabilirsen Would You Rather'in Türkçe versiyonu olabilir.
Sana soru önerebilir miyim?
Scripti aslın'da eğlence amaçlı yazıyorum'da sonra bir arkadaşımın önerisiyle kullanıcıların'da anket oluşturabilme özelliği olmasını istedi ben'de yapayım dedim ve muhtemelen bitince sevilirse reklam yapmaya çalışırım soruyu'da özelden yazabilirsin.
Ben hala sorunu tam anlayamadım. Butonlara farklı event vermekle ilgili mi sorunun var yoksa o anketin sorusunun linkini almakta mı? Ama ikisinde de sorunun olacağını düşünmüyorum pek.
Şu şekil'de örnek veriyorum şimdi 1.sorudasın diyelim soruyu cevaplıyorsun evet veya hayır her neyse 1.soruyu cevapladıktan sonra seni 1.sorunun analiz sayfasına atıyor yani şurası http://anket.vonsc.pw/sonuc.php?id=1 siteye girersen görebilirsin "Sonraki Soruya Geç" butonu var hani işte oraya 2.sorunun linkini atamak istiyorum şu an'da onu şu şekil'de yaptım ;
PHP:
        <?php
        $next = 1;
        $ide = $sorucek['id']; // $sorucek['id'] kısmı mevcut sorunun id'si
        $id = $ide + $next;
        ?>
        <a href="soru.php?id=<?php echo $id; ?>"><button type="button" class="btn btn-primary">Sonraki Soruya Geç </button></a>
Ama bu şekil'de olursa başka bir anketin sorusuna geçme ihtimali var.
 

MegaCrafter

Obsidyen Madencisi
Mesajlar
1,419
En iyi cevaplar
0
Beğeniler
1,542
Puanları
3,070
Scripti aslın'da eğlence amaçlı yazıyorum'da sonra bir arkadaşımın önerisiyle kullanıcıların'da anket oluşturabilme özelliği olmasını istedi ben'de yapayım dedim ve muhtemelen bitince sevilirse reklam yapmaya çalışırım soruyu'da özelden yazabilirsin.

Şu şekil'de örnek veriyorum şimdi 1.sorudasın diyelim soruyu cevaplıyorsun evet veya hayır her neyse 1.soruyu cevapladıktan sonra seni 1.sorunun analiz sayfasına atıyor yani şurası http://anket.vonsc.pw/sonuc.php?id=1 siteye girersen görebilirsin "Sonraki Soruya Geç" butonu var hani işte oraya 2.sorunun linkini atamak istiyorum şu an'da onu şu şekil'de yaptım ;
PHP:
        <?php
        $next = 1;
        $ide = $sorucek['id']; // $sorucek['id'] kısmı mevcut sorunun id'si
        $id = $ide + $next;
        ?>
        <a href="soru.php?id=<?php echo $id; ?>"><button type="button" class="btn btn-primary">Sonraki Soruya Geç </button></a>
Ama bu şekil'de olursa başka bir anketin sorusuna geçme ihtimali var.
Peki "soru.php?id=" şeklinde yaptığın gibi oraya bir de anket_id eklesen? Öyle işe yaramıyor mu?
 

Elfen

Kızıltaş Madencisi
Mesajlar
508
En iyi cevaplar
0
Beğeniler
596
Puanları
1,230
Peki "soru.php?id=" şeklinde yaptığın gibi oraya bir de anket_id eklesen? Öyle işe yaramıyor mu?
Yok öyle olmaz anket_id olmaz direk id olur çünkü anket_id yukarıdaki resimlerden de görebilirsin "Anketler Tablom" kısmı orada id'si 1 olan bir anket var sonra "Sorular Tablom" kısmına bak orada her soru'da anket_id sütunu var orada "Soru 4" haricin'de hepsi "anket_id=1" e bağlı. Bir şekil'de anlaması gerekiyor sonraki sorunun hangi id olduğunu ama bunu anlarken anket_id=1 e eşit olup olmadığını kontrol edecek.
 

MegaCrafter

Obsidyen Madencisi
Mesajlar
1,419
En iyi cevaplar
0
Beğeniler
1,542
Puanları
3,070
Yok öyle olmaz anket_id olmaz direk id olur çünkü anket_id yukarıdaki resimlerden de görebilirsin "Anketler Tablom" kısmı orada id'si 1 olan bir anket var sonra "Sorular Tablom" kısmına bak orada her soru'da anket_id sütunu var orada "Soru 4" haricin'de hepsi "anket_id=1" e bağlı. Bir şekil'de anlaması gerekiyor sonraki sorunun hangi id olduğunu ama bunu anlarken anket_id=1 e eşit olup olmadığını kontrol edecek.
PHP'yi tam olarak bilmiyorum. Ama şöyle bir şey yapılabilir mi: Query kullanarak anket_id'si 1 olanları loop'layıp soruların id'lerini alsan? Konuda söylediğin "while döngüsü" olayı bu muydu?
 

n3pixmm

Marangoz
Mesajlar
48
En iyi cevaplar
0
Beğeniler
35
Puanları
90
Sayfaları değiştirerek yani tekrar tekrar data requestlerde bulunup, hem veritabanı sunucusunu hem de PHP sunucunu yorabilirsin ki zaten yorar. Bu anketin ödülünün 1000$ olduğunu varsayalım ve herkes şu an takır takır soruları cevaplıyor diyelim. Herkes her soru ve her sonuç için veritabanından request ediyor dataları, gelen dalar PHP sunucundan, client tarafından requestleniyor, yani ortada 2 kere request var. Bunun yerine tüm dataları, soruları, sonuçları 1 defa requestlayip onları diziler veya objeler içerisinde saklayp, JavaScript yani front-end tarafında sadece sayfanın görüşünüş kısmını düzenleyebilirsin yahut da back-end de bir JSON API yazarsın veriler için, bu verileri requestlersin ve JSON decode ederek gösterirsin. Böylece 1 PHP request ve 1 database request ile tüm işi bitirirsin, 10 soru için 2x10 dan 20 request yerine, 10 soru için 2x1 den 2 request kullanarak hem hız kazanırsın hem sunucularını idareli kullanmış olursun. Ve bunun tabi ki milyonlarca kişşi tarafından aynı vakitlerde cevaplandığını düşününce ... :)
Edit: Bu arada client tarafında her zaman açıkta uçukta GET verileri kullanmak veye element propertleri boş yere kullanarak front-end açıklar verirsiniz. Haberiniz olsun :)
Edit 2: Ya açık ararken sistem buga girdi ya da sen bir şeyler düzelttin şu an ankete girmiyor :p
 

Elfen

Kızıltaş Madencisi
Mesajlar
508
En iyi cevaplar
0
Beğeniler
596
Puanları
1,230
PHP'yi tam olarak bilmiyorum. Ama şöyle bir şey yapılabilir mi: Query kullanarak anket_id'si 1 olanları loop'layıp soruların id'lerini alsan? Konuda söylediğin "while döngüsü" olayı bu muydu?
Aynen yanlış anlamadıysam o şekil'de yaptım.
Sayfaları değiştirerek yani tekrar tekrar data requestlerde bulunup, hem veritabanı sunucusunu hem de PHP sunucunu yorabilirsin ki zaten yorar. Bu anketin ödülünün 1000$ olduğunu varsayalım ve herkes şu an takır takır soruları cevaplıyor diyelim. Herkes her soru ve her sonuç için veritabanından request ediyor dataları, gelen dalar PHP sunucundan, client tarafından requestleniyor, yani ortada 2 kere request var. Bunun yerine tüm dataları, soruları, sonuçları 1 defa requestlayip onları diziler veya objeler içerisinde saklayp, JavaScript yani front-end tarafında sadece sayfanın görüşünüş kısmını düzenleyebilirsin yahut da back-end de bir JSON API yazarsın veriler için, bu verileri requestlersin ve JSON decode ederek gösterirsin. Böylece 1 PHP request ve 1 database request ile tüm işi bitirirsin, 10 soru için 2x10 dan 20 request yerine, 10 soru için 2x1 den 2 request kullanarak hem hız kazanırsın hem sunucularını idareli kullanmış olursun. Ve bunun tabi ki milyonlarca kişşi tarafından aynı vakitlerde cevaplandığını düşününce ... :)
Edit: Bu arada client tarafında her zaman açıkta uçukta GET verileri kullanmak veye element propertleri boş yere kullanarak front-end açıklar verirsiniz. Haberiniz olsun :)
Yazdıkların için teşekkürler şu an'da anladığım kadarıyla sıkıntılı ve zor bir yolu seçiyorum :/ şansımı sonuna kadar denicem olmazsa dediklerini uygularım muhtemelen :)
Bu arada kullanıcının sadece 1 defa ankete katılabilmesini sağlamak için başla butonunu bir forma bağlamıştım ip adresini db'ye kayıt ediyor form'u silmeyi unutmuşum direk soru.php?id=1 yazarak gidebilirsin bir sakıncası yok :)
 

n3pixmm

Marangoz
Mesajlar
48
En iyi cevaplar
0
Beğeniler
35
Puanları
90
Aynen yanlış anlamadıysam o şekil'de yaptım.

Yazdıkların için teşekkürler şu an'da anladığım kadarıyla sıkıntılı ve zor bir yolu seçiyorum :/ şansımı sonuna kadar denicem olmazsa dediklerini uygularım muhtemelen :)
Bu arada kullanıcının sadece 1 defa ankete katılabilmesini sağlamak için başla butonunu bir forma bağlamıştım ip adresini db'ye kayıt ediyor form'u silmeyi unutmuşum direk soru.php?id=1 yazarak gidebilirsin bir sakıncası yok :)
Tabi ki ben teşekkür ederim :) Başkasına yol gösterseydik şimdiye yok ben böyle yapmak istedim, yok ben onlarla uğraşamam, yok sanane filan demişti, anlayışın için sağol. Güzel bir proje olmuş bu arada, tasarım ve back-end olarak ama başlarda olduğu için gayet hoş ve güzel buluyorum. Dediklerim ile ileride desteklersen çok kullanılır. Mesela ben hiç survey.io görmedim, bunu insanlar sunabilirsin. aboutme.io muydu neydi bir şey vardı, .io ile olan birçok faydalı ufak ve basit projeler internette kullanılıyor ve insanalrın gündelik hayatlarında çok işlerine yarıyor. Bence dediğim gibi bir proje çıkarırsen büyük referansa sahip olursun birçok yerde :)
 

Üst