Проблем с PHP while()

niker

Registered
Извинете имам някакъв проблем с while()
Когато я сложа тази функция и като изпълня заявка от уеба ми
и почва да я изпълнява 2 часа.
Защо така, някой има ли представа

Ползвам:
apache 2.2.14
php 5.2.12
 
Дай кода най-добре. Така без код единствено ми прилича на безкраен цикъл, но ако има край, тогава не знам. Най-добре е с код да си зададеш въпроса :)
 
if (isset($_GET['page'])) {
$page = strip_tags(basename(strtolower($_GET['page'])));
$file = file("text.txt");
foreach ($file as $select) {
$select = explode(",", $select);
while ($select[0] == module) {
$modules = array("$file");
if (in_array($page, $modules)) { require (''.$x.'.php'); }
else { echo "no module"; }
}
}
}


text.txt:


module,register
module,login
....
 
Безкраен цикъл имаш както каза колегата. Защо изобщо използваш while? Използваш го като if за да провериш дали $select[0] е равно на module.

И след като променливата е равна на module, цикъла не спира, защото повтаря една и съща променлива и то многократно. Понеже винаги тази променлива е равна на module, затова не спира.
 
niker каза:
if (isset($_GET['page'])) {
$page = strip_tags(basename(strtolower($_GET['page'])));
$file = file("text.txt");
foreach ($file as $select) {
$select = explode(",", $select);
while ($select[0] == module) {
$modules = array("$file");
if (in_array($page, $modules)) { require (''.$x.'.php'); }
else { echo "no module"; }
}
}
}
защо имам странното чуство че от форийч-а ти идва безкрайния цикъл? смис то всъщност не е цикъл май ми просто няма смисъл щото колко файла с едно и също име може да има на 1 място... 1 ми се струва :idea:
 
Ок как ще стане скрипта.
Искам да направя така:
Файла:
Код:
module,register
module,lostpasword
module,downloads
adminmodule,edituser
adminmodule,editweb
ect...
И да направя 2 функции
едната да чете module и да вкарва 2рата променлива след
запетайката в арая и после да я изкарва като страница.
А другата да чете админските модули и да взима файлове от друга папка.

Мисля, че ме разбрахте какво искам да направя :D
Ако може някой да напише скрипта :cry:
 
Код:
if (isset($_GET['page'])) 
{
$page = basename(strtolower($_GET['page']));
$file = file("text.txt");

foreach ($file as $select) 
{

$expl = explode(",", $select);

if ($expl[0] == 'module')
require $expl[1].'.php';

}

Ако съм те разбрал правилно трябва да е това.
 
Обаче ми дава грешка:


Fatal error: require() [function.require]: Failed opening required './modules/register .php' (include_path='.;C:\php5\pear') in C:\Web\www\_core\web.functions.php on line 32

Е тва май празното място където е м/у register и .php

Незнам защо така се получава.
Във файла няма празни места проверих.
 
Няма празни места, но има нов ред...

Код:
 if (isset($_GET['page']))
{
$page = basename(strtolower($_GET['page']));
$file = file("text.txt");

foreach ($file as $select)
{

$expl = explode(",", $select);

if ($expl[0] == 'module')
require trim($expl[1]).'.php';

}

trim ще изчисти празните места (ако има) и символа за нов ред.
 
Ся проработи, ма взима само 1вия ред от файла и
слага файла дето е от 1вия ред независимо от променливата.
:shock:
 
В тоя иф трябва да проверяваш дали $expl[0] ти съвпада с това, дето ти е от GET. Помисли малко. Синтаксиса си е правилен, ама логиката трябва ти да я измислиш.
 

Back
Горе