Изкарване на новина

lub4o

Registered
Здрававейте, за да получа следния ефект
index.php?id=3 и примерно ако се напише id= да излиза 'Някъв текст', а ако остане само index.php да си ми вади индекса съответно като се напише ?index.php?id=3 да вади съответната новина.

edit
 
Ако съм те разбрал правилно, според мен е switch по-удачният вариант... Въпреки, че въпросът ти е от типа "Левски" или "ЦСКА", C++ или Pascal... Абсолютно въпрос на избор. :)
Поздрави!
 
Разбира се, колега! :)

С [ GET ]:
Код:
$id = (int)$_GET['id'];
if (!isset($id) || !is_numeric($id) || $id < 1) {
	header('Location: index.php');
	die("Грешка! Няма такава новина!");
}
$result = mysql_query("SELECT * FROM `news` WHERE id = '$id'") or die(mysql_error());
$row = mysql_fetch_assoc($result);

if(mysql_num_rows($result) == 1) {
   //Изобразяване на нещата с $row['...']; и т.н.
} else {
	die("Няма такава новина!");
}

Линкът ти трябва да е от вида:
Код:
$result = mysql_query("SELECT id, title FROM `news` GROUP BY id") or die(mysql_error());
while ($row = mysql_fetch_array($result)) {
	print '<a href="index.php?id='.$row['id'].'">'.$row['title'].'</a><br />'; //Линкове
}

Забележи как съм направил проверката с mysql_num_rows, защото това е много важно... Така, примерно, ако имаш 2 новини, а юзърът напише index.php?id=3 няма да му излиза празно поле. :)
Поздрави!

EDIT: Тъй като авторът на темата се отказа от switch метода - поправям мнението само за GET. :)
 
Да за тази проверка щях да питам, сега кода ми е така
Код:
 $id = (int)$_GET['id'];
            $sql = mysql_query("SELECT * FROM novini WHERE id = '$id'") or die (mysql_error());
           
            if(!isset($id) || !is_numeric($id) || $id == null)
            {
                echo 'В грешка си пич';
            }else{
            while($row = mysql_fetch_assoc($sql))
            {
                
                echo "
                    Заглавие: <a href='index.php?id=$row[id]'>$row[title]</a> <br />
                    Новина: $row[novina] <br />
                    Дата на качване: "; echo  date("Y-m-d", $row[date])."<br />
                    Автор: $row[avtor] <br />
                    <hr />";
               

            }
            }

Но, като направя в цикъла while проверка if($row[id] == null){ echo 'error'; }else{ echo 'koda'; } и не става.
Смисъл не знам как да направя тази проверка, дали съществува ид-то в базата. Правя я и така и пак не става

Код:
$id = (int)$_GET['id'];
            $sql = mysql_query("SELECT * FROM novini WHERE id = '$id'") or die (mysql_error());
            $broi = mysql_num_rows($sql);
            if(!isset($id) || !is_numeric($id) || $id == null)
            {
                echo 'В грешка си пич';
            }else{

            
             while($row = mysql_fetch_assoc($sql))
            {
                if(!isset($row[id]))
                {
                 echo 'ne sushtestuva';
                }else{
                   echo "
                    Заглавие: <a href='index.php?id=$row[id]'>$row[title]</a> <br />
                    Новина: $row[novina] <br />
                    Дата на качване: "; echo  date("Y-m-d", $row[date])."<br />
                    Автор: $row[avtor] <br />
                    <hr />";
                }
               


            
            }
            }
 
Тази вечер нещо мисленето не ми се удава... Направих я без да съм ти видял поста..сигурно вече 7 пъти редактирам поста си. :D По-горе съм го написал, просто един else накрая.
Поздрави!
 
PHP:
<?php
$id = (int)$_GET['id'];
            $sql = mysql_query("SELECT * FROM novini WHERE id = '$id'") or die (mysql_error());
$kolko = mysql_num_rows($sql);
            $broi = mysql_num_rows($sql);
            if(!isset($id) || !is_numeric($id) || $id == null)
            {
                echo 'В грешка си пич';
            }else{
if($kolko<=0){
    echo'Няма такава новина';
}else{
            
             while($row = mysql_fetch_assoc($sql))
            {
                   echo "
                    Заглавие: <a href='index.php?id=$row[id]'>$row[title]</a> <br />
                    Новина: $row[novina] <br />
                    Дата на качване: "; echo  date("Y-m-d", $row[date])."<br />
                    Автор: $row[avtor] <br />
                    <hr />";
            }
            }
            }
            ?>
 
Ооо колко съм прост, тази седмица съм неориентиран многоо. И двамата ми помогнахте, точка ще видя на кой ще дам. Благодаря ви
 
Тоест накрая ще ти се получи нещо подобно...
PHP:
<?php 
$id = (int)$_GET['id'];
if (!isset($id) || !is_numeric($id) || $id < 1) {
   header('Location: index.php');
   die("Грешка! Няма такава новина!");
}
$result = mysql_query("SELECT * FROM `novini` WHERE id = '$id'") or die(mysql_error());
$row = mysql_fetch_assoc($result);

if(mysql_num_rows($result) == 1) {
   $q = mysql_query("SELECT id, title, novina, data, avtor FROM `news` GROUP BY id") or diе(mysql_error());
   while ($row = mysql_fetch_array($q)) { ?>
      Заглавие: <a href='index.php?id=$row[id]'>$row[title]</a> <br /> 
      Новина: $row[novina] <br /> 
      Дата на качване: "; echo  date("Y-m-d", $row[date])."<br /> 
      Автор: $row[avtor] <br /> 
      <hr />
<?php
   }
} else {
   die("Няма такава новина!");
}

И на теб ще кажа - не бързай да използваш else! Кодът ти върви отгоре-надолу, така че естествено, че след проверката ще е противният и случай (т.е. else).
Поздрави! :)
 
Ами аз в момента го правя така
PHP:
if($broi > 0) { 'while koda'; }else{ echo 'w greshka si' }

Предполагам, че дали ще е = 1 или > 0 няма значение
 

Back
Горе