• ベストアンサー
  • 困ってます

phpについて

phpで質問です。 データベースから引っ張ってきたデータを while文の中にechoでa href="article?tag=row[3]"を表示させたいのですがどうすればいいですか? while( $row = $res->fetchArray() ) { echo '<a class="link_button" href="articletable?tag='.$row[3].'" method="get"">'.$row[3].'<span>'.'</a>'.''<a class="link_button" href="articletable?tag='.$row[4].'" method="get"">'.$row[4].'<span>'.'</a>' } また、if文でrow3もしくはrow4がnull(何も書いていない)の時, 強制的に「a href="article?tag=more」にさせたいのですがどうすればいいですか?

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数38
  • ありがとう数1

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

  • ベストアンサー
  • 回答No.2
  • 4017B
  • ベストアンサー率71% (1095/1524)

>4の方にmoreが… あ~、そういうのが実地で細かく検証出来ないのがオンライン問答の難しいところですね。恐らくDBから読み込まれた各データが、 $row に展開格納される時点で想定外の文字列が含まれてるんだと思いますが… とりあえず「AまたはBの時に~」という条件分岐式の記述は… if ( empty($row[3]) || empty($row[4]) ) { $row[3] = $row[4] = 'more'; } ~みたいな感じでOKです。上記で「 $row[3] または $row[4] のどちらかが "empty" だった場合」という意味になります。 非表示云々~というのがちょっと外野からだとどういう意味なのか分かりませんでしたので。とりあえずの記述例を提示するだけにして置きます。 P.S. 揚げ足取りみたいになりますが、enpty では無く empty です(nでは無くmです)。 PHPに限らずプログラム構文は1文字でも違えば全く別の意味になったり、構文として意味を成さなくなったりします。細かい事ですが、常に正しい表記を意識付けてそれを普段から実践して行かないと、本番でも日頃の変な癖が出てしまいエラーになります。そして本人はそれを普段から無意識で習慣化してしまっているため、なかなかミスに気付く事が出来ません。 最初のうちは面倒でも必ず正規通りの正しい、省略しない書き方を習慣付けて置いた方が後々で面倒が少なくなります。

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • phpについて

    phpのfor文だと思うのですが、エラー(そもそも表示されない)ので教えてください。 sqlでデータを取得し 今まで下記のようにしていましたが、10こ表示したいです。 a タグの中身についても変化させたくて、  ループ1回目はa href="1.php" ループ2回目はa href="2.php" ループ3回目はa href="3.php" いこう10まで (ファイル名は通し番号になっていて、1&#65374;10.phpになっています。) phpのプログラムは <?php // 変数の初期化 $db = null; $sql = null; $res = null; $row = null; $db = new SQLite3("test.db"); // データの取得 $sql = 'SELECT * FROM human where country="japan"'; $res = $db->query($sql); <?php while( $row = $res->fetchArray() )(これ10回ループさせたいを) { echo '<ul>' . '<a href="ここを変化させたい。" target=_brank>'. '<li>' . $row[0] . '<span>' , $row[1].'<span>', $row[2].'<span>',$row[3].'<span>', $row[4]. '<span>', $row[5].'<span>' , '<img src="$row[6]">'.'<span>' . '</li>'. '</a>' . '</ul>'; } よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPとmysqlに関して

    while($row3 = mysql_fetch_array($res3)){ $r3 = $row3['name']; $d3 = $row3['day']; while($row = mysql_fetch_array($res)){ $r = $row['name']; if($days==$d3 and $r==$r3){ echo '<a href="tops2.php?id='.$row['id'].'"><div class="aaa"><div style="padding-top:10px">'.$row['name'].'<br><font color="red">出勤中</font></div></div></a>'; }else{ echo '<a href="tops2.php?id='.$row['id'].'"><div class="aaa"><div style="padding-top:15px">'.$row['name'].'</div></div></a>'; } }} 簡単に説明すると、テーブルAのnameとテーブルBのnameが合致したら出勤中と表示させたいのですが、何故か合致したデータの一部しか出勤中と出ません。 なにがおかしいですか??

    • ベストアンサー
    • PHP
  • php

    while($row = mysql_fetch_array($res,MYSQL_NUM)) { echo $row[1]."\n"; ここの文字コードを調べたいのですがどう書いたらいいでしょうか? 又参考になるサイトがありましたらお願いします

その他の回答 (1)

  • 回答No.1
  • 4017B
  • ベストアンサー率71% (1095/1524)

とりあえず一番簡単な記述式は… while( $row = $res->fetchArray() ) { if ( empty($row[3]) ) { $row[3] = 'more'; } if ( empty($row[4]) ) { $row[4] = 'more'; } echo '<span><a class="link_button" href="articletable?tag=', $row[3], '" method="get">', $row[3], '</a><a class="link_button" href="articletable?tag=', $row[4], '" method="get">', $row[4], '</a></span>'; } ~みたいな感じですね。ただしPHPは変数の型判別が良い意味でいい加減なので、上記の記述式の場合だと、仮に変数 "" の中身が純粋に null で無く、例えば "0" や未定義だった場合でもマッチして "more" に置換処理されますのでご注意を。厳密に null の時にだけマッチさせたいのであれば… if ( is_null($row[3]) ) {~} ~みたいに記述する必要があります。 P.S. echo文で書き出されるHTMLに奇妙な部分があったので、一般的に正しいとされる構文に修正しています。質問者が何か意図があってそういう記述をしているのであれば、適宜再修正して適用してください。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございました。

質問者からの補足

ご回答ありがとうございます。 if3.4のところなんですが、値は文字のみでして、 ご回答いただいたコードだと3も4もenptyの場合、4の方にmoreが書かれてしまいました。(3は空白のまま) そこでなんですが、両方ともenptyの場合3もしくは4どちらか一方を残し片方を非表示にする方法はありませんか? 難しければ if(enpty($3もしくは4)) {$row[3と4]='more'(3と4両方にmoreを入れるつもり。 } こんな感じですか? 基本的には、非表示の方を実装したいです。

関連するQ&A

  • 次のhtmlはどのような内容なのでしょうか?

    あるサイトのソースなのですが、普通リンクを貼るときには、<a href="***.html"></a>という風にしますよね?でも下記のソースはそのようになっていません。下記のリンクの貼り方は、どのような仕組みなのでしょうか <li class="top"><span><a href="../" class="visible"></a><a href="../" class="hidden">TOP</a></span></li> <li class="news"><span><a href="../news/" class="visible"></a><a href="../news/" class="hidden">NEWS&amp;INFORMATION</a></span></li> <li class="schedule"><span><a href="../schedule/" class="visible"></a><a href="../schedule/" class="hidden">SCHEDULE</a></span></li> <li class="discography"><span><a href="../discography/" class="visible"></a><a href="../discography/" class="hidden">DISCOGRAPHY</a></span></li> <li class="special"><span><a href="../special/" class="visible"></a><a href="../special/" class="hidden">SPECIAL</a></span></li> <li class="teamayu"><span><a href="../teamayu/" class="visible"></a><a href="../teamayu/" class="hidden">TeamAyu OFFICIAL FANCLUB</a></span></li> <li class="link"><span><a href="../link/" class="visible"></a><a href="../link/" class="hidden">LINK</a></span></li>

    • ベストアンサー
    • HTML
  • データベースから出力したデータを横並びに

    while($row = mysql_fetch_array($res)){ echo '<div class="aa">'; echo ''.$row['name'].'<br>'; echo'在庫数:'.$row[''].'個<br>'; echo '値段:'.$row[''].'円/個<br>'; echo '<img src='.$row[''].'><br></div>'; } このようにしたら縦に並んでしまうんですが、どのようにしたら横並びになるんでしょうか??

    • ベストアンサー
    • PHP
  • phpでのhtmlタグの表示方法

    データベースのデータをphpで表示する際に echo "<table border=\"1\">"; echo "<tr>"; echo "<td>参考書名</td>"; echo "<td>解説</td>"; echo "</tr>"; while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) { echo "<tr>"; echo "<td>".cnv_enc($row["publish"], $enc_disp, $enc_db)."</td>"; echo "<td>".$row["ninki"]."</td>"; echo "</tr>"; } echo "</table>"; こんな感じでechoを使って配列に格納して表示しているのですが、この際に echo "<a href="http://aaa.com/">test</a>" みたいな、URLを表示するタグを組み込むと、エラーが出ているのか、表示画面が真っ白になってしまいます。 何分初心者なもので、くだらない問題だと思いますが、色々<a href以下をいじくってもなかなか改善できません。 phpとhtmlで分けて記述すれば簡単なのですが、データを一覧表示する際に分けられるのかもちょっと分かりません。 とりあえずechoを使って<a href="">みたいなタグを表示するやり方を知りたいという感じです。 くだらない質問かと思いますが何卒よろしくお願いします。

    • ベストアンサー
    • PHP
  • whileが上手く回らず困っています

    dbはoracleでphpを学んでいるのですが whileの中にwhileを入れると初めのwhileが回らなくなってしまい困っています。 具体的な内容を下に明記します。 よろしければ具体的な解決方法や構文など教えていただけないでしょうか? //select文の発行 $sql1 $db->Quary($sql1); while($db->FetchArray()){ $row1 = $db->mArray[row1]; $sql2 $db->Quary($sql2); while($db->FetchArray()){ $row2 = $db->mArray[row2]; $sql3 $db->Quary($sql3); while($db->FetchArray()){ $name = $db->mArray[name]; } } } 素人考えですがFetchArray()が上書きされて 1回目と二回目のwhileが回ってないように感じるのですが FetchArray()を何に置き換えてどう対応すれば上手く回るのかがわかりません。 よろしくお願いします。

  • phpコードを解説して欲しいです。$str 多く困

    $str = '<h3 id="trackbacks">Trackback</h3>'; $str .= '<ol class="trackback-list" id="custom-trackback">'; $i = 0; foreach ( $comments as $comment ) { if ( get_comment_type() != 'comment' ) { $str .= '<li class="clearfix" id="comment-' . get_comment_ID() . '">'; $str .= '<div class="trackback-author">'; $str .= '<p class="comment-author-name">'; $comment_author_url = $comment->comment_author_url; $comment_author = $comment->comment_author; if ( $comment_author_url ) { $str .= '<a href="' . esc_url( $comment_author_url ) . '" target="_blank" title="' . esc_attr( $comment_author ) . '">'; $str .= esc_html( $comment_author ); $str .= '</a>'; } else { $str .= esc_html( $comment_author ); } $str .= '</p>'; $str .= '<p class="comment-meta">' . '<a href="' . esc_url( get_comment_link( $comment->comment_ID ) ) . '">' . get_comment_date() .'<span>'. get_comment_time() . '</span><a class="edit" href="' . get_edit_comment_link() . '">(編集)</a></span></p>'; $str .='</div>'; $str .= '<div class="trackback-body">'; if ( $comment->comment_approved == '0' ) { $str .= '<p class="attention"><em>あなたのトラックバックは承認待ちです。</em></p>'; } $str .= '<p>' . esc_html( get_comment_text() ) . '</p>'; $str .= '</div>'; $str .= '</li>'; $i++; } } $str .= '</ol>'; if ( $i > 0 ) { echo $str;

    • 締切済み
    • PHP
  • クリックファンクションがうまくいかない

    class="link-block"のついたliつまりリストをクリックした時、.removeClass('active');でactiveというクラスを削除するようにしたかったのですが、 なぜかリストをクリックしても反応せずに削除されません。 id="maware"のliだけは、反応して削除されます。 CSSにとしてもだめでした。どうもclass="link-block"のついたリストをクリックできていないのかと思っているのですが、上下の順番でクリックできていないのでしょうか? .link-block { display: block; z-index: 99999; } ・ソースコード <div class="kuruttosuru">aaa</div> <!-- drawermenu --> <!-- drawermenu-button --> <div class="modal-button-wrap"> <a class="animation-hover action-hover modal-button-wrap__button"> <span class="modal-button-wrap__border"></span><!-- border --> <span class="modal-button-wrap__border"></span><!-- border --> <span class="modal-button-wrap__border"></span><!-- border --> </a> </div> <!-- drawermenu --> <nav> <div id="nav__drawermenu-wrap"> <ul> <li id="maware"><a class="link-block" href="#js-about-me">ABOUTME</a></li> <li><a class="link-block" href="#js-about-me"><span class="gotootherpage"><img class="top-gnav__link-sixth__goto-other-page" src="img/common-img/goto-other-page.svg" alt="goto-other-page-image"></span>ABOUTME</a></li> <li><a class="link-block" href="#js-gallary">GALLARY</a></li> <li><a class="link-block" href="#js-gmap">MAP</a></li> <li><a class="link-block" href="#js-contact">CONTACT</a></li> <li><a class="link-block" href="http:///index.html">TOP</a></li> <li><a class="link-block" href="http:///index.html">BLOG</a></li> </ul> </div> </nav> <!-- /drawermenu --> ・JS <script> $(function(){ $('.kuruttosuru').on('click', function() { $(this).addClass('active'); return false; }); }); </script> <!-- drawermenu-button-three-whiteline-クリックした際にクルット回るアクション --> <script> $(function(){ $('.modal-button-wrap__button, .link-block').on('click', function() { $(this).removeClass('active'); return false; }); }); </script> ・下記のJSがあると、うまくいかず下記をコメントアウトするとうまくいきます。 下記に何かおかしくなる要素があるのでしょうか? <!-- ページ内遷移 --> <script> $(function(){ // #で始まるアンカーすべてをクリックした場合に処理 $('a[href^=#]').click(function() { // スクロールの速度 var speed = 1000; // ミリ秒 // アンカーの値取得 var href= $(this).attr("href"); // 移動先を取得 var target = $(href == "#" || href == "" ? 'html' : href); // 移動先を数値で取得 var position = target.offset().top; // スムーススクロール $('body,html').animate({scrollTop:position}, speed, 'swing'); return false; }); }); </script> _____________

  • phpでcssを使う荒業

    phpでcssを使う荒業 echo '<span class="kakaku">' . $row['kakaku'] . '</span>円<br />'; php内にあるこのデータにボーダーボトムを付けたいのですがどうしたら良いですか?? こんな感じにしたいです。 12000円 ____ 25000円 ____ 35000円 ____ 42000円 ____

    • ベストアンサー
    • PHP
  • php 投票システム

    データベースと連動した投票システムを考えております。 phpとMySQLを使用したもので、対応するボタンを押すと1票投じられるというものです。 この仕組み自体は実現できたのですが、 ブラウザの更新ボタンを押すと、『情報を再送信する必要があります』と表示され、『はい』を押すと、自動的に1票投じられてしまいます。 スクリプトは以下のようになるのですが、上記のような不具合を修正するためにはどうすればよいのでしょうか。 アドバイス、具体的なソース、また、他の部分における修正すべき箇所など、ご指摘いただきたいと思います。 よろしくお願いいたします。 <?php echo "<table border=0>"; echo "<tr><td colspan=4 align=left><img src=logo-touhyou.gif></td></tr>"; echo "<tr><td><form method=post action="; echo $_SERVER["PHP_SELF"]; echo "><input type=hidden value=1 name=posi><input type=image src=logo-posi-s.gif border=0></form></td>"; echo "<td><form method=post action="; echo $_SERVER["PHP_SELF"]; echo "><input type=hidden value=1 name=deep><input type=image src=logo-deep-s.gif border=0></form></td></tr></table>"; $posi=$_POST["posi"]; $deep=$_POST["deep"]; if ($posi==1){ $server="mysql..jp"; $dbname="LA"; $user="LA"; $pass=""; $conn = mysql_connect($server,$user,$pass); $conndb = mysql_select_db($dbname); $sql="SELECT posi FROM test WHERE id =1 LIMIT 1"; $res=mysql_query($sql); while($row = mysql_fetch_assoc($res)) { $row_con=mb_convert_encoding($row["posi"], "shift_jis", "auto"); echo $row_con; echo "<br>"; $number1=1; $after=$row_con+$number1; echo $after; echo "<br>"; mysql_query("LOCK TABLES test WRITE"); $sql_1="UPDATE test SET posi='$after3' WHERE id =1 LIMIT 1"; $ins=mysql_query($sql); mysql_query("UNLOCK TABLES"); if ($ins_1){ echo "ポジティブ投票完了"; } $sql_2="SELECT posi FROM test WHERE id =1 LIMIT 1"; $res_2=mysql_query($sql_2); while($row_2 = mysql_fetch_assoc($res_2)) { $row_con_2=mb_convert_encoding($row_2["posi"], "shift_jis", "auto"); echo $row_con_2; } } mysql_close($conn); } if ($deep==1){ $server="mysql..jp"; $dbname="LA"; $user="LA"; $pass=""; $conn = mysql_connect($server,$user,$pass); $conndb = mysql_select_db($dbname); $sql2="SELECT deep FROM test WHERE id =2 LIMIT 1"; $res2=mysql_query($sql2); while($row2 = mysql_fetch_assoc($res2)) { $row_con2=mb_convert_encoding($row2["deep"], "shift_jis", "auto"); echo $row_con2; echo "<br>"; $number1=1; $after2=$row_con2+$number1; echo $after2; echo "<br>"; mysql_query("LOCK TABLES test WRITE"); $sql2_2="UPDATE test SET deep='$after2' WHERE id =2 LIMIT 1"; $ins2=mysql_query($sql2_2); mysql_query("UNLOCK TABLES"); if ($ins2){ echo "ディープ投票完了"; } $sql2_2="SELECT deep FROM test WHERE id =4 LIMIT 1"; $res2_2=mysql_query($sql2_2); while($row2_2 = mysql_fetch_assoc($res2_2)) { $row_con2_2=mb_convert_encoding($row2_2["deep"], "shift_jis", "auto"); echo $row_con2_2; } } mysql_close($conn); } ?>

    • ベストアンサー
    • PHP
  • ワードプレス、PHPについての質問です。

    はじめまして、みなさま、どうかお力添え頂けませんでしょうか? 現在、ワードプレスでドロップシッピングサイトを作っているのですが、商品一覧ページに自動で在庫を取得して表示するようにしたく、四苦八苦しております。 現在、いろいろ調べながらあと少しのところくらいまではきているようなのですが、以下のソースを実行しても商品一覧ページの一つ目の在庫状況の取得まではできても2つ目以降がエラーになってしまいます。 やりたいこととしては、カステムテンプレートを使って商品IDを取得し、商品一覧ページに在庫状況を出力させるような形です。 途中に<!--ここから-->と書いてある箇所が対象となります。その他の箇所はCSS部分等をある程度消していますが、ほぼそのままに書いてあります。 <?php while(have_posts()): the_post(); ?> <?php if ( has_post_thumbnail()) : ?>haveThumbnail<?php endif; ?>"> <?php if ( is_user_logged_in() == TRUE ) : edit_post_link('編集', '<span class="edit-link">[ ', ' ]    </span>');endif ?> <a href="<?php the_permalink(); ?>"> <?php $image_fish = wp_get_attachment_image_src( get_post_meta($post->ID, '商品画像をUpload', true),'thumbnail' );?> <img src="<?php echo $image_fish[0]; ?>" width="<?php echo $image_fish[1]; ?>" height="<?php echo $image_fish[2]; ?>"> <a href="<?php the_permalink(); ?>"><?php echo get_post_meta($post->ID, '商品情報', true); ?> <?php echo get_post_meta($post->ID, '価格', true); ?></a></div> </div> <?php    $days = 7; $today = date_i18n('U'); $entry = get_the_modified_date('U'); $kiji = date('U',($today - $entry)) / 86400 ; if( $days > $kiji ){ echo 'new'; } ?> <!--ここから--> <?php function get_content($url){ $ch = curl_init(); curl_setopt ($ch, CURLOPT_URL, $url); curl_setopt ($ch, CURLOPT_HEADER, 0); ob_start(); curl_exec ($ch); curl_close ($ch); $string = ob_get_contents(); ob_end_clean(); return $string; } /* * もしもAPIから商品情報XML取得&パース */ $auth_code = "もしもAPI認証コード"; $article_id = get_post_meta($post->ID, 'item_id', true); $url = "http://api.moshimo.com/article/search?authorization_code=" .$auth_code ."&article_id=" .$article_id; $xml = get_content ($url); $data = simplexml_load_string($xml); $article = $data->Articles->Article; $stock_status= $article->StockStatus; $shop_id = $data->Shop->ShopId; if ($stock_status == 0){   //0は在庫切れ echo '在庫切れ'; }else{ ?> <input type="hidden" name="article_id" value="<?=$article_id?>"> <?php } ?> <!--ここまで--> <!-- [ /.entryTxtBox ] --> </div><!-- [ /.infoListBox ] --> <?php endwhile; ?> どこかソースがおかしいとは思うのですが、どこをどう直せば良いかわかりませんでした。 なぜ1回取得しただけで止まってしまうのかわからず、また、エラーとしてはfunctionの箇所を指摘されているようです。 ずーっと考えていたのですが、全く前に進めず、大変お恥ずかしいお話しですが、何卒お力添えいただきたく、何卒宜しくお願い致します。

    • ベストアンサー
    • PHP
  • 画像表示の際空っぽの項目を非表示にするには、、

    画像を含んだ検索システムについてご相談があります。 画像の部分で、データが空っぽの場合検索結果の更に詳細ページにて非表示にする条件分岐についてつまづいています。 レコードに画像データがある場合は検索結果にて表示し、データが空っぽの場合は非表示にするというものです。 以下に詳細ページ(検索結果一覧から詳細ページに進んだページ)の該当箇所のコードを記載します。 if文を使うのだろうというのはわかるのですが、どう書いていいかわからないでいます。 アドバイスいただけないでしょうか? よろしくお願いします。 ~省略~ <?php $debug = false; //DB Connect $url = "***********"; $user = "**********"; $pass = "********"; $db = "********"; $link = mysql_connect($url,$user,$pass) or die("No Connected"); $sdb = mysql_select_db($db,$link) or die("No Selected"); if($debug) echo_r($_POST); mysql_set_charset('utf8'); if($_SERVER["REQUEST_METHOD"] != "POST") { echo "Error: invalid method"; exit(); } $id = $_POST['key']; $query = "SELECT * FROM shops where id='$id'"; $result = mysql_query($query) or die($query . '<br />' . mysql_error() . '<hr />'); $num_rows = mysql_num_rows($result); ?> <div class="row "> <div id="contents" class="clearfix"> <div class="span8"> <h2 class="f2"><b>■店舗詳細</b></h2> <?php while($row = mysql_fetch_assoc($result)): ?> <div class="row-fluid result-table" style="background-color:white;"> <div class="row-fluid"> <?php echo '<img src="get_image1.php?id=' . $row['id'] . '" style="width:100%;">'; ?> </div> <div class="span4 mini-img"style="margin-left:-1px;"><p class="thumb"><a><?php echo '<img src="get_image2.php?id=' . $row['id'] . '" >' ?></a></p> </div> <div class="span4 mini-img"style="margin-left:-1px;"><p class="thumb"><a ><?php echo '<img src="get_image3.php?id=' . $row['id'] . '" >' ?></a></p> </div> <div class="span4 mini-img"style="margin-left:-1px;"><p class="thumb"><a ><?php echo '<img src="get_image4.php?id=' . $row['id'] . '" >' ?></a></p> </div> <div class="span4 mini-img"style="margin-left:-1px;"><p class="thumb"><a ><?php echo '<img src="get_image5.php?id=' . $row['id'] . '" >' ?></a></p> </div> <div class="span4 mini-img"style="margin-left:-1px;"><p class="thumb"><a ><?php echo '<img src="get_image6.php?id=' . $row['id'] . '" >' ?></a></p> </div> <div class="span4 mini-img"style="margin-left:-1px;"><p class="thumb"><a ><?php echo '<img src="get_image7.php?id=' . $row['id'] . '" >' ?></a></p> </div> ~以下省略~

    • ベストアンサー
    • PHP