私はもともとここでこの質問をしました:
http://www.daniweb.com/web-development/php/threads/439484/why-arent-more-echos-being-executed
サーバー (フォーム) にアップロード:
http://cs4.sunyocc.edu/~jddancks/onestopshop/index.php
sort_mysql の結果は、他のクエリの配列をソートし、すべてのデータ配列で見つかったデータの 2 次元配列を返します。
編集:エコーで問題を解決しましたが、この機能に問題があります(と思います):
function sort_mysql_results()
{
echo "<p>begin smr</p>";
$match=array();
$c_match=0;
$num_it = 0;
$num_args = func_num_args();
$c = 0;
$args = func_get_args();
while(isset($args[0][$num_it]))
{
echo "<p>sort mysql beginning of loop</p>";
$skip=false;
$name = $args[0][$num_it]['item_name'];
$i=1;
while(isset($args[$i])&&!$skip)
{
$skip = !check($args[$i],$name);
$i++;
}
$num_it++;
if(!$skip)
{
$match[$c_match] = $args[0];
$c_match++;
}
}
echo "<p>Num args: ".$num_args.", Iterations: ".$num_it."</p>";
return $match;
}
関数は次のように呼び出されます。
$match = sort_mysql_results(sort_soundex_results($queries[0]),get_array($queries[1]));
現在、$match は配列であると想定されています。何らかの理由でそうではありません。次のように結果を表に出力しようとします。
if(count($match)>0)
{
$num=0;
echo "<table>\n
<tr>\n
<td>Name</td><td>Category</td><td>Description</td>\n
</tr>\n";
while(isset($match[$num]))
{
echo "<tr>\n
<a href=\"product2.php?id=".$match[$num]['ItemID']."\"><td>".$match[$num]['item_name']."</td><td>".$match[$num]['cat_name']."</td><td>".$match[$num]['descr']."</td></a>\n
</tr>\n";
$num++;
}
echo "</table>\n";
}
else
{
echo "<p>No matches found. Go back and try different search criteria</p>\n";
}
参考までに、照会される mysql テーブルは次のようになります。
+-------------+--------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------------------+----------------+
| item_name | varchar(100) | NO | | | |
| ItemID | mediumint(9) | NO | PRI | NULL | auto_increment |
| cat_name | varchar(45) | NO | | | |
| userID | mediumint(9) | NO | | | |
| descr | text | NO | | | |
| image | tinytext | YES | | NULL | |
| date | timestamp | NO | | CURRENT_TIMESTAMP | |
| highest_bid | decimal(6,2) | NO | | 0.00 | |
| time_expire | timestamp | NO | | 0000-00-00 00:00:00 | |
+-------------+--------------+------+-----+---------------------+----------------+
編集:あなたがまだ私と一緒にいることを願っています。さらにデバッグを行いました:
...
if(count($match)>0)
{
echo "<p>space</p><h2>In IF STATEMENT VALUE OF MATCH BEFORE WHILE LOOP</h2><p>space</p>\n";
echo "<p>space</p><p>space</p><p>space</p>\n";
var_dump($match);
echo "<p>space</p><p>space</p><p>space</p>\n";
echo "<h2>VALUE OF match[num]</h2>\n";
echo "<p>space</p><p>space</p><p>space</p>\n";
var_dump($match[0]);
echo "<p>space</p><p>space</p><p>space</p>\n";
...
これをチェックしてください:
In IF STATEMENT VALUE OF MATCH BEFORE WHILE LOOP
space
space
space
space
array(1) { [0]=> array(1) { [0]=> array(12) { ["item_name"]=> string(10) "Squat Rack" ["ItemID"]=> string(1) "8" ["cat_name"]=> string(16) "Sports Equipment" ["userID"]=> string(1) "1" ["descr"]=> string(25) "Comes with 275 lbs plates" ["image"]=> string(14) "squat_rack.jpg" ["date"]=> string(19) "2012-10-15 09:34:36" ["highest_bid"]=> string(4) "0.00" ["time_expire"]=> string(19) "2012-12-01 00:00:01" ["src"]=> string(4) "S362" ["src2"]=> string(4) "S362" ["result"]=> string(1) "1" } } }
space
space
space
VALUE OF match[num]
space
space
space
array(1) { [0]=> array(12) { ["item_name"]=> string(10) "Squat Rack" ["ItemID"]=> string(1) "8" ["cat_name"]=> string(16) "Sports Equipment" ["userID"]=> string(1) "1" ["descr"]=> string(25) "Comes with 275 lbs plates" ["image"]=> string(14) "squat_rack.jpg" ["date"]=> string(19) "2012-10-15 09:34:36" ["highest_bid"]=> string(4) "0.00" ["time_expire"]=> string(19) "2012-12-01 00:00:01" ["src"]=> string(4) "S362" ["src2"]=> string(4) "S362" ["result"]=> string(1) "1" } }
space
space
space
そのはずのように見えます。何が起きてる???