Помощ за един код

4ef0

Registered
Здравейте, искам да направя този код да взима в предвид левела на потребителя , а не както е сега наново да ги въвеждам админите/модовете от админ панела, но нещо не ми се получава ... ето го и кода :

Код:
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<div class="menuheadbig">Екип</div>
<div class="txtbig">
<?php
require 'includes/config.php';
	$query = mysql_query("SELECT * FROM `users` WHERE level=$level") or die (mysql_error());
    while($row = mysql_fetch_array($query))
if ( $level == '3' Администратор );
if ( $level == '2' Модератор );
    {
?>
<table width="100%">
<td width="130" height="130"><img src="<?php print $row['img']; ?>"/></td>
<td>Име: <b><?php print $row['name']; ?></b><br />
Пост: <font color="green"><b><?php print $row['post']; ?></b></font><br />
Skype: <b><a href="skype:<?php print $row['skype']; ?>?chat"><?php print $row['skype']; ?></a></b><br />
Nick: <b><?php print $row['nick']; ?></b><br />
Роден: <b><?php print $row['date']; ?></b><br />
Местоположение: <b><?php print $row['city']; ?></b><br /></td>
</table>
<?php
	}
?>
</div>

мисля, че съм объркал нещо в селекта или с иф-овете защото формите мисля, че съм ги извел правилно ...
 
Можеш ли да обясниш какво правят тези редове :idea:
Код:
if ( $level == '3' Администратор );
if ( $level == '2' Модератор );

Кажи си полетата в таблицата (по-специлано тези, които се отнасят за level-a) и още веднъж се пробвай да обясниш какво искаш да направиш. :)
 
тези редове са, че когато юзър левела е 3 да изписва администратор, а когато е 2 модератор , но нещо не се получава ... надявам се да си ме разбрал, а иначе ето ти сял-а които искат

Код:
TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) NOT NULL,
  `title` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `gender` enum('1','2') NOT NULL,
  `state` int(11) NOT NULL,
  `day` int(11) NOT NULL,
  `month` int(11) NOT NULL,
  `year` int(11) NOT NULL,
  `rstatus` enum('0','1','2','3','4','5') NOT NULL DEFAULT '0',
  `rstatus_with` int(11) NOT NULL,
  `phone` varchar(255) NOT NULL,
  `skype` varchar(255) NOT NULL,
  `icq` varchar(255) NOT NULL,
  `regdate` varchar(255) NOT NULL,
  `vip` enum('0','1') NOT NULL DEFAULT '0',
  `level` enum('1','2','3') NOT NULL DEFAULT '1',
  `active` enum('0','1') NOT NULL DEFAULT '1',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=36 ;
 
Двата средни реда въобще не трява да са там и как работи без да ти показва грешка, не знам.
PHP:
    while($row = mysql_fetch_array($query))
if ( $level == '3' Администратор );
if ( $level == '2' Модератор );
    {

Променливата $level въобще не съществува, т.е. проверяваш срещу празна стойност. level е ключ в масива $row

PHP:
    while($row = mysql_fetch_array($query)){
    {
         if ( $row['level'] == '3'){
              $level_name = 'Администратор ';
          }elseif ( $row['level'] == '2' ){
               $level_name = 'Модератор ';
         }else{
               $level_name = '';
         }

          //тук слагаш кода на таблицата
          //и използваш $level_name за да покажеш нивото
    }

Вероятно за тези нива имаш таблица, където са описани. Ако е така, двете таблици - потребители и нива, могат да се свържат в една заявка и директно да получаваш името на нивото, без да е необходимо да правиш тази if/else контролна структура.
 
пак ми изкарва същата грешка ... а именно

Код:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
 
Ама ти получаваш SQL грешка и до сега не каза?

В този код, сигурен ли си че $level има стойност?
PHP:
$query = mysql_query("SELECT * FROM `users` WHERE level=$level") or die (mysql_error());
 
Ето тази част от кода:
[sql]SELECT * FROM `users` WHERE level=$level[/sql]
се нарича заявка, написана на езика SQL, която се изпълнява в случая от сървъра за бази от данни MySQL. Някъде преди този ред, трябва да е зададена стойност на променливата $level, ако не е, тогава заявката е грешна, защото реално се получава:
[sql]SELECT * FROM `users` WHERE level=[/sql]
а би трябвало да е (примерно):
[sql]SELECT * FROM `users` WHERE level=2[/sql]
но ако не си задал стойност на $level преди изпълнението на заявката, тя е грешна и MySQL връща съобщение за грешка.
 
ааааа нямам такава заявка за левел ... как ще стане с двата левела едновремено ?
 
Покажи структурата на таблицата с нивата. Като това дето показа по-горе - create table users.... ама тоя път create table levels или нещо такова, и ще ти напиша заявката.
 
нямам таблица левелс ... само поле левел във таблица юзърс , която показах, и фактически от там искам да взема информацията за левелите, ако е възможно
 
Хайде да ти създадеме една и информацията от там да си я ползваш навсякъде, където трябва да работиш с нивата на потребителите?

Този код го пусни в phpMyAdmin. Ще създаде нова таблица с име level и три нива: 1 - потребител, 2 - модератор, 3 - администратор
[sql]
create table `level` (
`id` int(10) unsigned not null primary key auto_increment,
`name` varchar(50) not null unique
);

insert into `level` values (1, 'Потребител'), (2, 'Модератор'), (3, 'Администратор');
[/sql]

След това променяш тази заявка в РНР кода:
PHP:
$query = mysql_query("SELECT * FROM `users` WHERE level=$level") or die (mysql_error());

с новия вариант:
PHP:
$query = mysql_query("SELECT `users`.*, `level`.`name` as `level_name` FROM `users` left join `level` on `users`.`level` = `level`.`id` ") or die (mysql_error());

//и малко по-надолу:
while($row = mysql_fetch_array($query)){ 
     //$row['level_name'] ще съдържа името на нивото
}
 

Back
Горе