• ベストアンサー

以下の文を書き足したらエラーになりました。

文法というか書き方がそもそもおかしいですか? if($param{'query_price2'} and $param{'query_price1'}){ unless(($param{'query_price1'} <= $datas[32]) && ($datas[32] <= $param{'query_price2'} <= $datas[33])){ next; } unless(($datas[33] >= $param{'query_price1'} >= $datas[32]) && ($param{'query_price2'} >= $datas[33])){ next; } } elsif($param{'query_price2'} or $param{'query_price1'}){ if(!$param{'query_price2'}){ if($param{'query_price1'} > $datas[32]){ next; } } if(!$param{'query_price1'}){ if($param{'query_price2'} < $datas[32]){ next; } } }

質問者が選んだベストアンサー

  • ベストアンサー
  • Gotthold
  • ベストアンサー率47% (396/832)
回答No.2

Perlでは、<=のような比較演算子は結合しないので、 A <= B <= C のような書き方はできないのだと思います。 (A <= B) <= C と書くとエラーは出なくなりますが、 A <= Bの結果(真または偽)とCを<=で比較したいなんて事は通常無いと思います。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

単に「エラーになる」ですますんじゃなくって, ちゃんとエラーメッセージくらい書こうよ.... ちなみに「$datas[32] <= $param{'query_price2'} <= $datas[33]」がどのように解釈されるかは当然理解できてますよね?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • perlでの検索画面についての質問です。

    CSVのデータを検索システムで、 例えば、 賃料 [30000]~[50000] と入力し検索した場合に [35000]~[52000]というデータも引っかかるようにしたいんですがどのようにすればいいんでしょうか? 現在はこのようになってます。 if($param{'query_price2'} and $param{'query_price1'}){ if($param{'query_price1'} >= $datas[21]){ next; } if($param{'query_price2'} <= $datas[22]){ next; } } elsif($param{'query_price2'} or $param{'query_price1'}){ if(!$param{'query_price2'}){ if($param{'query_price1'} >= $datas[21]){ next; } } if(!$param{'query_tsubo1'}){ if($param{'query_price2'} <= $datas[22]){ next; } } $datas[21]、[22]は賃料のデータが入っている要素数です。 query_tsubo1、2は検索画面で入力したものです。 賃料:[30000(query_price1)] ~ [50000(query_price2)]

    • ベストアンサー
    • Perl
  • 以下の関数の解説お願いします。

    Perl初心者のため、stdio.plにある この関数のやっていることがよく分からず困っています。 sub searchString #($str, $key, $mhmode, $lc, $z2h, $k2h, $igmark) { local($str, $key, $mhmode, $lc, $z2h, $k2h, $igmark) = @_; local($once, $from, $to); #static $key2, $key3; return 0 if ($str eq "" || $key eq ""); if ($key eq $key2) { $key = $key3; $once = 1; } else { $key2 = $key; } if ($jcode'version) { if ($k2h) { $from = 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポゐゑァィゥェォャュョッ'; $to = 'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをんがぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽヰヱぁぃぅぇぉゃゅょっ'; } if ($z2h) { $from .= '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+-=_|*!?”#$¥%&@:;'; $to .= '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+-=_|*!?"#$\%&@:;'; } if ($igmark) { $from .= '-ー・/_ '; $to .= '------'; } if ($from) { &jcode'tr(*str, $from, $to); &jcode'tr(*key, $from, $to) if (!$once); $str =~ tr/-_\///d; $key =~ tr/-_\///d; } } if ($lc) { $str =~ tr/A-Z/a-z/; $key =~ tr/A-Z/a-z/ if (!$once); } $key3 = $key; if ($mhmode == 5 || $mhmode =~ /^BOOLEAN$/i || $mhmode =~ /^BLN$/i) { local($i) = 0; local(@str, $eval); $key =~ s/ +AND +/ & /gi; $key =~ s/ *NOT +/ ! /gi; $key =~ s/ +OR +/ | /gi; $key =~ s/\( +/(/g; $key =~ s/ +\)/)/g; foreach (split /( & | \| )/, $key) { $str[$i] .= $_; $i ++ unless ($_ eq ' & ' || $_ eq ' | ') } for ($i = 0; $i <= $#str; $i ++) { local($option, $open, $close, $find, $not, $key); $key = $str[$i]; if ($str[$i] =~ /^( & | \| )/) { $option = substr $key, 0, 3; $key = substr $key, 3; } $open = $1 if ($key =~ /^(\(+)/g); $close = $1 if ($key =~ /(\)+)$/g); $key =~ s/\(|\)//g; if ($key =~ /^ *! +/) { $key =~ s/^ *! +//g; $not = 1; } $find = index($str, $key) >= 0 ? 1 : 0; $find = $find ? 0 : 1 if ($not); $eval .= "$option$open$find$close"; } $eval =~ s/ & /*/g; $eval =~ s/ \| /+/g; return (eval $eval >= 1) ? 1 : 0; } elsif ($mhmode == 4 || $mhmode =~ /^NOR$/i) { foreach (split / +/, $key) { return 0 if (index($str, $_) >= 0); } return 1; } elsif ($mhmode == 3 || $mhmode =~ /^EOR$/i) { local($flag) = 0; foreach (split / +/, $key) { if (index($str, $_) >= 0) { return 0 if ($flag); $flag = 1; } } return $flag ? 1 : 0; } elsif ($mhmode == 2 || $mhmode =~ /^OR$/i) { foreach (split / +/, $key) { return 1 if (index($str, $_) >= 0); } return 0; } elsif ($mhmode == 1 || $mhmode =~ /^NAND$/i) { foreach (split / +/, $key) { return 1 if (index($str, $_) == -1); } return 0; } else { foreach (split / +/, $key) { return 0 if (index($str, $_) == -1); } return 1; } } これを呼び出しているのが、別ファイル内の以下の部分です。 foreach(@datafile){ if($datafile[0] eq $_){ next; } # 1行目は項目名なので next if($param{'query_word'}){ unless(stdio::searchString($_, $param{'query_word'}, $param{'query_search_type'}, 1, 1, 1, 1)){ next; } } push(@search_file,$_); } datafileは 名前,住所,電話番号, 吉田,東京都渋谷区,03xxxxxxxx, といったデータファイルです。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • jspでこんなエラーが出ます

    <%@ page contentType="text/html;charset=Windows-31J" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <c:if test="${param.num le 50}"> クエリ情報numは50以下です </c:if> <c:if test="${param.num gt 50 and param.num le 100}"> クエリ情報numは50より大きく、かつ、100以下です </c:if> <c:if test="${param.num gt 100 and param.num le 500}"> クエリ情報numは100より大きく、かつ、500以下です </c:if> <c:if test="${param.num gt 500}"> クエリ情報numは500より大きいです </c:if> と入力してしるんですが type 例外レポート メッセージ 説明 The server encountered an internal error () that prevented it from fulfilling this request. 例外 org.apache.jasper.JasperException: 絶対URI: http://java.sun.com/jsp/jstl/core はweb.xmlとこのアプリケーションを配備したJARファイルのどちらかでも解決できません と言ったエラーが出てしまいます。なにか設定を間違えているのでしょうか?

    • ベストアンサー
    • Java
  • for文を使うとなぜかエラーになります

    毎回大変お世話になっております。 現在、ブラウザでデータを入力し、それを検索条件としてDBにOracle接続、結果を表示するPGを作成しております。 問題は、結果表示のCGIファイルでSQL文内の「?」にデータを入れる「$sth->bind_param」を使用している部分において、なぜかfor文を使用するとエラーを起こし、「Error: Runtime exception」とログが掃いてしまいます。 問題となっている部分は以下のとおりです。 ※@Kensaku_andにはAND条件とするキーワードが格納しています。 for($i = 0; $i <= $#kensaku_and; $i++) {  $sth->bind_param($i+1, $kensaku_and[$i]); } この部分を以下のように書くと正常に動きます。 if ($Andcount >= 1) { $sth->bind_param(1, $kensaku_and[0]); } if ($Andcount >= 2) { $sth->bind_param(2, $kensaku_and[1]); }   ・   ・ 動作環境は以下のとおりです。 OS:Win2000Pro Webサーバ:Apache1.3.26 Perl:5.005_03 IE:6.0SP1 if文で書いてしまうとソースが多くなってしまうので、for文(またはforeach文)で書きたいと思ってます。 なにか良い解決方法があればお願い致します。

    • ベストアンサー
    • Perl
  • 簡単なIF文なのですが

    ここGOOの中もネット上も調べましたがわかりません。 例えば、もし、2、4、6、9この数字ならば空白としという式 なのですが、 =IF(A1=”2”、”4”、”6”、”9”、””<・・・) =IF(A1=”2”and”4”and”6”and”9”、””、・・・) =IF(A1=”2”or”4”or”6”or”9”、””<・・・) どれもうまくいきません。 よろしくお願いします。

  • PHPからSQL文で〇〇か〇〇か〇〇という時に

    PHPからMYSQLに問い合わせでご質問です。 実行している文です(SELECT文から) SELECT * FROM users WHERE id = ? AND level = ?' ))); $stmt->bindValue(1, $id, PDO::PARAM_INT); $stmt->bindValue(2, $level, PDO::PARAM_INT); $stmt->execute(); return $stmt->fetchAll(); } このような感じでユーザーIDとユーザーのレベルを判別しているものですが、IDはセッションを入れレベルに2と3と4の人を抽出という場合がわからずご質問させて頂きました。 ORを使って WHERE id = ? AND level = ? OR id = ? AND level = ? OR id = ? AND level = ? OR id = ? AND level = ? $stmt->bindValue(1, $id, PDO::PARAM_INT); $stmt->bindValue(2, $level, PDO::PARAM_INT); $stmt->bindValue(3, $id, PDO::PARAM_INT); $stmt->bindValue(4, $level, PDO::PARAM_INT); $stmt->bindValue(5, $id, PDO::PARAM_INT); $stmt->bindValue(6, $level, PDO::PARAM_INT); のような感じで当てはめたいものを書くのかと思ったり、もっときれいな書き方というか正しい書き方がありそうな気がしてご質問させて頂いた限りです。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 以下の英訳をお願いします

    now they’re belatedly realizing that unless they can somehow stop this or contain it that the chances of cancellation seem to be growing by the day. 特にrealizing thatのあとが文法的にわかりません。お願いします。

  • sql文の書き方

    いつもこちらで勉強させていただきます。 環境:mysql5.0 PHP5.1.4 apache 2.0.58 いま画面からパラメータ5受け取りました。 これをもってsql文を書こうとするが必須入力項目ではないため一つずつ判断して書いたら30種類の可能性がでてきてすごく長くなってしまいましたがなんか短縮させるいい方法はありませんか?またこれをファンクションで作り直そうとしたらちょっとうまくいかないのでどなたか教えてもらえませんか?ファンクションで渡すパラメータ($sql?$query?あるいは各パラメータですか? )は何にすればいいか?取得したい検索結果は配列です。ファンクション戻り値を連想配列にすることは可能ですか?ちょっと困っています。 $sql = "SELECT * FROM file_tbl WHERE"; // A だけの場合 if ( $b == "" and $c == "" and $d=="" and $e==""){ $sql = $sql." a='%s' order by b DESC,a"; $query = sprintf("$sql", mysql_real_escape_string($a)); // B だけの場合 }else if( $a == "" and $c == "" and $d=="" and $e==""){ $sql = $sql." b >='%s' order by b DESC,a"; $query = sprintf("$sql", mysql_real_escape_string($b)); // Cだけの場合 }else if( $a == "" and $b == "" and $d=="" and $e==""){ $sql = $sql." c <='%s' order by b DESC,a"; . . . // SQL クエリを実行する $result = mysql_query($query); よろしくご教授願います。

    • ベストアンサー
    • MySQL
  • HTMLページにPHPで処理した結果を表示したい

    以下の【HTML】内にPHPの結果を表示したいと思い、試行錯誤していますが、うまくできません。 ※http://xxx.com/ISL/ISLPage.php?query1=apple をブラウザで実行すると正常に表示されます。 たぶん、header("Content-type: application/x-javascript"); を 【ISLPage.php】か【ISLModule.php】のどこかに書きこんで 【ISLModule.php】の$html []= あたりに、echo "document.write・・・ に直せば できそうな気がするのですが、具体的にどうすれば、表示されるかが分かりません。(>_<;) 既に数十回トライしましたが、どうしてもダメでしたので、どうかご教示いただければと思います。 申し訳ございませんが、どうかよろしくお願い致します。 【HTML】 <html> <body> </body> <script type="http://xxx.com/ISL/ISLPage.php?query1=apple"></script> </html> 【ISLPage.php】 <html> <body> <?php include_once("./ISLModule.php"); echo $_GET['query1']; new ISLModule(array( "query" => $_GET['query1'], "hits" => 3 )); ?> </body> </html> 【ISLModule.php】 <?php class ISLModule { function __construct($param = array()) { $results = array(); if ($param['query'] != "") { $query4url = rawurlencode($param['query']); try { $url = "http://xxxxx/ … buildQuery($param); $xml = simplexml_load_file($url); if ($xml["totalResultsReturned"] != 0) { $results = $xml->Result->Hit; } } catch(Exception $e) { } } $result['query'] = $param['query']; $result["results"] = $results; ISLModule::display($result); } function display($param = array()) { $html = array(); $html []= "<div class=\"YSAPISDK\">"; $html []= "<div class=\"ISLModule\">"; $html []= "<h1>「" . h($param['query']) . "」の検索結果</h1>"; foreach ($param["results"] as $result) { $html []= "<div class=\"Item\">"; $html []= "<p><a href=\"" . h($result->Url) . "\"><img src=\"" . h($result->Image->Small) . "\" /></a></p>"; $html []= "<h2><a href=\"". h($result->Url) . "\">" . h($result->Name) . "</a></h2>"; if (!is_null($result->PriceLabel->SalePrice)) { $html []= "<p class=\"Price\">". h($result->Price). "円</p>"; } $html []= "</div>"; } $html []= "</div>"; $html []= "</div>"; echo join("\n", $html); } } ?>

    • 締切済み
    • PHP
  • エクセル関数のエラーについて

    エクセルの関数で間違っている箇所と解決策を教えて下さい。 下記【1】、【2】関数は正しく動いています。 【1】 IF(OR(AB21="err",AC21="err",AD21="err",AE21="err",AF21="err"),"err",IF(AND((OR(H21="SC",H21="CR",H21="A",H21="R",H21="CH")),(OR(AND(AE21="○",AF21="○"),AND(AD21="○",AF21="○"),AND(AC21="○",AF21="○"),AND(AB21="○",AF21="○")))),"(1)",IF(AND(OR(H21="MS",H21="AS",H21="BX"),AE21="×",AF21="○"),"(2)",IF(AND((OR(H21="MS",H21="AS",H21="BX")),(OR(AND(AD21="×",AE21="○",AF21="○"),AND(AD21="×",AE21="-",AF21="○")))),"(3)",IF(AND((OR(H21="MS",H21="AS",H21="BX")),(OR(AND(AD21="○",AE21="○",AF21="○"),AND(AD21="○",AE21="-",AF21="○"),AND(AD21="-",AE21="○",AF21="○"),AND(AD21="-",AE21="-",AF21="○")))),"(4)",IF(AG16="","(5)","err")))))) 【2】 AND((OR(H21="SC",H21="CR",H21="A",H21="R",H21="CH")),(OR(AND(AE21="×",AF21="○"),AND(AD21="×",AF21="○"),AND(AC21="×",AF21="○"),AND(AB21="×",AF21="○")))) これを【1】関数の「AG16=""」箇所に【2】を入れたのが下記関数【3】ですが、これだとエラーになります。 【3】 IF(OR(AB21="err",AC21="err",AD21="err",AE21="err",AF21="err"),"err",IF(AND((OR(H21="SC",H21="CR",H21="A",H21="R",H21="CH")),(OR(AND(AE21="○",AF21="○"),AND(AD21="○",AF21="○"),AND(AC21="○",AF21="○"),AND(AB21="○",AF21="○")))),"(1)",IF(AND(OR(H21="MS",H21="AS",H21="BX"),AE21="×",AF21="○"),"(2)",IF(AND((OR(H21="MS",H21="AS",H21="BX")),(OR(AND(AD21="×",AE21="○",AF21="○"),AND(AD21="×",AE21="-",AF21="○")))),"(3)",IF(AND((OR(H21="MS",H21="AS",H21="BX")),(OR(AND(AD21="○",AE21="○",AF21="○"),AND(AD21="○",AE21="-",AF21="○"),AND(AD21="-",AE21="○",AF21="○"),AND(AD21="-",AE21="-",AF21="○")))),"(4)",IF(AND((OR(H21="SC",H21="CR",H21="A",H21="R",H21="CH")),(OR(AND(AE21="×",AF21="○"),AND(AD21="×",AF21="○"),AND(AC21="×",AF21="○"),AND(AB21="×",AF21="○")))) ,"(5)","err")))))) 原因と解決策(VBAは避けたいのですが・・・)を教えて頂けないでしょうか?