Yetkilendirme Yardım

banderias

Öğrenci
Katılım
24 Aralık 2010
Mesajlar
4
Reaksiyon puanı
0
Puanları
0
umarım problemimi anlatmayı başarabilirim.

yaptığım stok takip sisteminde farklı depolara farklı kullanıcılar atamak istiyorum. ama bir depo için bir çok kullanıcı yetkilendirmek ve bir kullanıcının da bir çok depo için yetkili olmasını istiyorum.

öncelikle benim yapmaya çalıştığım ve çalıştıramadığım kodları aktarayım. umarım nerede hata yaptığım söyleyen birileri çıkar.

şimdi, üç farklı kullanıcım ve üç farklı depom var.

veri tabanım şu şekilde

depo.JPG


uye.JPG



bundan sonra yetki diye bir tablo oluşturdum

yetki.JPG


sonraki işlemlerim ise şu şekilde


PHP:
$sorguyetki = mysql_query("SELECT * FROM yetki uyeid = $uyeid"); 
while ($sorguyetki = mysql_fetch_array($sorguyetki)) {
$depoid = $sorguyetki["depoid"];
}
burada sistemdeki kullanıcıların görebileceği depoların depoid'sini alıyorum.

sonra;


PHP:
$sorgu = mysql_query("SELECT * FROM depo where depoid = $depoid"); 
while ($ysorgu = mysql_fetch_array($sorgu)) {
$id =$ysorgu["id"];
$depo =$ysorgu["depo"]; 
echo "$depo";}

burada da yetki tablosundan aldığım depoid'lerini depo tablosundan çekip depo ismini göstermek istiyorum.

bu şekilde yaptığımda eğer yetki tablosunda o kullanıcı için br kayıt varsa sorun olmuyor, ama birden çok depo için yetki verirsem sadece bir tanesi görünüyor.

bu sorunumu çözebilecek biri olursa çok sevinirim. çünkü 2-3 gündür bununla uğraşıyorum.

şimdiden teşekkürler...
 

sonercelix

Asistan
Katılım
13 Şubat 2009
Mesajlar
149
Reaksiyon puanı
0
Puanları
16
$sorguyetki = mysql_query("SELECT * FROM yetki uyeid = $uyeid");
while (
$sorguyetki = mysql_fetch_array($sorguyetki)) {
$depoid = $sorguyetki["depoid"];

// Burada $depoid değişkenini dizi değişken olarak kullanmalısın.//
}

Daha sonra dizi değişkenin eleman sayısı kadar döngü kurdurup aşağıdaki kodlarını işletmen gerekir. Takiki Her döngüde SQL ifaden yani $depoid değişecek. Yukarıki dizinin elemanlarından gelecek tek tek.

$sorgu = mysql_query("SELECT * FROM depo where depoid = $depoid");
while (
$ysorgu = mysql_fetch_array($sorgu)) {
$id =$ysorgu["id"];
$depo =$ysorgu["depo"];
echo
"$depo";}






---------- Post added at 16:02 ---------- Previous post was at 15:58 ----------

$sayi=0;


$sorguyetki
= mysql_query("SELECT * FROM yetki uyeid = $uyeid");
while (
$sorguyetki = mysql_fetch_array($sorguyetki))
{
$sayi++;
$depoid[sayi] = $sorguyetki["depoid"];
}


For $i=0;$i<$sayi;$i++)
{
$sorgu = mysql_query("SELECT * FROM depo where depoid =". $depoid[$i]);
while (
$ysorgu = mysql_fetch_array($sorgu)) {
$id =$ysorgu["id"];
$depo =$ysorgu["depo"];
echo
"$depo";
}
}


Bu şekilde düşündüm...




}

 

banderias

Öğrenci
Katılım
24 Aralık 2010
Mesajlar
4
Reaksiyon puanı
0
Puanları
0
yardımın için teşekkürler kardeş. mantık doğru sanırım ama ben yine çalıştıramadım. tekrar bi gözden geçirirsen sevinirim...

bu arada yine tek kayıt gösteriyor...
 

sonercelix

Asistan
Katılım
13 Şubat 2009
Mesajlar
149
Reaksiyon puanı
0
Puanları
16
For $i=1;$i<=$sayi;$i++) //Döngü ifadesindeki sayacın başlangıç değerini ve bitişini böyle yap birde.. çünkü dizinin ilk inidisi 1 yapmıştık yukarda 0 dan başlatmışısz :)

{
$sorgu = mysql_query("SELECT * FROM depo where depoid =". $depoid[$i]);


 

banderias

Öğrenci
Katılım
24 Aralık 2010
Mesajlar
4
Reaksiyon puanı
0
Puanları
0
kardeşim çok teşekkürler. bu şekilde çalıştı :)

bi de bu kod hakkında yine. bu kod için limit nasıl ekleyebiliriz...
örneğin sayfalama için kullandığım kodlar şu şekilde...
PHP:
$sayfa = $_GET['sayfa'] ? $_GET['sayfa'] : 0;  
$sayfabasi=30;  
$sorgu=mysql_query("SELECT * FROM `stok`); 
$toplam=mysql_num_rows($sorgu);
$kacsayfa=ceil($toplam/$sayfabasi);
$basla=$sayfa*$sayfabasi;

sayfalama yaparkende;

PHP:
$bilgi = mysql_query("SELECT * FROM `stok` ORDER BY `urunid` ASC limit $basla, $sayfabasi");
while($satir = mysql_fetch_array($bilgi))

sonra da en altta;

PHP:
for ($i=0;$i<$kacsayfa;$i++) { 
if ($sayfa == $i) 
echo "[<b>".$i."</b>]";
else
echo "&nbsp;<a href=malzeme-listeleme.php?sayfa=".$i.">".$i."</a>&nbsp;";
    }

bu stok listeleme sayfasında da aynı şekilde sadece yetkili oldukları depoların stoklarını görsünler istiyorum. aynı şekilde yaptım bi problem de yok ancak. stok adeti fazla olduğu için sayfalam yapmam gerek. sayfalama içinde limit eklemem lazım.

bu sorunumu da çözdüm. tekrar teşekkürler.

bu arada çok büyük bi eksikliğimi buldum burada. anlaşılan yeterince uğraşmadan yardım istiyorum. bu ilk yardımdan sonra fazla kolaya kaçmaya başladım heralde. bundan sonra son çare olarak yardım istemeye çalışıcam :)
 

banderias

Öğrenci
Katılım
24 Aralık 2010
Mesajlar
4
Reaksiyon puanı
0
Puanları
0
bu konu hakkında bir yardım daha almam gerekti. bu defa checkbox'la ilgili.

yetkilendirme yaparken checkbox kullanmayı düşündüm.

checkbox kodum şu şekilde;

PHP:
<input name="depoyetki[]" type="checkbox" value="<? echo "$depoid";?>" <? if ($yetkiara >= 1) {echo "checked=\"checked\"";}?> />

ekleme yapmak için de şöyle düşündüm;

PHP:
$yetkiver = implode(",",$_POST['depoyetki']);
 
$yetkisil  =    mysql_query("DELETE FROM yetki WHERE kullaniciid = $kullaniciid");
$yetkiekle = mysql_query("INSERT INTO yetki (depoid, kullaniciid)
VALUES ('$yetkiver','$kullaniciid')");
 
$yetkisilson  =    mysql_query("DELETE FROM yetki WHERE depoid = '0'");

önce kullanıcıya ait tüm yetkileri siliyorum. ardından seçili olanları ekliyorum.
ama yine bir sorunla karşılaştım. aynı şekilde seçili olanların tümünü değil de sadece birini kaydediyor.

bunu nasıl çözebilirim. yine yardım ederseniz çok sevinirim.

---------- Post added at 11:51 ---------- Previous post was at 10:50 ----------

arkadaşlar teşekkürler. sorunumu çözdüm. yardımı olur diye buraya da eklemek istedim.

PHP:
<input name="yetkiverme[]" type="checkbox" value="<? echo "$depoid";?>" <? if ($yetkiara >= 1) {echo "checked=\"checked\"";}?> />

bu checkbox kodumuz.

PHP:
$kayit  =    mysql_query("DELETE FROM yetki WHERE kullaniciid = $kullaniciid");
 
foreach($_POST['yetkiverme'] as $yetkiver){
$kayit = mysql_query("INSERT INTO yetki (depoid, kullaniciid)
VALUES ('$yetkiver','$kullaniciid')");
}

bu da veri tabanına eklemek için kullandığımız kod.
 
Üst