0

我试图掌握 OOP,我决定建立一个访问 sql 数据库的站点。到目前为止效果很好,我有几张桌子,但我遇到了障碍

我访问数据库并创建一个对象数组

$Dog_array = $sth->fetchAll(PDO::FETCH_CLASS, 'Dog');

简化了,但我的课看起来像这样。

class Dog {
     private $name;

     function get_name {
     return $this->name;
    } 

建立我的桌子的清单

function edit_table($Dog) {

echo "<table><tr><form action='update.php' method ='post'>";
echo "<input type='hidden' name='id' value='" . $id ."'>";

echo "<td>". $Dog->get_id() ."</td>";
?>
<td><input type='text' name='rname' value="<?php echo $Dog->get_rname(); ?>"></td>
<td><input type='text' name='cname' value="<?php echo $Dog->get_cname(); ?>"></td>
<td><input type='text' name='dob' value="<?php echo $Dog->get_dob(); ?>"></td>
<td><input type='radio' name='gender' value='male' <?PHP if($Dog->get_gender() == 'male'){ echo "checked=\"checked\""; } ?> /> Male
<input type='radio' name='gender' value='female' <?PHP if($Dog->get_gender() == 'female'){ echo "checked=\"checked\""; } ?> />Female</td>
<td><input type='text' name='sire' value="<?PHP echo "builddropdown" ?> "></td>
<td><input type='text' name='dam' value="<?PHP drop_menu() ?>"></td>
<?php

if ($Dog->get_available()) {
    $checked = "checked=\"checked\"";
} else {
    $checked = NULL;
echo "<td><input type=\"checkbox\"" . $checked . "name=\"available\" value=\"TRUE\"/></td>";

if ($Dog->get_display()) {
    $checked = "checked=\"checked\"";
} else {
    $checked = NULL;
}
echo "<td><input type=\"checkbox\"" . $checked . "name=\"display\" value=\"TRUE\"/></td></tr></table>";
?>
<input type='submit' value='change image'/></form>
<FORM METHOD="LINK" ACTION="upload.php">
<INPUT TYPE="submit" VALUE="Change Image Thumb">
</FORM>
<input type='submit' value='change image'/></form>
<FORM METHOD="LINK" ACTION="upload.php">
<INPUT TYPE="submit" VALUE="Change Image Thumb">
</FORM>
    <?php
    }
?>
<input type='submit' value='update'/></form>
<FORM METHOD="LINK" ACTION="index.php">
<INPUT TYPE="submit" VALUE="Back">
</FORM>
<?php 
}

?>

我的下拉

function drop_menu() {

?>
<form name ="dropdown">
<select ="alldogs">
<?php
        foreach ($Dog_array as $Dogs) { 
        ?>
        <option value="<?php echo $Dogs->get_id() . "\">" . $Dogs->get_rname();   ?></option>
<?php } ?>
</select>
</form>
<? }

我的下拉菜单创建了所有狗的列表。

我收到为 foreach 提供的错误参数无效

我明白为什么我得到错误我只是不知道如何清理它所以我不必将我的 Object 数组传递给我的 edit_table 函数,这样我就可以将它传递给下拉函数。我考虑过创建一个子类,但菜单是由一组对象而不是一个对象构建的,所以我也不知道如何使这项工作。论坛发帖的新手,所以请随意推荐一些关于我如何寻求帮助的更正。

4

2 回答 2

0

这是arrage $Dog_array 范围的问题。您需要将 $Dog_array 传递给 drop_menu 函数。

<?php
function drop_menu($Dog_array) {

?>
<form name ="dropdown">
<select ="alldogs">
<?php
foreach ($Dog_array as $Dogs) { 
?>
<option value="<?php echo $Dogs->get_id() . "\">" . $Dogs->get_rname();   ?>></option>
<?php } ?>
</select>
</form>
<? }

并且每当您需要调用该函数时,请正常传递数组。

您也可以通过引用传递

<?php
function drop_menu(&$Dog_array) {?>

在这种情况下,对函数内部数组的任何操作都会直接影响原始数组。

于 2012-08-13T07:05:10.333 回答
0
function dropdown( $name, array $options, $selected=null )
{

    //array_push($options, "");

    /*** begin the select ***/

    //<select name="dropdownarray" id="dropdownarray">
    $dropdown = '<select name="'.$name.'" id="'.$name.'">';
    $selected = $selected;
    /*** loop over the options ***/

      echo  "<b>$name : </b>";  // Title

     $dropdown .= '<option value=></option>'."\n"; //empty data


    foreach( $options as $key=>$option )
    {
        /*** assign a selected value ***/
        $select = $selected==$key ? ' selected' : null;

        /*** add each option to the dropdown ***/
        $dropdown .= '<option value="'.$key.'"'.$select.'>'.$option.'</option>'."\n";
    }

    /*** close the select ***/
    $dropdown .= '</select>'."\n";


    /*** and return the completed dropdown ***/
    return $dropdown;
}

enter code here
于 2015-02-06T07:22:40.610 回答