GCGI Test

Insert a Text String:

Insert a Text String (no new lines):

Insert an Integer:

Insert a Float:

Single Checkbox:

Multiple Checkbox: Phish: Widespread Panic: Moe.:

Insert Multiple Strings:

Radio Buttons:

TextArea (newlines):

TextArea (no newlines):

Single Select:

Multiple Select:

Here is the code to make this happen:

#include <stdlib.h>
#include <stdio.h>
#include "gcgi.h"

int main (int argc, char *argv[], char *envp[]) {

  char tstring[128], qstring[128], *qs, **bands, tf1[256], tf2[256], mulstr[128];
  int i, j, k, l, m, *n, o;
  double d;
  char *morebands[] = {"phish", "wsp", "moe." };
  char *colors[]    = {"red", "green", "blue" };

  if (initCgi() < 0)
    return -1;

  gcgiNumFormFields(&k);
  
  gcgiNumFields("band",&l);

  gcgiFetchString("string", tstring, 128);

  gcgiFetchStringNoNewLines("nonewlines", qstring, 128);

  gcgiFetchInteger("integer", &i, -1);

  gcgiFetchDouble("double", &d, -1.0);

  gcgiFetchCheckbox("choice", &j);

  gcgiFetchMultipleString("band", &bands);

  n = XMALLOC(int, 3);

  gcgiFetchMultipleCheckbox("band", morebands, 3, &n);

  gcgiFetchSelectIndex("radio", colors, 3, &o, -1);

  gcgiFetchString("tf1", tf1, 255);

  gcgiFetchStringNoNewLines("tf2", tf2, 255);

  qs = gcgiFetchEnvVar(gcgiQueryString);

  fprintf(gcgiOut,"Content-Type: Text/HTML\n\n");

  fprintf(gcgiOut,
	  "<html>\n"
	  "<head>\n"
	  "    <title>GCGI Test Results</title>\n"
	  "</head>\n\n"
	  "<body>\n"
	  "    <p><b>Total number of form fields:</b> %d</p>\n"
	  "    <p><b>Text String:</b>  %s</p>\n"
	  "    <p><b>Text String (no new lines):</b>  %s</p>\n"
	  "    <p><b>Integer:</b>      %d</p>\n"
	  "    <p><b>Double:</b>       %f</p>\n"
	  "    <p><b>Single Checkbox:</b> %s</p>\n"
	  "    <p><b>Number of checkboxes for \"band\":</b> %d\n"
	  "    <p><b>Bands:</b><ol>\n",
	  k, tstring, qstring, i, d, j? "checked":"unchecked", l);

  if (bands != NULL)
    for (m = 0; bands[m] != NULL; m++) {
      fprintf(gcgiOut,"<li>%s</li>\n",bands[m]);
    }

  fprintf(gcgiOut,
	  "</ol></p>\n"
	  "<p><b>Radio Button Selected Index:</b> %d"
	  "<p><b>Bands that were checked:</b><ol> ",o);

  for (m = 0; m < 3; m++)
    fprintf(gcgiOut,"<li><b>%s:</b> %s</li>",morebands[m], n[m]? "checked":"unchecked");

  fprintf(gcgiOut,"</ol>\n<p><b>Fetch Multiple Strings one at a time:</b>\n<ol>\n");
  while (gcgiFetchStringNext("mulstr", mulstr, 127) != GCGIFIELDNOTFOUND)
    fprintf(gcgiOut,"<li>%s</li>", mulstr);

  fprintf(gcgiOut,
	  "</ol>\n<p><b>Text Field One:</b><br><pre>%s</pre><br>\n"
	  "<p><b>Text Field Two (No Newlines):</b><br><pre>%s</pre><br>\n",
	  tf1, tf2);

  fprintf(gcgiOut,
	  "</p>\n"
	  "<pre>\n"
	  "QUERY_STRING: %s\n",
	  qs);
  printQuery(gcgiOut);
  fprintf(gcgiOut,
	  "</pre>\n"
	  "</body>\n"
	  "</html>\n");
  
  gcgiFreeMultipleString(bands);
  XFREE(n);

  freeCgi();

  return 0;
}
      


Julian M Catchen
Last modified: Sat Jan 26 11:08:38 MST 2002