簡體   English   中英

為什么我的提交按鈕無法調用php函數?

[英]Why does my submit button fail to call php function?

我有一個非常簡單的php網站,並且正在嘗試使其更加動態。 以前,我要求用戶單擊鏈接以打開一個新頁面,其中包含多個圖像以及一些“提交”按鈕。 按下一個名為php文件的按鈕,該按鈕將一些信息保存在文本框中。 一切正常。 但是,我現在使內容更具動態性,以便用戶從彈出菜單中選擇一項來更新同一頁面中的內容。 但是,現在動態生成的提交按鈕似乎不起作用。 我一般對Web開發還很陌生,所以不確定為什么會這樣。 任何幫助,不勝感激。

這是填充列表框並設置頁面以動態管理內容的index.php文件。

'''PHP

<!doctype html>
<html>
    <head>
        <script>
        function showImages( imageDate ) {
            if ( imageDate == "") {
                document.getElementById("imageTable").innerHTML ="";
                return;
            } else {
                if (window.XMLHttpRequest) {
                    xmlhttp = new XMLHttpRequest();
                } else {
                    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
                }

                xmlhttp.onreadystatechange = function() {
                    if (this.readyState == 4 && this.status == 200 ) {
                        document.getElementById("imageTable").innerHTML = this.responseText;
                    }
                }
                xmlhttp.open("GET", "dispData.php?imageDate="+imageDate, true );
                xmlhttp.send();
            }
        }   
        </script>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <title>Title</title>
        <meta name="language" content="en" />  
        <meta name="description" content="" />  
        <meta name="keywords" content="" /> 
    </head>
    <body>

    <?php

    $myDirectoryStr = "trialImages/";

    // open this directory 
    $myDirectory = opendir($myDirectoryStr);

    // get each entry
    while($entryName = readdir($myDirectory)) {
        $dirArray[] = $entryName;
    }

    // sort into date order
    sort( $dirArray );

    // close directory
    closedir($myDirectory);

    //  count elements in array
    $indexCount = count($dirArray);

    ?>      
        <?php
        // loop through the array of files and print them all in a list
        $cnt = 0;
        for($index=0; $index < $indexCount; $index++) {
            $extension = substr($dirArray[$index], -10);
            // start new row of table
            if ($extension == 'tempIm.png'){

                $dateStr[$cnt] = substr($dirArray[$index], 0, 8 );

                $cnt++;
            }
        }

        //  count elements in array
        $indexCount = count($dateStr);

        // find unique dates
        $dateStrUnique = array_values( array_unique( $dateStr, SORT_STRING ) );

        //  count elements in array
        $indexCount = count($dateStrUnique);

        echo '<form>';
        echo '<select name="dates" onchange="showImages(this.value)">';
        echo '<option value="">select date ...</option>';   

        for($index=0; $index < $indexCount; $index++) {
            echo '<option value="' . $dateStrUnique[$index]. '">' . $dateStrUnique[$index] . '</option>';   
        }

        echo '</select>';
        echo '</form>';

        ?>

        <br>
        <div id="imageTable"><b> image information will be displayed here ... </b></div>
</body>
</html>

'''

這是dispData.php文件,該文件生成用於更新div標簽並包含提交按鈕和圖像的動態內容。

'''PHP

<?php
    // recover some information
    $imageDateTarget = $_GET['imageDate'];

    // image directory
    $myDirectoryStr = "trialImages/";

    // open directory 
    $myDirectory = opendir($myDirectoryStr);

    // get each entry
    while($entryName = readdir($myDirectory)) {
        $dirArray[] = $entryName;
    }

    // sort into date order
    sort( $dirArray );

    // close directory
    closedir($myDirectory);

    //count elements in array
    $indexCount = count($dirArray);

    echo    '<table class="fixed">
            <col width="200px">
            <col width="200px">
            <col width="100px">';       

        // loop through the array of files and display them in table
        for($index=0; $index < $indexCount; $index++) {
            $extension = substr($dirArray[$index], -10);
            // start new row of table       
            if ($extension == 'tempIm.png'){ // input image place in first column

                // image date
                $imageDate = substr($dirArray[$index], 0, 8 );

                // if image date the same as selected date then display image
                if ( strcmp( $imageDateTarget, $imageDate ) == 0 ) {

                    echo '<tr>';
                    echo '<td>' . $dirArray[$index] . '</td>';
                    echo '</tr>';

                    echo '<tr>';
                    echo '<td height=400><img src="' . $myDirectoryStr . $dirArray[$index] . '" class="rotate90" " alt="Image" border=3 height=200 width=400></img></td>';

                    echo '<form action="writeNotes.php"  method="POST">';

                    //search for matching image notes if they exist and display
                    $indexImageNotes = array_search( $imageDate . 'notes.txt', $dirArray );
                    if ($indexImageNotes){
                        $notes = file_get_contents($myDirectoryStr . $imageDate . 'notes.txt');  // read contents into string
                        echo '<td><textarea name = "notes" rows = "26" cols="30">' . $notes . '</textarea></td>';
                    }
                    else {
                        echo '<td><textarea name = "notes" rows = "26" cols="30">add some comments here ...</textarea></td>';
                    }
                    echo '<td><input type = "submit"></input><input type = "hidden" name = "imageDate" value = "' . $myDirectoryStr . $imageDate . '"></input></form></td>';
                    echo '</tr>';
                }
            }   
        }
?>  

'''

這是writeNotes.php函數,用於保存文本注釋,並在按下提交按鈕時調用該函數

'''PHP

<?php 
print_r("I am here");
$file = $_POST["imageDate"] . 'notes.txt';
$data = $_POST["notes"];
file_put_contents($file, $data);
?>

'''

問題的一部分是我沒有收到任何錯誤消息,只是執行writeNotes.php函數失敗

我認為在我先前的代碼中肯定有一些錯誤,因為我嘗試了進一步的簡化版本,這似乎可行。 我只是在下面填充一個popupmenu

'''PHP

<!doctype html>
<html>
    <head>
        <script>
        function showImages( imageDate ) {
            if ( imageDate == "") {
                document.getElementById("imageTable").innerHTML ="";
                return;
            } else {
                if (window.XMLHttpRequest) {
                    xmlhttp = new XMLHttpRequest();
                } else {
                    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
                }

                xmlhttp.onreadystatechange = function() {
                    if (this.readyState == 4 && this.status == 200 ) {
                        document.getElementById("imageTable").innerHTML = this.responseText;
                    }
                }
                xmlhttp.open("GET", "dispData.php?imageDate="+imageDate, true );
                xmlhttp.send();
            }
        }   
        </script>
    </head>
    <body>
        <form>
            <select name="dates" onchange="showImages(this.value)">
                <option value="">select date ...</option>
                <option value="1">1</option>
                <option value="2">2</option>
            </select>
        </form>

        <br>
        <div id="imageTable"><b> information will be displayed here ... </b></div>
</body>
</html>

'''

並在此處返回動態內容

'''PHP

<?php
    echo '<form action="writeNotes.php"  method="POST">
          <td><input type = "submit"></input><input type = "hidden" name = "imageDate" value = "a_value"></input></form></td>';
?>

'''

還有writeNotes.php函數

'''PHP

<?php 
$file = $_POST["imageDate"];
print_r($file);
//header("Location: index.php"); //note there must be no output before using header
?>

'''

這似乎沒有問題。 很抱歉提出先前的問題,並再次感謝您的評論。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM