チェックボックスをCGI(C言語)で使用する方法を教えて下さい。
例えば、HTMLで
<input type="checkbox" name="Check1" value="Sel11" />
チェック1 選択1<br />
<input type="checkbox" name="Check1" value="Sel12" />
チェック1 選択2<br />
<input type="checkbox" name="Check1" value="Sel13" />
チェック1 選択3
<hr />
<input type="checkbox" name="Check2" value="Sel21" checked />
チェック2 選択1<br />
<input type="checkbox" name="Check2" value="Sel22" />
チェック2 選択2<br />
<input type="checkbox" name="Check2" value="Sel23" checked />
チェック2 選択3
というプログラムはCGI(C言語)ではどの様に記述すれば良いでしょうか?
No.5ベストアンサー
- 回答日時:
■各データーを受け取ってからどのようにしたいかの処理
そういえば使い方を聞かれはしたけどどのように使いたいのかは聞いてないわ
まあいいやそれでも説明はできるしね
先っきの書き込みで
chek_name[3],*chek_value[3];
の中身はこんな感じになってるはず
chek_name[0]==sel
chek_name[1]==sel
chek_name[2]==NULL
chek_value[0]==Sel21
chek_value[1]==Sel23
chek_value[2]==NULL
そしてさっきの分解法は
チェックを全部ONにしようが一つだけONにしようがONにした数だけ配列に値がはいるようにしてるの
そして次
while(chek_value[i]!=NULL){
check(&chek_value[i],&b,&c);//NO3で作ったHTMLの表示を変える関数
if(strcmp(chek_value[i],"Sel21")==0){ //やっぱりチェックボックスのvalueは数字がいいよ処理がめんどいswichもつかえないし
//sel21がON担ったときどう処理したいかここに記述する
//って言うか処理させたい事の関数を作ってまとめて処理するといいかも
//失敗失敗
}
if(strcmp(chek_value[i],"Sel22")==0){
//sel22がONになったときどう処理したいかここに記述する
}
if(strcmp(chek_value[i],"Sel23")==0){
//sel23がONになったときどう処理したいかここに記述する
}
i++;
}
大体こんな感じだね
まとめると
・チェックがonのとき(offでも処理できるならどうぞ)情報を送信してもらう
・送られてくる情報を分解して各配列に入れる(順番がバラバラでも内容にNUULが入っててもOKな用に)
・onの情報が送られてきたときようの表示変換関数と動作処理関数を作っておく
・HTMLのcheakのvalueは数字のほうが処理しやすい
//・説明する時に作ったソースは私が作ったソースをアレンジして作ったけれどアレンジしたのはコンパイルして動作を確認していないからちゃんと動くか分からない上にバグがあるか分からない
//・たぶんあってるけれど、多少書き間違えてるかもしれないから質問者さんが自分でどこがミスってるか考えてね ミスがあっても本の少しだろうからね アレンジしていない私のソースはバグなし、書き間違えなし
・C言語でCGI作ってる人少ないみたいだから同じC言語使い同士仲良くやろうね。また質問やききたい事があったらよろしくね
疲れました。
手が冷たいです。
今日は寝ます。
No.4
- 回答日時:
■チェックボックスの入力情報取得
おそらくチェックボックス以外のテキストボックスもつかうと思いますのでそれを含めた処理です
チェックボックスはチェックボックス専用の配列に格納します
チェックボックス以外のものはチェックボックス以外のですね
例としてHTMLにこれだけの情報を送ってもらうようにしてみます
//チェックボックス以外は適当にかいてるので使い方おかしいと言う突っ込みは受け付けません
<input type=\"text\" name=\"text\" value=\"ren\" />";
<input type=\"radio\" name=\"cc\" value=\"light\" checked />";
<input type=\"radio\" name=\"cc\" value=\"left" />";
<input type=\"checkbox\" name=\"sel\" value=\"Sel21\" />";//チェック入れて送信
<input type=\"checkbox\" name=\"sel\" value=\"Sel22\" />";//チェックいれずに送信
<input type=\"checkbox\" name=\"sel\" value=\"Sel23\" />";//チェック入れて送信
送られてくる情報はこんなかんじでしょうか
text=ren&cc=light&sel=Sel21&sel=Sel23
これを分解して各配列に入れます
int Deta1(void){
char *chekigai_name[2],*chekigai_value[2]; //チェック以外の配列用 配列の数はちぇくボックス以外の情報分
char *chek_name[3],*chek_value[3]; //テックの配列用 配列の数はON/OFF含めたチェックの全体すう
char *a="text=ren&cc=light&sel=Sel21&sel=Sel23"; //送られてくる情報が入るように工夫してね
int b;
int c=0;
int i=0,cn=0,dn=0;
char *tm=NULL;
char *han;
if(a[0]==NULL){
return(-1);
}
if(a!=NULL){
b=strlen(a)
}
chekigai_name[0]=a;
while((a[++i]!=NULL)&&(i<b)){
/* 項目の分解 */
if(a[i]=='='){
a[i]=NULL;
if(c!=1){
chekigai_value[cn]=a+i+1;
cn++;
}
else{
chek_valu[dn]=a+i+1;
dn++;
c=0;
}
}
/* データ項目で分解 */
else if(a[i]=='&'){
a[i]=NULL;
han=a+i+1;
if(strncmp(han,"sel=",4)==0){
chek_name[dn]=han;
c=1;
}
else{
chekigai_name[cn]=han;
}
}
}
}
//部屋の気温が冷たいから手が冷たいし疲れてきた
続く
No.3
- 回答日時:
■checkedのON/OFFの関数の用意
こんな関数を用意します
っというかよく見たらvalueにはいってるの(文字列でも良い)数字がいいですよ
処理しやすいため
第一引数にはvalueの値を
第二引数にはかえる前の文字列を
第三引数には変えたい文字列をいれます
void check(char **a,char **b,char **c){
if(strcmp(a,"Sel21")==0){
*b="<input type="checkbox" name="Check2" value="Sel21" checked />";
*c="<input type="checkbox" name="Check2" value="Sel21" />";
}
if(strcmp(a,"Sel22")==0){
*b="<input type="checkbox" name="Check2" value="Sel22" />";
*c="<input type="checkbox" name="Check2" value="Sel22" checked />";
}
if(strcmp(a,"Sel23")==0){
*b="<input type="checkbox" name="Check2" value="Sel23" checked />";
*c="<input type="checkbox" name="Check2" value="Sel23" />";
}
}
続く
No.2
- 回答日時:
■checkedのON/OFFのさせかた
こんな関数を使います
int hen(char *buf, char *mae, char *ato){
char *nw;
size_t zen,go;
zen = strlen(mae);
go = strlen(ato);
if(zen == 0 || (nw = strstr(buf, mae)) == NULL){
return 0;
}
memmove(nw + go, nw + zen, strlen(buf) - (nw + zen - buf ) + 1);
memcpy(nw, ato, go);
return 1;
}
関数の使い方ですが
第一引数は変化させたい文字列
第二引数は第一引数の中でとくに変えたい箇所
第三引数は変える予定の文字列
具体例をあげると
hen("りんごが木から落ちた","りんご","みかん");
とすると
みかんが木から落ちた
となります
質問にかかれてる
<input type="checkbox" name="Check2" value="Sel22" />
チェック2 選択2<br />
にchecked をつける場合
char *buf="<input type=\"checkbox\" name=\"Check2\" value=\"Sel22\" />
チェック2 選択2<br />"
char *zen="<input type=\"checkbox\" name=\"Check2\" value=\"Sel22\" />"
char *go="<input type=\"checkbox\" name=\"Check2\" value=\"Sel22\" checked/>"
と初期設定しておいて
hen(buf,zen,go);
とすれば文字列をかえられます
続く
No.1
- 回答日時:
「使用する」とはどんな意味で使ってますか?
・HTMLとして、例示されたようなコードを出力したい
↓
printfなりなんなり、お好きな関数を使って標準出力に出力してください。
それすらわからないなら、CGIより先にC言語をマスターしてください
・HTMLのcheckboxの使い方がわからない
↓
CGIより先にHTMLをマスターしてください。
あとは、そのHTMLの通りに出力するようにプログラムを作るだけです。
・checkboxからデータを受けとる方法がわからない
↓
過去の質問を見ると、受けとれているようなので、これは無いと思いますが。
・その他
↓
具体的に補足してください
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- HTML・CSS ただいま勉強始めたての初心者です。フォームを縦並べにしたいです。 2 2022/11/20 17:18
- PHP $_SESSIONについて教えて下さい。 2 2023/03/02 09:18
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【選手権お題その3】この画像で一言【大喜利】
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・ちょっと先の未来クイズ第6問
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォームの入力内容の後ろに文...
-
CGIに渡しているパラメータを表...
-
複数ボタンのvalueを送れない
-
ボタンの処理
-
「利用規約の同意」チェックボ...
-
チェックボックスの返す値
-
wordの数式について 定積分を書...
-
INPUT TYPE
-
ラジオボタンが両方とも選択で...
-
FORMのselectの選択肢を最初か...
-
WEBページを強制的に横画面で見...
-
「value」に2つの値をセットす...
-
htmlからパラメータで、cgiに渡...
-
SUN BBSの改造方法
-
select値をhiddenのvalueに渡し...
-
[HTML]プルダウンメニューの横...
-
ラジオボタンを選択済みにする...
-
perlを難読化、暗号化させたい
-
WEBアプリケーションからフォル...
-
【CGI】画像の表示の仕方【Mini...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
チェックボックスの返す値
-
別formのhidden項目を自form値...
-
Error: No Recipient というエ...
-
ボタンの処理
-
チェックボックスで選択した内...
-
掲示板の文字色指定について
-
フォームの入力内容の後ろに文...
-
確認画面で表示される商品名に...
-
CGIでラジオボタンの選択結果を...
-
hiddenで送ったデータの取り出し方
-
このメールフォームが機能しな...
-
アンケートで質問を複数ページ...
-
ラジオボタン
-
CGIで得た内容をHTMlページに代入
-
アンケートフォームで前のペー...
-
チェックBOXにチェックを入...
-
CGIでチェックボックスを使...
-
CGIフォームから飛ばすメールで...
-
SUN BBSの改造方法
-
wordの数式について 定積分を書...
おすすめ情報