Неліктен менің жерімде php-бет жұмыс істемейді?

.Php файлымның ағымдық жағдайы: http://rich2233.comoj.com/file2.php

Менде екі мәселе бар: біріншіден, бет жүктелгенде менің барлық уақыт өрістерім ажыратылады (Жоғарыдағы сайтты қараңыз). Екіншіден, мен жіберген кезде келесі қатені аламын: 8-ші жолда foreach() үшін жарамсыз дәлел.

Маған бұл түзетуге көмектесуге бола ма?

 My .txt looks like this:
 8:00 am|Rich Jones
 9:00 am|Available
 ......
 5:00 pm|Available

Код:

  <?php

if (isset($_POST['submit'])) { 
    $find_name = $_POST['name'];
    $find_time = $_POST['time'];
    $filename = getcwd() . "test.txt";
    $lines = file( $filename , FILE_IGNORE_NEW_LINES );
foreach($lines as $key => $line)
{
        list($time, $name) = explode('|', $line);
        if($time == $find_time && $name == "Available")
        {
        $lines[$key] = $time."|".$find_name;
        file_put_contents( $filename , $lines );
        break;
     }
     }

  }
// Read the file into an array
$users = file("test.txt");
$hours_taken = array();

// Begin Table
echo "<table align = 'center' border='2' width='50%' cellspacing='0' 
    cellpadding='0'>";
echo "
Sign/Up Sheet "; echo "<tr><td>Time</td><td>Name</td></tr>"; // Cycle through the array foreach ($users as $user) { //Parse the line list($time, $name) = explode('|', $user); array_push($hours_taken, $time); //Remove newline $name = trim($name); //Output the data in a two column table echo "<tr><td>".$time."</td><td>".$name."</td></tr>"; } echo "</table>"; // Assuming same order of rows in users.txt $hours = array('8:00 am', '9:00 am', '10:00 am','11:00 am', '12:00 pm', '1:00 pm', '2:00 pm', '3:00 pm', '4:00 pm', '5:00 pm'); $i = 1; echo '<form method="post" action="">'; echo 'Name:<input type ="text" id="name" name="name" size="20" maxlength="40" />'; echo '
0
@Biotox $ hour_taken мәнін құтқаруға тырысқан кезде ештеңе басып шығарылмайды ... айнымалыны жасауға тырысқанда, мен оны ақтауға бола ма?
қосылды автор Rich2233, көзі
@hakre: Мен өз кодты функцияларға қойдым. Қате қайтарылмады.
қосылды автор Rich2233, көзі
Барлығы: $ hours_taken мәні «Array» жолын қайтарады, осылайша, бәрі де ажыратылған. Оны іске қосу үшін кодты қалай өзгертуге болады?
қосылды автор Rich2233, көзі
Мүгедектік өрістер үшін $ _GET немесе $ _REQUEST пайдаланып көріңіз. Екінші мәселеге келетін болсақ, ол әр өрісті теңшегеннен кейін қайталаңыз және айнымалы мәндермен не болғанын көру үшін foreach-ге бірнеше жаңғырық қойыңыз.
қосылды автор bl4kh4k, көзі
error_reporting (E_ALL | E_STRICT); ini_set ('display_errors', true); - сіздің достарыңыз. Әрине, сіз грантты ортадасыз деп ойлайсыз;)
қосылды автор Darragh Enright, көзі
foreach() қатесі - бұл test.txt файлында оқылмағандықтан. getcwd() дегеннің орнына $ filename = './test.txt'
қосылды автор Patrick Moore, көзі
Функциялар қате мәнін қайтарса, қайтарады. Сіз бәрін соқыр түрде орнына қоюды емес, «жақсы болды» деп тексеру керек.
қосылды автор hakre, көзі
Мен мұнда ешқандай функцияны көрмеймін ... ;)
қосылды автор Andrew Marshall, көзі
Ақпаратпен толтырылғанына көз жеткізу үшін $ hours_taken дегенді тастағансыз ба?
қосылды автор Biotox, көзі

3 жауаптар

Мінеки:

Test.txt файлын оқуға және жазуға болатындығына көз жеткізіңіз ...

<?php


if (isset($_POST['submit']))
{ 
    $find_name = $_POST['name'];
    $find_time = urldecode($_POST['time']);
    $lines_handle = fopen("test.txt", "r");
    while (($buffer = fgets($lines_handle, 4096)) !== false)
    {
        list($time, $name) = explode('|', $buffer);
        $time = trim($time);
        $name = trim($name);
        if ($time == $find_time && $name == "Available")
        {
            $lines[] = $time."|".$find_name;
        }
        else
        {
            $lines[] = $time."|".$name;
        }
    }
    $lines_handle = fopen("test.txt", "w");
    foreach ($lines as $line)
    {
        fwrite($lines_handle, $line . "\n");    
    }
}
// Read the file into an array
$users_handle = fopen("test.txt", "r");
//$users = file("test.txt");
$hours_taken = array();

// Begin Table
echo "<table align = 'center' border='2' width='50%' cellspacing='0' 
    cellpadding='0'>";
echo "
Sign/Up Sheet "; echo "<tr><td>Time</td><td>Name</td></tr>"; // Cycle through the array while (($buffer = fgets($users_handle, 4096)) !== false) { //Parse the line list($time, $name) = explode('|', $buffer); if (trim($name) != "Available") { array_push($hours_taken, $time); } //Remove newline $name = trim($name); //Output the data in a two column table echo "<tr><td>".$time."</td><td>".$name."</td></tr>"; } echo "</table>"; // Assuming same order of rows in users.txt $hours = array('8:00 am', '9:00 am', '10:00 am','11:00 am', '12:00 pm', '1:00 pm', '2:00 pm', '3:00 pm', '4:00 pm', '5:00 pm'); $i = 1; echo '<form method="post" action="">'; echo 'Name:<input type ="text" id="name" name="name" size="20" maxlength="40" />'; echo '
1
қосылды
Құдай сізге батасын берсін!
қосылды автор Rich2233, көзі

: 8-жолдағы foreach() үшін жарамсыз дәлел.

Бұл желі қатені тудырады:

$lines = file( $filename , FILE_IGNORE_NEW_LINES );

Сіздің $ lines айнымалы мәні null немесе жиым емес.

0
қосылды

және сіз каталог бөлгішсіз болып табыласыз:

public_htmltest.txt

$filename = getcwd() . "test.txt";

осылай көріңіз:

$filename = getcwd() . DIRECTORY_SEPARATOR . "test.txt";
0
қосылды
Бұл қатені болдырмайды және мен жіберген кезде, бет жаңартылады. Өрістер әлі де өшірілген. Оларды қалай түзетуге болатын кез келген идеялар?
қосылды автор Rich2233, көзі
Test.txt ішіндегі үлгі жолы мынадай: 8:00 am | Rich Jones. Мен алдымда жүріп, менің сұрағыма үлгі қалдырды. Көмегіңе рахмет!
қосылды автор Rich2233, көзі
Сіз маған test.txt мазмұнын бере аласыз ба?
қосылды автор eymen, көзі