サポート » 使い方全般 » jqueryベースで作成したサイトに設置したフォームが機能しない

  • 解決済 hiroyukkkky

    (@hiroyukkkky)


    この度、掲示板サイトをjquery+wordpressで作成しているのですが、なかなかうまくいきません。

    問題点
    ①フォームで入力した値がmysqlに行かない
    ②URLと表示されるべき内容が一致しない

    以下のようなフォームを作成しています。

    single.php

    <form method="post" action="<?php the_permalink(); ?>" data-ajax="false">
        <div data-role="fieldcontain">
        <dl>
        <dt><label for="name">名前(10文字まで)※必須</label></dt>
        <dd><input type="text" name="name" id="name" size="50" maxlength="10" /></dd>
        <dt><label for="lineid">LINE ID※必須</label></dt>
        <dd><input type="text" name="lineid" id="lineid" size="50" maxlength="10" /></dd>
        <dt><label for="address">住所</label></dt>
        <dd><input type="text" name="address" id="address" size="50" maxlength="10" /></dd>
        <dt><label for="age">年齢</label></dt>
        <dd><input type="text" name="age" id="age" size="50" maxlength="10" /></dd>
        <dt><label for="comment">メッセージ</label></dt>
        <dd><input type="text" name="comment" id="comment" size="50" maxlength="10" /></dd>
        </dl>
        <input type="submit" value="OK" />
        </div>
        </form>
    ・
    ・
    ・
     <?php
      	session_start();
    		require('dbconnect.php');
    	?>

    dbconnect.php

    <?php
    	$db	=	mysqli_connect('データベース名',	'ユーザー名',	'パスワード',	'テーブル名')	or
    		die(mysqli_connect_error());
    		echo	'接続しました';
    		mysqli_set_charset($db,	'utf8');
    ?>

    この状態で値を入力してOKボタンを押すと、URLは投稿ページ(actionで指定したこのページ)にもかかわらず、トップページの内容が表示されてしまいます。そして、テーブルにも値が入っていません。

    わかっていることとして、「接続しました」という文言がきちんと表示されているので、おそらくDBへの接続はうまくいっていると思います。また、値を何も入力しないでOKボタンを押すと、URLは同じく指定したURLになっているのに、内容はその投稿ページのカテゴリトップの内容が表示されています。

    jqueryのキャッシュのせいでなんかめちゃくちゃになっている気がしますが、全然前に進まないのでお助けください。。よろしくお願いします。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • モデレーター jim912

    (@jim912)

    フォームのname属性で指定されている name は 予約語 となっています。
    予約語を指定された場合、その値で指定された記事を取得しようとするため、往々にして404 エラーとなります。

    この場合も、URLと表示されるべき内容が一致しない点については、404で利用されるテンプレート(index.phpなど)が、用いられている可能性が高いと思われますので確認してください。

    なるほど…そんな決まりがあったのですね。ありがとうございます。

    nameをusernameにしたところ、表示の不具合に関しては解決したのですが、DBにはデータが入りません。dbconnect.phpが不十分で下記の記述を追加したのですが、やはりダメでした。どこが違うのでしょうか?

    if(!empty($_POST)){
    			if($_POST['name']	!=	''){
    				$sql	=	sprintf('INSERT INTO line SET username="%s",	lineid="%s",	address="%s",	age="%s",	comment="%s',
    				mysqli_real_escape_string($db,	$_POST['username']),
    				mysqli_real_escape_string($db,	$_POST['lineid']),
    				mysqli_real_escape_string($db,	$_POST['address']),
    				mysqli_real_escape_string($db,	$_POST['age']),
    				mysqli_real_escape_string($db,	$_POST['comment']));
    				mysqli_query($db,	$sql)	or	die(mysqli_error($db));
    
    				header('Location:	single.php');
    				exit();
    			}
    		}

    すいません、自己解決しました。ありがとうございました!

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「jqueryベースで作成したサイトに設置したフォームが機能しない」には新たに返信することはできません。