質問編集履歴

3

「まだ回答を求めています」

2017/07/28 07:26

投稿

pintxos
pintxos

スコア8

test CHANGED
File without changes
test CHANGED
@@ -1,3 +1,19 @@
1
+ **「まだ回答を求めています」**
2
+
3
+
4
+
5
+ 質問に「まだ回答を求めています」と表示し、閲覧者に状況を知らせることで、新たな回答を得られやすくなります。以下のような場合にご利用ください。
6
+
7
+ もらった回答を調べてみたが、問題を解決できなかった
8
+
9
+ 質問投稿から時間がたってしまった
10
+
11
+ ボタンを押してから1週間が経過するか、新たな回答を得られると自動で非表示になります。
12
+
13
+
14
+
15
+
16
+
1
17
  始めて質問いたしますphp初心者です。
2
18
 
3
19
  どぞよろしくお願いいたします。

2

タイトルのidがいdになっていたのを直しました。

2017/07/28 07:26

投稿

pintxos
pintxos

スコア8

test CHANGED
@@ -1 +1 @@
1
- 素材を比較したdと共通項目数をデータベースに格納したい
1
+ 素材を比較したidと共通項目数をデータベースに格納したい
test CHANGED
File without changes

1

データベースの確テーブルの定義の追加とエラーについて、1か所データベース名を修正しました。

2017/07/21 22:03

投稿

pintxos
pintxos

スコア8

test CHANGED
File without changes
test CHANGED
@@ -408,6 +408,466 @@
408
408
 
409
409
 
410
410
 
411
+ $dsn='mysql:dbname=compare;host=localhost';
412
+
413
+ $user='root';
414
+
415
+ $password='';
416
+
417
+ $dbh=new PDO($dsn, $user, $password);
418
+
419
+ $dbh->query('SET NAMES utf8');
420
+
421
+
422
+
423
+ $sql='INSERT INTO answers(r1,r2,r3) VALUES (?,?,?)';
424
+
425
+ $stmt=$dbh->prepare($sql);
426
+
427
+ $data[]=$question1;
428
+
429
+ $data[]=$question2;
430
+
431
+ $data[]=$question3;
432
+
433
+ $stmt->execute($data);
434
+
435
+ $dch=null;
436
+
437
+ ?>
438
+
439
+
440
+
441
+ </body>
442
+
443
+ </html>
444
+
445
+ ```
446
+
447
+
448
+
449
+ ###補足情報
450
+
451
+ サーバの種類: MySQL
452
+
453
+ サーバのバージョン: 5.6.20
454
+
455
+ Apache/2.4.10 (Win32) OpenSSL/1.0.1i PHP/5.5.15
456
+
457
+
458
+
459
+ どうぞ宜しくお願いいたします。
460
+
461
+ 始めて質問いたしますphp初心者です。
462
+
463
+ どぞよろしくお願いいたします。
464
+
465
+
466
+
467
+ ###前提・実現したいこと
468
+
469
+ PHPで素材の特徴の共通項目数を求めるシステムを作っています。
470
+
471
+
472
+
473
+ データベース'compare'のテーブル'answers'に既にいくつかの回答(データ)が入っている状態で質問formから受け取った質問の回答をテーブル'answers'のデータと比較し幾つ共通項目があるかをデータベース'compare'の'result'テーブルのidナンバー(idフィールド)と共通項目数(commonsフィールド)を格納することを目指いしています。
474
+
475
+
476
+
477
+ ###発生している問題・エラーメッセージ
478
+
479
+
480
+
481
+ idと共通項目数の値を求めるところまではできているよう思いますがそれらの値をresultテーブルに格納することができません。
482
+
483
+
484
+
485
+ printと<br>等を使って表示させるとそれぞれの数字は問題なく出ています。
486
+
487
+ いろいろ試しエラーメッセージが出ることはないのですが数字がテーブルに格納されるという結果が得られません。
488
+
489
+
490
+
491
+ 御助力いただけますようお願いいたします。
492
+
493
+
494
+
495
+ ###該当のソースコード
496
+
497
+ 質問form
498
+
499
+
500
+
501
+ ```html
502
+
503
+ <html>
504
+
505
+ <head>
506
+
507
+ <meta charset="UTF-8">
508
+
509
+ <title>特徴マッチ度</title>
510
+
511
+ </head>
512
+
513
+ <body>
514
+
515
+ <form method="post" action="question_check.php">
516
+
517
+ 熱に強い<br/>
518
+
519
+ <input type="radio" name="q1" value="1">Yes <input type="radio" name="q1" value="2">No<br/>
520
+
521
+
522
+
523
+ 柔軟性がある<br/>
524
+
525
+ <input type="radio" name="q2" value="1">Yes <input type="radio" name="q2" value="2">No<br/>
526
+
527
+
528
+
529
+ 1、手で破く事ができる2、手で破く事はできない3鋏を使えば切れる4、鋏でも切れない<br/>
530
+
531
+ <input type="radio" name="q3" value="1">1 <input type="radio" name="q3" value="2">2<input type="radio" name="q3" value="3">3 <input type="radio" name="q3" value="4">4<br/>
532
+
533
+ <br/>
534
+
535
+ <input type="button" onclick="history.back()" value="戻る">
536
+
537
+ <input type="submit" value="OK">
538
+
539
+ </form>
540
+
541
+ </body>
542
+
543
+ </html
544
+
545
+ ```
546
+
547
+ これの回答チェックをし
548
+
549
+ ```PHP
550
+
551
+ <html>
552
+
553
+ <head>
554
+
555
+ <meta charaset="UTF8">
556
+
557
+ <title>回答チェック</title>
558
+
559
+ </head>
560
+
561
+ <body>
562
+
563
+
564
+
565
+ <?php
566
+
567
+ $question1=$_POST['q1'];
568
+
569
+ $question2=$_POST['q2'];
570
+
571
+ $question3=$_POST['q3'];
572
+
573
+
574
+
575
+ if($question1=='')
576
+
577
+ {
578
+
579
+ print'1番の回答がありません。<br/>';
580
+
581
+ }
582
+
583
+ else
584
+
585
+ {
586
+
587
+ print'1番の回答';
588
+
589
+ print$question1;
590
+
591
+ print'<br/>';
592
+
593
+ }
594
+
595
+ if($question2=='')
596
+
597
+ {
598
+
599
+ print'2番の回答がありません。<br/>';
600
+
601
+ }
602
+
603
+ if (isset($_POST["q2"]))
604
+
605
+ {
606
+
607
+ print'2番の回答';
608
+
609
+ print$question2;
610
+
611
+ print'<br/>';
612
+
613
+ }
614
+
615
+
616
+
617
+ if($question3=='')
618
+
619
+ {
620
+
621
+ print'3番の回答がありません。<br/>';
622
+
623
+ }
624
+
625
+ else
626
+
627
+ {
628
+
629
+ print'3番の回答';
630
+
631
+ print$question3;
632
+
633
+ print'<br/>';
634
+
635
+ }
636
+
637
+
638
+
639
+ if($question1==''||$question2==''||$question3=='')
640
+
641
+ {
642
+
643
+ print'<form>';
644
+
645
+ print'<input type="button" onclick="history.back()"value="戻る" >';
646
+
647
+ print'</form>';
648
+
649
+ }
650
+
651
+ else
652
+
653
+ {
654
+
655
+ print'<form method="post" action="compare.php">';
656
+
657
+ print'<input type="hidden" name="q1" value="'.$question1.'">';
658
+
659
+ print'<input type="hidden" name="q2" value="'.$question2.'">';
660
+
661
+ print'<input type="hidden" name="q3" value="'.$question3.'">';
662
+
663
+ print'<br/>';
664
+
665
+ print'<input type="button" onclick="history.back()" value="戻る">';
666
+
667
+ print'<input type="submit" value="OK">';
668
+
669
+ print'</form>';
670
+
671
+ }
672
+
673
+ ?>
674
+
675
+ </body>
676
+
677
+ </html>
678
+
679
+ ```
680
+
681
+ これを
682
+
683
+ ###試したこと(compare.php)
684
+
685
+ ```PHP
686
+
687
+ <html>
688
+
689
+ <head>
690
+
691
+ <meta charaset="UTF8">
692
+
693
+ <title>素材比較</title>
694
+
695
+ </head>
696
+
697
+ <body>
698
+
699
+
700
+
701
+ <?php
702
+
703
+
704
+
705
+ $question1=$_POST['q1'];
706
+
707
+ $question2=$_POST['q2'];
708
+
709
+ $question3=$_POST['q3'];
710
+
711
+
712
+
713
+ $dsn='mysql:dbname=compare;host=localhost';
714
+
715
+ $user='root';
716
+
717
+ $password='';
718
+
719
+ $dbh=new PDO($dsn, $user, $password);
720
+
721
+ $dbh->query('SET NAMES utf8');
722
+
723
+
724
+
725
+ $sql='SELECT code,r1,r2,r3 FROM answers WHERE 1';
726
+
727
+ $stmt=$dbh->prepare($sql);
728
+
729
+ $stmt->execute();
730
+
731
+
732
+
733
+ $dbh=null;
734
+
735
+
736
+
737
+ //回答が共通する計を求める。
738
+
739
+
740
+
741
+ while(true)
742
+
743
+ {
744
+
745
+ $rec=$stmt->fetch(PDO::FETCH_ASSOC);
746
+
747
+ if($rec==false)
748
+
749
+ {
750
+
751
+ break;
752
+
753
+ }
754
+
755
+
756
+
757
+ if($rec['r1']==$question1)
758
+
759
+ {
760
+
761
+ $s=$s+1;
762
+
763
+ }
764
+
765
+ else
766
+
767
+ {
768
+
769
+ $s=0;
770
+
771
+ }
772
+
773
+ if($rec['r2']==$question2)
774
+
775
+ {
776
+
777
+ $s=$s+1;
778
+
779
+ }
780
+
781
+ if($rec['r3']==$question3)
782
+
783
+ {
784
+
785
+ $s=$s+1;
786
+
787
+ }
788
+
789
+ //試した一例
790
+
791
+
792
+
793
+ $dsn='mysql:dbname=compare;host=localhost';
794
+
795
+ $user='root';
796
+
797
+ $password='';
798
+
799
+ $dbh=new PDO($dsn, $user, $password);
800
+
801
+ $dbh->query('SET NAMES utf8');
802
+
803
+
804
+
805
+ $sql = "INSERT INTO results (id, commons) VALUES (:id, :commons)";
806
+
807
+
808
+
809
+ $stmt = $dbh->prepare($sql);
810
+
811
+
812
+
813
+ $id= array($rec['code']=>$s);
814
+
815
+
816
+
817
+ // foreachで挿入する値を1つずつループ処理
818
+
819
+ foreach ($id as $key => $s) {
820
+
821
+
822
+
823
+ // 連想配列のキーを :name に、値を :population にセットし、executeでSQLを実行
824
+
825
+ $stmt->execute(array(':id' => $key, ':commons' => $s));
826
+
827
+
828
+
829
+ }
830
+
831
+ //ここまで一例
832
+
833
+
834
+
835
+ //上記の一例の部分を書かずにこの下のprintによって表示される値の様にをデータベースのテーブルresultsのフィールドidとフィールドcommonsに格納したい。
836
+
837
+
838
+
839
+ print" |";
840
+
841
+ print $rec['code'];
842
+
843
+ print" | ";
844
+
845
+ print $s;
846
+
847
+ print" |";
848
+
849
+ print '<br/>';
850
+
851
+
852
+
853
+ //これより上。
854
+
855
+
856
+
857
+
858
+
859
+
860
+
861
+ $s=0;
862
+
863
+ }
864
+
865
+
866
+
867
+ //新規の素材の回答をテーブルanswersの最後に格納。
868
+
869
+
870
+
411
871
  $dsn='mysql:dbname=kachikan;host=localhost';
412
872
 
413
873
  $user='root';
@@ -458,462 +918,12 @@
458
918
 
459
919
  どうぞ宜しくお願いいたします。
460
920
 
461
- 始めて質問いたしますphp初心者です。
462
-
463
- どぞよろしくお願いたし
464
-
465
-
466
-
467
- ###前提・実現したいこと
468
-
469
- PHP素材の特徴の共通項目数を求めるシステムを作っています。
470
-
471
-
472
-
473
- データベース'compare'のテーブル'answers'に既にいくつかの回答(データ)が入っている状態で質問formから受け取った質問の回答をテーブル'answers'のデータと比較し幾つ共通項目があるかをデータベース'compare'の'result'テーブルのidナンバー(idフィールド)と共通項目数(commonsフィールド)を格納することを目指いしています。
474
-
475
-
476
-
477
- ###発生している問題・エラーメッセージ
478
-
479
-
480
-
481
- idと共通項目数の値を求めるところまではできているよう思いますがそれらの値をresultテーブルに格納することができません。
482
-
483
-
484
-
485
- printと<br>等を使って表示させるとそれぞれの数字は問題なく出ています。
486
-
487
- いろいろ試しエラーメッセージが出ることはないのですが数字がテーブルに格納されるという結果が得られません。
488
-
489
-
490
-
491
- 御助力いただけますようお願いいたします。
492
-
493
-
494
-
495
- ###該当のソースコード
496
-
497
- 質問form
498
-
499
-
500
-
501
- ```html
502
-
503
- <html>
504
-
505
- <head>
506
-
507
- <meta charset="UTF-8">
508
-
509
- <title>特徴マッチ度</title>
510
-
511
- </head>
512
-
513
- <body>
514
-
515
- <form method="post" action="question_check.php">
516
-
517
- 熱に強い<br/>
518
-
519
- <input type="radio" name="q1" value="1">Yes <input type="radio" name="q1" value="2">No<br/>
520
-
521
-
522
-
523
- 柔軟性がある<br/>
524
-
525
- <input type="radio" name="q2" value="1">Yes <input type="radio" name="q2" value="2">No<br/>
526
-
527
-
528
-
529
- 1、手で破く事ができる2、手で破く事はできない3鋏を使えば切れる4、鋏でも切れない<br/>
530
-
531
- <input type="radio" name="q3" value="1">1 <input type="radio" name="q3" value="2">2<input type="radio" name="q3" value="3">3 <input type="radio" name="q3" value="4">4<br/>
532
-
533
- <br/>
534
-
535
- <input type="button" onclick="history.back()" value="戻る">
536
-
537
- <input type="submit" value="OK">
538
-
539
- </form>
540
-
541
- </body>
542
-
543
- </html
544
-
545
- ```
546
-
547
- これの回答チェックをし
548
-
549
- ```PHP
550
-
551
- <html>
552
-
553
- <head>
554
-
555
- <meta charaset="UTF8">
556
-
557
- <title>回答チェック</title>
558
-
559
- </head>
560
-
561
- <body>
562
-
563
-
564
-
565
- <?php
566
-
567
- $question1=$_POST['q1'];
568
-
569
- $question2=$_POST['q2'];
570
-
571
- $question3=$_POST['q3'];
572
-
573
-
574
-
575
- if($question1=='')
576
-
577
- {
578
-
579
- print'1番の回答がありません。<br/>';
580
-
581
- }
582
-
583
- else
584
-
585
- {
586
-
587
- print'1番の回答';
588
-
589
- print$question1;
590
-
591
- print'<br/>';
592
-
593
- }
594
-
595
- if($question2=='')
596
-
597
- {
598
-
599
- print'2番の回答がありません。<br/>';
600
-
601
- }
602
-
603
- if (isset($_POST["q2"]))
604
-
605
- {
606
-
607
- print'2番の回答';
608
-
609
- print$question2;
610
-
611
- print'<br/>';
612
-
613
- }
614
-
615
-
616
-
617
- if($question3=='')
618
-
619
- {
620
-
621
- print'3番の回答がありません。<br/>';
622
-
623
- }
624
-
625
- else
626
-
627
- {
628
-
629
- print'3番の回答';
630
-
631
- print$question3;
632
-
633
- print'<br/>';
634
-
635
- }
636
-
637
-
638
-
639
- if($question1==''||$question2==''||$question3=='')
640
-
641
- {
642
-
643
- print'<form>';
644
-
645
- print'<input type="button" onclick="history.back()"value="戻る" >';
646
-
647
- print'</form>';
648
-
649
- }
650
-
651
- else
652
-
653
- {
654
-
655
- print'<form method="post" action="compare.php">';
656
-
657
- print'<input type="hidden" name="q1" value="'.$question1.'">';
658
-
659
- print'<input type="hidden" name="q2" value="'.$question2.'">';
660
-
661
- print'<input type="hidden" name="q3" value="'.$question3.'">';
662
-
663
- print'<br/>';
664
-
665
- print'<input type="button" onclick="history.back()" value="戻る">';
666
-
667
- print'<input type="submit" value="OK">';
668
-
669
- print'</form>';
670
-
671
- }
672
-
673
- ?>
674
-
675
- </body>
676
-
677
- </html>
678
-
679
- ```
680
-
681
- これを
682
-
683
- ###試したこと(compare.php)
684
-
685
- ```PHP
686
-
687
- <html>
688
-
689
- <head>
690
-
691
- <meta charaset="UTF8">
692
-
693
- <title>素材比較</title>
694
-
695
- </head>
696
-
697
- <body>
698
-
699
-
700
-
701
- <?php
702
-
703
-
704
-
705
- $question1=$_POST['q1'];
706
-
707
- $question2=$_POST['q2'];
708
-
709
- $question3=$_POST['q3'];
710
-
711
-
712
-
713
- $dsn='mysql:dbname=compare;host=localhost';
714
-
715
- $user='root';
716
-
717
- $password='';
718
-
719
- $dbh=new PDO($dsn, $user, $password);
720
-
721
- $dbh->query('SET NAMES utf8');
722
-
723
-
724
-
725
- $sql='SELECT code,r1,r2,r3 FROM answers WHERE 1';
726
-
727
- $stmt=$dbh->prepare($sql);
728
-
729
- $stmt->execute();
730
-
731
-
732
-
733
- $dbh=null;
734
-
735
-
736
-
737
- //回答が共通する計を求める。
738
-
739
-
740
-
741
- while(true)
742
-
743
- {
744
-
745
- $rec=$stmt->fetch(PDO::FETCH_ASSOC);
746
-
747
- if($rec==false)
748
-
749
- {
750
-
751
- break;
752
-
753
- }
754
-
755
-
756
-
757
- if($rec['r1']==$question1)
758
-
759
- {
760
-
761
- $s=$s+1;
762
-
763
- }
764
-
765
- else
766
-
767
- {
768
-
769
- $s=0;
770
-
771
- }
772
-
773
- if($rec['r2']==$question2)
774
-
775
- {
776
-
777
- $s=$s+1;
778
-
779
- }
780
-
781
- if($rec['r3']==$question3)
782
-
783
- {
784
-
785
- $s=$s+1;
786
-
787
- }
788
-
789
- //試した一例
790
-
791
-
792
-
793
- $dsn='mysql:dbname=compare;host=localhost';
794
-
795
- $user='root';
796
-
797
- $password='';
798
-
799
- $dbh=new PDO($dsn, $user, $password);
800
-
801
- $dbh->query('SET NAMES utf8');
802
-
803
-
804
-
805
- $sql = "INSERT INTO results (id, commons) VALUES (:id, :commons)";
806
-
807
-
808
-
809
- $stmt = $dbh->prepare($sql);
810
-
811
-
812
-
813
- $id= array($rec['code']=>$s);
814
-
815
-
816
-
817
- // foreachで挿入する値を1つずつループ処理
818
-
819
- foreach ($id as $key => $s) {
820
-
821
-
822
-
823
- // 連想配列のキーを :name に、値を :population にセットし、executeでSQLを実行
824
-
825
- $stmt->execute(array(':id' => $key, ':commons' => $s));
826
-
827
-
828
-
829
- }
830
-
831
- //ここまで一例
832
-
833
-
834
-
835
- //上記の一例の部分を書かずにこの下のprintによって表示される値の様にをデータベースのテーブルresultsのフィールドidとフィールドcommonsに格納したい。
836
-
837
-
838
-
839
- print" |";
840
-
841
- print $rec['code'];
842
-
843
- print" | ";
844
-
845
- print $s;
846
-
847
- print" |";
848
-
849
- print '<br/>';
850
-
851
-
852
-
853
- //これより上。
854
-
855
-
856
-
857
-
858
-
859
-
860
-
861
- $s=0;
862
-
863
- }
864
-
865
-
866
-
867
- //新規の素材の回答をテーブルanswersの最後に格納。
868
-
869
-
870
-
871
- $dsn='mysql:dbname=kachikan;host=localhost';
872
-
873
- $user='root';
874
-
875
- $password='';
876
-
877
- $dbh=new PDO($dsn, $user, $password);
878
-
879
- $dbh->query('SET NAMES utf8');
880
-
881
-
882
-
883
- $sql='INSERT INTO answers(r1,r2,r3) VALUES (?,?,?)';
884
-
885
- $stmt=$dbh->prepare($sql);
886
-
887
- $data[]=$question1;
888
-
889
- $data[]=$question2;
890
-
891
- $data[]=$question3;
892
-
893
- $stmt->execute($data);
894
-
895
- $dch=null;
896
-
897
- ?>
898
-
899
-
900
-
901
- </body>
902
-
903
- </html>
904
-
905
- ```
906
-
907
-
908
-
909
- ###補足情報
910
-
911
- サーバの種類: MySQL
912
-
913
- サーバのバージョン: 5.6.20
914
-
915
- Apache/2.4.10 (Win32) OpenSSL/1.0.1i PHP/5.5.15
916
-
917
-
918
-
919
- どうぞ宜しくお願いいたします。
921
+
922
+
923
+ エラーはでていません
924
+
925
+
926
+
927
+ テーブル'answers'はフィールドがcode(int11)AI主,r1(int11),r2(int11),r3(int11)です。
928
+
929
+ テーブル'results'はフィールドid(int11)主,commons(int11)です。