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

Форум PHP

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

 

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

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

тема: Передача данных из одного скрипта в другой
 
 автор: LimP   (11.09.2004 в 18:38)   письмо автору
 
 

здрасьте,прошу вашего совета,я пишу такой скрипт наподобие блока новости,но немного другой,но дело не в этом,у меня возникла небольшая проблемка,ее суть отражается в названии этой темы,короче у меня есть два скрипта(я здесь приведу тот,который поменьше,а другой я закину к вам на сервер как файл)
<?
if($_POST['name']="") echo "<center><b> Ошибка,вы не ввели названия новости </b></center>";
if(
$_POST['body']="") echo "<center><b> Ошибка,вы не ввели текст новости </b></center>";   
//вставляем http
$url strtr($_POST['url'], "HTTP""http");
  if (!empty(
$url)) { 
    if (
strtolower((substr($url07))!="http://") && (strtolower(substr($url07))!="ftp://")) $url="http://".$url;
  }
$_POST['name'] = str_replace("'""'"$_POST['name']);
$_POST['body'] = str_replace("'""'"$_POST['body']);
//закачиваем файл на сервер
if (!empty($_FILES['url_pict']['tmp_name']) && $_FILES['url_pict']['tmp_name'] != "-")
  {
    
// Закачиваем файл
    
$path="files/".date("YmdHis",time()).strrchr($_FILES['url_pict']['name'], "."); 
    
// Путь указан верно, так как в админе нужно поднятся на два каталога вверх,
    // а на сайте на один
    
if (copy($_FILES['url_pict']['tmp_name'], "../".$path)) $picture $path;
  }

?>

это код-обработчик,а код самого файла я прикрепил...
так вот проблема в том,как мне передать данные из прикрепленного фала в файл,который указан выше...как видно,методом get у меня ничего не получилось...и кстати,расскажите мне пожалуста,как сделать так,чтобы данные передавалисьв виде http;//localhost/site/news/admin/formaddpost.php?name=///&bode=///...........как это ваще мне сделать???

   
 
 автор: Адоп Акробат   (11.09.2004 в 18:47)   письмо автору
 
   для: LimP   (11.09.2004 в 18:38)
 

Я приложил ссылку там cheops очень хорошо все объесняет
Выбирай который тебе удобней
Если есть вопросы по какомонебуть из этих способов спрашивай

http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=298&page=1

   
 
 автор: cheops   (11.09.2004 в 19:01)   письмо автору
 
   для: LimP   (11.09.2004 в 18:38)
 

Хм... вообще происходит передача методом POST, передача через URL как вы пишете - это метод GET, для этого в тэге form следует вместо method='post' использовать method='get', а в обработчике, вместо суперглобального массива $_POST - суперглобальный массив $_GET.

PS А... я кажется жучок у вас нашёл
<?php
if($_POST['name']=""// Следует использовать == вместо =
if($_POST['body']=""// Следует использовать == вместо =
?>

   
 
 автор: LimP   (11.09.2004 в 21:08)   письмо автору
 
   для: cheops   (11.09.2004 в 19:01)
 

да,точно,спасибо,а то я как-то и не подумал...все работает...

   
 
 автор: LimP   (11.09.2004 в 23:21)   письмо автору
 
   для: LimP   (11.09.2004 в 21:08)
 

драсти опять всем,еше не поможете немного,у меня вот такой вот скриптик:
<?
include("../config.php");
if(
$_POST['name']=="") echo "<center><b> Ошибка,вы не ввели названия новости </b></center>";
if(
$_POST['body']=="") echo "<center><b> Ошибка,вы не ввели текст новости </b></center>";   
//вставляем http
$url strtr($_POST['url'], "HTTP""http");
  if (!empty(
$url)) { 
    if (
strtolower((substr($url07))!="http://") && (strtolower(substr($url07))!="ftp://")) $url="http://".$url;
  }
$_POST['name'] = str_replace("'""'"$_POST['name']);
$_POST['body'] = str_replace("'""'"$_POST['body']);
//закачиваем файл на сервер
if (!empty($_POST['file']))
  {
    
// Закачиваем файл
    
$path="files/".date("YmdHis",time()).strrchr($_POST['file'], "."); 
    
// Путь указан верно, так как в админе нужно поднятся на два каталога вверх,
    // а на сайте на один
    
if (copy($_POST['file'], "../".$path)) $picture $path;
  }
 
$query "INSERT INTO news VALUES (0,
                                     '"
.$_POST['name']."',
                                     '"
.$_POST['body']."',
                                     now(),
                                     '"
.$_POST['url']."',
                                     '"
.$_POST['url_text']."',
                                     '
$picture',
                                     'show');"
;
$ok = @mysql_query($query);
if(!
$ok)
{
 echo
"<center><b>Ошибка при выполнении запроса...</b></center>";
}
else
{
 [
b][i]$id_mesag mysql_query(select id_news from news where name='".$_POST['name']."');[/i]
 if(
$id_mesag)
 {
  
$id_msg mysql_fetch_object($id_mesag);
 }
 echo 
"<meta http-equiv='refresh' content='0;url=index.php?start=$id_msg->id_news'>";[/b]
}
?>

у меня че-то не то с тем местом,которое выделено жирным,особенно не получается запрос к мускулу,который выделен жирным курсивом...мне надо,чоб мне мускул выдал id_news по имени новости $_POST['name'] или по его телу $_POST['body']
я делаю вот так,а он мне говорит,мол не получается,мол ошибка в запросе...но вроде все правильно...

   
 
 автор: cheops   (11.09.2004 в 23:44)   письмо автору
 
   для: LimP   (11.09.2004 в 23:21)
 

Хм... непорядок с сокобками, следует переписать на следующий манер:
<?php
$query 
"select id_news from news where name=".$_POST['name'];
$id_mesag mysql_query($query);
?>

   
 
 автор: Адоп Акробат   (12.09.2004 в 02:32)   письмо автору
 
   для: LimP   (11.09.2004 в 23:21)
 

А что выделенно жирным :) шучу :)
LimP а ошибочку тоже показалбы :)

   
 
 автор: LimP   (12.09.2004 в 09:54)   письмо автору
 
   для: Адоп Акробат   (12.09.2004 в 02:32)
 

вроде уже ошибку в запросе не пишет,но вот не работает передеача вот эта
<?php echo "<meta http-equiv='refresh' content='0;url=index.php?start=$id_msg->id_news'>" ?>

   
 
 автор: cheops   (12.09.2004 в 10:09)   письмо автору
 
   для: LimP   (12.09.2004 в 09:54)
 

Тоже самое... не будет работать так как это эквивалентно:
<?php
  
echo "<meta http-equiv='refresh' content='0;url=index.php?start=".$id_msg."->id_news'>"
?>

Следует исправить на
<?php
  
echo "<meta http-equiv='refresh' content='0;url=index.php?start=".$id_msg->id_news."'>"
?>

   
 
 автор: LimP   (12.09.2004 в 11:12)   письмо автору
 
   для: cheops   (12.09.2004 в 10:09)
 

сделал,как вы сказали,но вот что мне отвечает сервер:
Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\www\scripts\site\news\admin\addpost.php on line 42
а line 42 это как раз и есть  
<?php echo "<meta http-equiv='refresh' content='0;url=index.php?start=".$id_msg->id_news."'>";?>

   
 
 автор: cheops   (12.09.2004 в 11:33)   письмо автору
 
   для: LimP   (12.09.2004 в 11:12)
 

Хм... попробуйте заменить участок:
<?php
if($id_mesag

  
$id_msg mysql_fetch_object($id_mesag); 

echo 
"<meta http-equiv='refresh' content='0;url=index.php?start=".$id_msg->id_news."'>";
?>

на
<?php
if($id_mesag

  
$id_msg mysql_fetch_object($id_mesag); 
  echo 
"<meta http-equiv='refresh' content='0;url=index.php?start=".$id_msg->id_news."'>";
}
else
{
  echo 
"Ошибка в SQL-запросе";
}
?>


PS Вместо mysql_fetch_object лучше использовать mysql_fetch_array - если элемент отсутствует, по крайней мере не будет синтаксической ошибки.

   
 
 автор: LimP   (12.09.2004 в 14:15)   письмо автору
 
   для: cheops   (12.09.2004 в 11:33)
 

я переписал вот так
<?php 
$query 
"select id_news from news where name=".$_POST['name']; 
 
$id_mesag mysql_query($query); 
 if(
$id_mesag
 { 
  $id_msg mysql_fetch_array($id_mesag); 
  echo "<meta http-equiv='refresh' content='0;url=index.php?start=".$id_msg['id_news']."'>"
 } 
 else 
 { 
  echo "Ошибка в SQL-запросе"
 } 
?>

но он мне пишет вот эту ошибку
Parse error: parse error, unexpected T_VARIABLE in C:\www\scripts\site\news\admin\addpost.php on line 40
а 40 строка это
$id_msg = mysql_fetch_array($id_mesag);
но че здеся неправильно,я даже и не знаю...

   
 
 автор: cheops   (12.09.2004 в 16:53)   письмо автору
 
   для: LimP   (12.09.2004 в 14:15)
 

Мда... убийственное заявление от интерпретатора... Вообще говоря, код чист. Хм... у вас в результате должна быть одна переменная... попрбуйте ещё через mysql_result()
<?php
    $id_msg 
mysql_result($id_mesag,0);
    echo 
"<meta http-equiv='refresh' content='0;url=index.php?start=$id_msg'>";
?>

   
 
 автор: LimP   (12.09.2004 в 19:48)   письмо автору
 
   для: cheops   (12.09.2004 в 16:53)
 

все таже ошибка на стоке 40...
 $id_msg = mysql_result($id_mesag,0);
а вообще все это работает...(в смысле функции эти)

   
 
 автор: Адоп Акробат   (12.09.2004 в 20:02)   письмо автору
 
   для: LimP   (12.09.2004 в 19:48)
 

Может у тебя ошибка чуть раньше этой строки может точку с запятой забыл поставить воеши перед ним

   
 
 автор: LimP   (12.09.2004 в 20:32)   письмо автору
 
   для: Адоп Акробат   (12.09.2004 в 20:02)
 

да нига,там все стоит,вот полный скрипт...
<?
include("../config.php");
if(
$_POST['name']=="") echo "<center><b> Ошибка,вы не ввели названия новости </b></center>";
if(
$_POST['body']=="") echo "<center><b> Ошибка,вы не ввели текст новости </b></center>";   
//вставляем http
$url strtr($_POST['url'], "HTTP""http");
  if (!empty(
$url)) { 
    if (
strtolower((substr($url07))!="http://") && (strtolower(substr($url07))!="ftp://")) $url="http://".$url;
  }
$_POST['name'] = str_replace("'""'"$_POST['name']);
$_POST['body'] = str_replace("'""'"$_POST['body']);
//закачиваем файл на сервер
if (!empty($_POST['file']))
  {
    
// Закачиваем файл
    
$path="files/".date("YmdHis",time()).strrchr($_POST['file'], "."); 
    
// Путь указан верно, так как в админе нужно поднятся на два каталога вверх,
    // а на сайте на один
    
if (copy($_POST['file'], "../".$path)) $picture $path;
  }
 
$query "INSERT INTO news VALUES (0,
                                     '"
.$_POST['name']."',
                                     '"
.$_POST['body']."',
                                     now(),
                                     '"
.$_POST['url']."',
                                     '"
.$_POST['url_text']."',
                                     '
$picture',
                                     'show');"
;
$ok = @mysql_query($query);
if(!
$ok)
{
 echo
"<center><b>Ошибка при выполнении запроса...</b></center>";
}
else
{
 
$query "select id_news from news where name=".$_POST['name']; 
$id_mesag mysql_query($query); 
 if(
$id_mesag
 { 
  $id_msg mysql_fetch_array($id_mesag); 
  echo "<meta http-equiv='refresh' content='0;url=index.php?start=".$id_msg['id_news']."'>"
 } 
 else 
 { 
  echo "Ошибка в SQL-запросе"
 } 
}
?>

   
 
 автор: LimP   (12.09.2004 в 20:53)   письмо автору
 
   для: LimP   (12.09.2004 в 20:32)
 

:)))

   
 
 автор: cheops   (12.09.2004 в 21:06)   письмо автору
 
   для: LimP   (12.09.2004 в 20:32)
 

Мистика... Может русские буквы где просочились...

PS Остаётся только одно запакуйте форму, этот обработчик и кусочек базы в архив и выложите здесь или пошлите мне на почту - нужно отлаживать... Помнится, мы когда с вами MySQL настраивали там тоже какие-то несуразные ошибки ни с того, ни с сего вываливались... может опять...

   
 
 автор: LimP   (12.09.2004 в 21:18)   письмо автору
 
   для: cheops   (12.09.2004 в 21:06)
 

да ну,я думаю,все дело в отладке...вот вам три файла-это formaddpost-форма добавления записи addpost-непосредственно обработчик этой формы и файл-конфигуратор мускула...

   
 
 автор: cheops   (13.09.2004 в 10:20)   письмо автору
 
   для: LimP   (12.09.2004 в 21:18)
 

Там вместо пробелов в это строке и ещё парочке были какие-то левые символы - там как они невидимые, воспринимаются как пробелы, но PHP об них запинался... Исправленный вариант в аттаче...

PS Отлавливать их хорошо под кодировкой DOS, например в FAR.

   
 
 автор: LimP   (13.09.2004 в 13:36)   письмо автору
 
   для: cheops   (13.09.2004 в 10:20)
 

че-то вы тама перехимичили,я вам тута опять эти файлики и принтскрин "ошибочки" вложил ...

   
 
 автор: LimP   (13.09.2004 в 21:18)   письмо автору
 
   для: LimP   (13.09.2004 в 13:36)
 

:)))

   
 
 автор: cheops   (13.09.2004 в 23:27)   письмо автору
 
   для: LimP   (13.09.2004 в 13:36)
 

Хм... а у меня на ура идёт. Посмотрите на URL - он более чем странный, такое бывает когда PHP не прописан и не интерпретирует код...

   
 
 автор: LimP   (13.09.2004 в 23:55)   письмо автору
 
   для: cheops   (13.09.2004 в 23:27)
 

ну не знаю,у меня все другие скрипты работают и код интерпретируется...

> Посмотрите на URL - он более чем
>странный
какой URL ???

   
 
 автор: cheops   (13.09.2004 в 23:59)   письмо автору
 
   для: LimP   (13.09.2004 в 23:55)
 

В строке запроса Opera на картинке - там же элементы PHP-кода

   
 
 автор: glsv (Дизайнер)   (14.09.2004 в 01:19)   письмо автору
 
   для: LimP   (13.09.2004 в 13:36)
 

У вас что то с обработкой php случилось или с сервером. Код в файле не выполняется. И он открыт как просто текстовый файл.
У вас в строке браузера

file://localhost/c:/www.....

   
 
 автор: LimP   (14.09.2004 в 13:14)   письмо автору
 
   для: glsv (Дизайнер)   (14.09.2004 в 01:19)
 

а сейчас вообще пустая страница появляется,уже не пишет никаких ошибок...а может в php.ini нужно че-то настроить,чтоб передавать данные из одного скрипта в другой???хотя я не знаю,у меня в других скриптах все передается и работает без проблем...
так у вас вот именно вот эти работают???

   
 
 автор: cheops   (14.09.2004 в 14:25)   письмо автору
 
   для: LimP   (14.09.2004 в 13:14)
 

Да брал из вашего последнего архива, не изменял ничего, только путь к config.php...

   
 
 автор: LimP   (14.09.2004 в 21:12)   письмо автору
 
   для: cheops   (14.09.2004 в 14:25)
 

я не знаю что и делать...у меня ваще ничего,белый лист,раньше хоть если поля были пустыми,писал ошибку,а теперь ваще мертвяк...может мне порробовать данные передавать через куки или сессии???или тоже самое будет???

   
 
 автор: cheops   (14.09.2004 в 22:15)   письмо автору
 
   для: LimP   (14.09.2004 в 21:12)
 

Т.е. даже не воспроизводится раз от раза? А сервер MySQL не слетал, или php.ini случайно не переписался?

   
 
 автор: glsv (Дизайнер)   (14.09.2004 в 23:11)   письмо автору
 
   для: LimP   (14.09.2004 в 13:14)
 

Давайте уточним что происходит.

Вы запускаете файл formaddpost.php? Заполняете поля и нажимаете "Добавить"? И что происходит после этого?
Пустая страница? Или те краказаблы, что вы показывали в принскрине в предыдущем архиве?

Вот то что в принскрине - очень странно. Там не видно работы сервера. Там открыт локальный файл и php даже близко нет.

Когда вы открыли файл formaddpost.php у Вас какой путь в строке браузера стоял? Что нибудь вроде этого? Или другой?

http://localhost/news/formaddpost.php

   
 
 автор: LimP   (15.09.2004 в 13:57)   письмо автору
 
   для: glsv (Дизайнер)   (14.09.2004 в 23:11)
 

да,когда я открыл страницу,абракадабры уже не было,но был чистый пустой лист,лана,ребят,не парьтесь,я уже начал заново писать,щас все вроде номана работает...я все по правилам делаю,наверное,как уже когда cheops проверял и удалил невидимые лишние символы,наверное тама еще были...но я щас все с нового пишу,вроде нифига не должно быть,спасибо за то,что подсказали с передачей переменных :)))

   
 
 автор: LimP   (16.09.2004 в 13:30)   письмо автору
 
   для: LimP   (15.09.2004 в 13:57)
 

драсьте,у меня вот к вам вопрос...вы в своем скрипте "новости" используете переменную $start не могли бы вы мне объяснить принцип ее функции,каким образом при ее поможи выводятся сооющения,в зависимости от последнего написанного,которое выводится первым,просто я задумал при добавлении скрипта сразу определять его id_news по названию новости и его теле...и непосредственно выводить ту новость первой у которой стоит тот id_news,что был передан этому скрипту обработчиком формы добавления сообщения,но я чую,что у меня будут проблемы с моим вариантом,так что,помогите,объясните принцип работы вашей переменной $start...

   
 
 автор: LimP   (16.09.2004 в 19:08)   письмо автору
 
   для: LimP   (16.09.2004 в 13:30)
 

:))

   
 
 автор: LimP   (16.09.2004 в 22:17)   письмо автору
 
   для: LimP   (16.09.2004 в 19:08)
 

:)))))))))

   
 
 автор: cheops   (16.09.2004 в 22:29)   письмо автору
 
   для: LimP   (16.09.2004 в 13:30)
 

Тема уже очень длинная - не удобно отвечать, вынес вопрос в отдельную тему по ссылке...

http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=326&page=1

   
Rambler's Top100
вверх

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