Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Тиражирование страниц
 
 автор: Treat   (12.08.2008 в 14:50)   письмо автору
 
 

Пишу cmsку на php вместе с mysql, но главной своей функции она у меня не выполняет: не могу сделать так, чтобы пользователь мог добавлять новые разделы сайта - страницы соответственно. Как php генерирует страницы по ссылкам с соответствующим наполнением по одному шаблону дизайна? Ссылки формируются по id записи таблицы в базе данных, имеют вид http://www.praktik.ru/index.php?page=1, у каждого id есть свой контент, который должен быть на очередной странице.

  Ответить  
 
 автор: BinLaden   (12.08.2008 в 14:55)   письмо автору
 
   для: Treat   (12.08.2008 в 14:50)
 

<?php

print_r
($_GET);

?>

  Ответить  
 
 автор: Treat   (12.08.2008 в 15:01)   письмо автору
 
   для: BinLaden   (12.08.2008 в 14:55)
 

надеюсь в то место поставлю...

  Ответить  
 
 автор: BinLaden   (12.08.2008 в 15:02)   письмо автору
 
   для: Treat   (12.08.2008 в 15:01)
 

Это можно что разве в тестовый файл поставить. Вам нужно брать параметры вроде идентификатора из массива $_GET и потом уже выбрать из БД данные в соответсвии с этим id.

  Ответить  
 
 автор: Treat   (12.08.2008 в 15:04)   письмо автору
 
   для: BinLaden   (12.08.2008 в 15:02)
 

Вот это у меня выводит меню:

function menu()
{
include('php/connectdb.php');
$result=mysql_query("SELECT id,title FROM content");
while (($a=mysql_fetch_array($result))==True)
{echo ("&#183; "."<a href='index.php?page=".$a['id']."'>".$a['title']."</a><br>");
}
mysql_close();
}

ссылки формируются, а дальше я пока не пойму.

  Ответить  
 
 автор: BinLaden   (12.08.2008 в 15:08)   письмо автору
 
   для: Treat   (12.08.2008 в 15:04)
 

Вы знаете как не следующей странице получить этот параметр (page)?
Вы знаете как составить SQL-запрос на выборку определенных данных из БД для этого идентификатора, который почему-то в переменной под именем page?

P.S. Надо один раз подключится, а не перед каждым запросом разрывать и создавать новое подключение.

  Ответить  
 
 автор: Treat   (12.08.2008 в 15:15)   письмо автору
 
   для: BinLaden   (12.08.2008 в 15:08)
 

У меня кроме главной страницы вообще никакая больше страница не получается, sql-запросы вроде знаю. Я сделала главную страницу, на которой есть оформление, меню и главный текст у меня будут подключаться через функции

<? require("func.php"); ?>
<?php menu
(); ?>
<?php text
(); ?>

изначально я их написала как func.php

<?php

function menu()
{
include(
'php/connectdb.php');
$result=mysql_query("SELECT id,title FROM content");
while ((
$a=mysql_fetch_array($result))==True)
{echo (
"&#183; "."<a href='?page=".$a['id']."'>".$a['title']."</a><br>");
}
mysql_close();
}

function 
text()
{
include(
'php/connectdb.php');
$result=mysql_query("SELECT title,text FROM main");
while ((
$a=mysql_fetch_array($result))==True)
{echo (
"<div id='f1'>".$a['title']."</div><div id='f2'>".$a['text']."</div><br>");
}
mysql_close();
}

?>

  Ответить  
 
 автор: BinLaden   (12.08.2008 в 15:27)   письмо автору
 
   для: Treat   (12.08.2008 в 15:15)
 

Вам лучше вынести соединения с БД за пределы функций:

<?php
require("func.php");
include(
'php/connectdb.php'); 

menu();
text();
?> 


<?php 

function menu() 

    
$result=mysql_query("SELECT id,title FROM content"); 

    while (
$a=mysql_fetch_assoc($result)) 
    {
        echo (
"&#183; "."<a href='?page=".$a['id']."'>".htmlspecialchars($a['title'])."</a><br>"); 
    } 


function 
text() 

    
$result=mysql_query("SELECT title,text FROM main"); 

    while (
$a=mysql_fetch_assoc($result)) 
    {
        echo (
"<div id='f1'>".htmlspecialchars($a['title'])."</div><div id='f2'>".htmlspecialchars($a['text'])."</div><br>"); 
    } 



?>


Хотя если эти функции вызываются один лишь раз, то их использование не оправдано.

Даале Вам лучше создать другой PHP-файл, чтобы было проще и, соответственно, поменять ссылки.

  Ответить  
 
 автор: Treat   (12.08.2008 в 15:38)   письмо автору
 
   для: BinLaden   (12.08.2008 в 15:27)
 

Исправила, спасибо :)
Как сделать чтобы одной странице соответствовала одна запись текста из таблицы?

  Ответить  
 
 автор: mechanic   (12.08.2008 в 16:08)   письмо автору
 
   для: Treat   (12.08.2008 в 15:38)
 

в функции text() дополнить запрос, чтоб получилось так:
"SELECT title,text FROM main where id = " . $_GET['page']
или вроде того, в соответствии со структурой таблицы main

зы. про уязвимости прошу сейчас не начинать)..

  Ответить  
 
 автор: BinLaden   (12.08.2008 в 16:10)   письмо автору
 
   для: mechanic   (12.08.2008 в 16:08)
 

> зы. про уязвимости прошу сейчас не начинать)..

Почему? Вам так трудно добавить хотя бы intval()?

  Ответить  
 
 автор: mechanic   (12.08.2008 в 16:27)   письмо автору
 
   для: BinLaden   (12.08.2008 в 16:10)
 

нет

  Ответить  
 
 автор: BinLaden   (12.08.2008 в 16:10)   письмо автору
 
   для: Treat   (12.08.2008 в 15:38)
 

<?php

$id 
= isset($_GET['id']) ? (int) $_GET['id'] : 0;

$query "SELECT ... FROM ... WHERE `id` = {$id};";

mysql_query($query) or die("Error while executing '" htmlspecialchars($query) . "': " htmlspecialchars(mysql_error());

# ...

  Ответить  
 
 автор: Treat   (12.08.2008 в 16:43)   письмо автору
 
   для: BinLaden   (12.08.2008 в 16:10)
 

А если все данные сразу хранятся в одной таблице content, где есть id, title и text. как вывести каждую позицию text через какждую новую ссылку?
Извините, что я так плохо все понимаю, просто купила несколько книг, прочитала, а эта проблема нигде не освещается, вот и приходится искать и самой додумывать.

  Ответить  
 
 автор: BinLaden   (12.08.2008 в 17:21)   письмо автору
 
   для: Treat   (12.08.2008 в 16:43)
 

Не совсем понимаю, что Вы хотите. Но, возможно, это:

<?php
    
for( $p 1$a=mysql_fetch_assoc($result); $p++ )  
    { 
        echo (
"<div id='f1'>{$p}) ".htmlspecialchars($a['title'])."</div><div id='f2'>".htmlspecialchars($a['text'])."</div><br>");  
    } 
?>


Это надо заменить в функции text()

  Ответить  
 
 автор: Treat   (12.08.2008 в 17:47)   письмо автору
 
   для: BinLaden   (12.08.2008 в 17:21)
 

я потом эту функцию добавлю своей cms, чтобы она создавала новую страницу с наполнением пользователя, со ссылкой очередного id.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования