Drupal: izin verilen değerler için PHP alan

2 Cevap php

Ben CCK ile Drupal 6 çalışıyorum. Her metin alanına altında izin verilen değerlerini almak için bazı PHP kodu bir PHP bölümü vardır. Ben kullanıcı türüne göre izin verilen değerlerini değiştirmek için bir "eğer" deyimini kullanarak belaya çalıştırıyorum

Yani şimdiki kullanıcıların kullanıcı türünü belirlemek için bir sorgu yapmak, başlamak için. -1, Çalışanları ve kullanıcı türü kimliği "1" olduğu varsayılan kullanıcı, bir site kullanıcıları içindir. Ne isteyen çalışanlar zaman tüm seçenekleri ile düğüm düzenleme ekranında bu değeri düzenlemek için izin verirken, onlar görmek gerekir, sadece izin verilen değerlere site kullanıcı sınırlamaktır.

If ifadesi eserlerin ilk bölümü. Ancak, "else" kısmı çalışmıyor. Bu alan kontrol yapıları ile başa çıkmak için kuruldu?

global $user;
$sql1 = "SELECT user_type_id FROM user_types_user WHERE uid = ".$user->uid." ";
$res1 = db_query($sql1);
if($res1 == '1'){
$sql = "SELECT account FROM users WHERE uid = ".$user->uid." ";
$res = db_query($sql);
while($row = db_fetch_array($res)){
$rows[] = $row['account'];
}
$rows = drupal_map_assoc($rows);
return $rows;
}
else {
$sql2 = "SELECT title FROM node WHERE type = 'accounts' ";
$res2 = db_query($sql2);
while($row2 = db_fetch_array($res2)){
$rows2[] = $row2['title'];
}
$rows2 = drupal_map_assoc($rows2);
return $rows2;
}

Seçimler type = düğümleri hesaplar, ancak, bir kullanıcı seçeneklerden birini oluşturulduğunda "Hesap" adlı oluşturduğum bir sütun altında, kullanıcı tabloda seçilir ve saklanır edilir

2 Cevap

Tarafından '"else kısmı çalışmaz' Eğer onu idam asla demek, 1 bile user_type_id eşit değildir, {[(2 eksik db_fetch_array() olabilir )]}. Siz dize '1', alan değeri değil, doğrudan sonuç nesne karşılaştırarak ediyoruz.

İşte bunun için çalışan koddur. Bunu yapmak için daha hızlı / daha kısa bir yol var olmuş olabilir.

global $user;
$sql1 = "SELECT user_type_id FROM user_types_user WHERE uid = ".$user->uid." ";
$res1 = db_query($sql1);
while($type = db_fetch_array($res1)){
$types[] = $type['user_type_id'];
}
$resType = $types[0];
if($resType == "1"){
$sql = "SELECT account FROM users WHERE uid = ".$user->uid." ";
$res = db_query($sql);
while($row = db_fetch_array($res)){
$rows[] = $row['account'];
}
$rows = drupal_map_assoc($rows);
return $rows;
}
else {
$sql2 = "SELECT title FROM node WHERE type = 'accounts' ";
$res = db_query($sql2);
while($row2 = db_fetch_array($res)){
$rows2[] = $row2['title'];
}
return $rows2;
}