[問題] 想寫一個cgi佈告欄

看板C_and_CPP (C/C++)作者 (一期一会)時間16年前 (2010/04/25 00:20), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: 想寫一個cgi佈告欄 希望得到的正確結果:點一下文章標題的超連結,即可閱讀全文 開發平台: Ubuntu G++ 有問題的code: #include <iostream> #include <vector> #include <string> #include "cgicc-3.2.7/cgicc/Cgicc.h" #include "cgicc-3.2.7/cgicc/HTTPHTMLHeader.h" #include "cgicc-3.2.7/cgicc/HTMLClasses.h" #include <stdio.h> #include <sqlite3.h> #include <unistd.h> using namespace std; using namespace cgicc; static int callback(void *NotUsed, int argc, char **argv, char **azColName){ int i; for(i=0; i<argc; i++){ printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL"); } printf("\n"); return 0; } int main(int argc, char **argv) { sqlite3 *db; char *zErrMsg = 0; char insertS[4096]=""; int rc; /* if( argc!=3 ){ fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[0]); return -1; }*/ rc = sqlite3_open("test.db", &db); if( rc ){ fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db)); sqlite3_close(db); return -1; } rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg); if( rc!=SQLITE_OK ){ fprintf(stderr, "SQL error: %s\n", zErrMsg); sqlite3_free(zErrMsg); } try { Cgicc cgi; // Send HTTP header cout << HTTPHTMLHeader() << endl; // Set up the HTML document cout << html()<<endl; cout<<head(title("Embedded System Lab3"))<<endl; cout<<body()<<endl; cout<<h1("Embedded System Lab")<<endl; cout<<b()<<"<p><font size =\"5\">新增留言</font></p>"<<b()<<endl; cout<<"<form method = \"post\" action = \"http://192.168.1.124/Submit_Form.cgi\" >" int n=0; const char *list[4]; list[0]=(**name).c_str(); list[1]=(**email).c_str(); list[2]=(**topic).c_str(); list[3]=(**comments).c_str(); cout<<"<p>"<<list[0]<<", "<<list[1]<<", "<<list[2]<<", "<<list[3]<<"</p>"<<endl; n=sprintf(insertS, "insert into Post values ('%s', '%s', '%s', '%s')", list[0], list[1], list[2], list[3]); //"insert into Post values (name, email, topic, comments)" cout<<"<p>"<<insertS<<"</p>"; //rc = sqlite3_exec(db, insertS, 0, 0, &zErrMsg);(後面沒有條件式吧!) // Close the HTML document char querysql[1024]="select * from Post";//retrieves data char **result;//stores the resulting database data int row, col=5; sqlite3_get_table(db, querysql, &result, &row, &col, &zErrMsg); cout<<"<table border=\"1\" width=\"80%\" >"<<endl; int check[row]; string names[row]; //total number in result should have row*col+2 elements for (int i=0; i< row; i++) { {switch(i%5) { case 0: cout<<"<tr><td>Name:</td>"; break; case 1: cout<<"<tr><td>E-mail:</td>"; break; /*問題就在這裡 想用一個陣列去管理文章(每篇都assign一個整數index)... 然後他的網址應該怎麼打呢?*/ case 2: cout<<"<tr><td><a href=\"Subject:";" rel="nofollow">http://192.168.1.124/list.cgi/%i="<<id<<"\">Subject:</a></td>"; break; case 3: cout<<"<tr><td>Text:</td>"; break; case 4: //check[i]=static_cast<int>(result[count]);static_cast<int>(names[row]=result[count-4]); break; default: break; } cout<<"<td>"<<result[count]<<"</td></tr>"<<endl; if((i-5)%5==0) cout<<"<tr></tr>"; } sqlite3_free_table(result); cout<<"</table>"<<endl; cout << body() << html(); sqlite3_close(db); return 0; } catch(exception& e) { // handle any errors - omitted for brevity } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.174.136
文章代碼(AID): #1BqnfObf (C_and_CPP)
文章代碼(AID): #1BqnfObf (C_and_CPP)