0

データベースから情報をエコーする PHP 関数を作成しようとしています。私の col 名は、banana[1]、banana[2]、apple[1]、apple[2]、apple[3] などのようになります。

関数は果物を選択します

function fruits($fruit){

}

そして、その関数内で果物をループします。

これらをエコーするにはどうすればよいですか?

echo $fruit[$i];

明らかに機能しません。

かなり基本的ですが、わかりません。連結は私を殺します。

function ponctuation($section,$sect){

switch($section){
    case 'apple':
        $i=1;
    break;
    case 'banana':
        $i=13;
    break;
}

global $mysql_tablename;
global $FName;
global $Lname;

if(isset($mysql_tablename)){
$result = mysql_query("SELECT * FROM $mysql_tablename WHERE FName='$FName' AND Lname='$Lname'");
    $row = mysql_fetch_array($result);

echo '<form method="post" action="ponctuation.php?'.${$section.$sect}.'_valider">';
echo '<ul>';
$query = mysql_query("SELECT * FROM `ponct_enonces` WHERE `section`='$section' AND `sect`='$sect'");
while($row_q = mysql_fetch_assoc($query)) {
    if($row_q['enon']==0 && $row_q['senon']==0){
        echo '<h2>'.$row_q['enonce'].'</h2>';
    }
    if($row_q['enon']==1){
            echo '<h3>'.$row_q['enonce'].'</h3>';
            echo '<textarea rows="3" cols="100" name="'.$i.'" wrap="physical">' . $row[$section[$i]] . '</textarea>';
    }
    if($row_q['senon']==1){
            echo '<h4>'.$row_q['enonce'].'</h4>';
            echo '<textarea rows="3" cols="100" name="'.$i.'" wrap="physical">' . $row[$section]. '</textarea>';
    }
    $i++;
    }
echo '</ol>';
echo '<input type="submit" name="submit" value="Valider"/>';
echo '</form>';
}

}

コードは少し見苦しく、一部の var にはフランス語の名前が付けられ、他には英語の名前が付けられています。

4

2 に答える 2

0

列名は PHP 配列構造に展開されません。たとえば、

SELECT fruit[1], fruit[2], ...., fruit[100]

あなたに同等のものを与えるでしょう

$row = array(
   'fruit[1]' => someval,
   'fruit[2]' => someval,
   ...
);

それらを繰り返したい場合は、醜くする必要があります。

$fruit = array();
for ($i = 0; $i <= 100; $i++) {
    $fruit[$i] = $row['fruit[' . $i . ']'];
}

これは...なぜですか?これは、使用するのに恐ろしいデータ構造です。それを「フルーツ属性」サブテーブルに適切に正規化すると、この問題がn回避され、固定の 1..100 範囲またはそれが何であれ、属性を持つことができます。

于 2012-10-01T04:12:20.173 に答える
0

行内のすべての列をループしようとしている場合は、次を使用できますfetch_array

$result = $mysqli->query($query);
$row = $result->fetch_array();

// loop over columns
for ($i = 0, $count = count($row); $i < $count; $i++)
    echo $row[$i];

そうすれば、列名について心配する必要はありません。しかし、私はあなたの質問を誤解しているかもしれません。

于 2012-10-01T04:16:00.737 に答える