<%@page contentType="text/html; charset=iso-8859-1" language="java" import="java.sql.*"%>
<%@ include file="../Connections/library.jsp" %>
<%! public static String sqlEscape(String str) {
       if(str==null) return(null);
       StringBuffer strBuf = new StringBuffer();
       for(int i=0; i<str.length();i++) {
          char c = str.charAt(i);
          if(c== '\'') {
              strBuf.append(c);
              strBuf.append(c);
          } else {
             strBuf.append(c);
          }
       }
       return(strBuf.toString());
   }
%>
<%
String titre__varOption = "%";
if (request.getParameter("optionTxt")  !=null) {titre__varOption = (String)request.getParameter("optionTxt") ;}
%>
<%
String titre__varRech = "%";
if (request.getParameter("recherche") !=null) {titre__varRech = (String)request.getParameter("recherche");}
%>
<%
Driver Drivertitre = (Driver)Class.forName(MM_library_DRIVER).newInstance();
Connection Conntitre = DriverManager.getConnection(MM_library_STRING,MM_library_USERNAME,MM_library_PASSWORD);
PreparedStatement Statementtitre = Conntitre.prepareStatement("SELECT DISTINCT ON(books.book_id) noinventaire, books.titre, lieupublication, datepublication, typedocument, refers_to.book_id, refers_to.artist_id, name, first_name  FROM refers_to, artist, books, a_publie, auteur_de, editor  WHERE refers_to.book_id =books.book_id AND refers_to.artist_id = artist.artist_id AND  a_publie.book_id = books.book_id AND a_publie.editor_id = editor.editor_id AND auteur_de.book_id = books.book_id  AND auteur_de.auteur_id = auteur.auteur_id AND (" + titre__varRech + ")  ILIKE '%" + titre__varOption + "%'  ORDER BY books.book_id, datepublication DESC");
ResultSet titre = Statementtitre.executeQuery();
boolean titre_isEmpty = !titre.next();
boolean titre_hasData = !titre_isEmpty;
Object titre_data;
int titre_numRows = 0;
%>
<%
int Repeat1__numRows = -1;
int Repeat1__index = 0;
titre_numRows += Repeat1__numRows;
%>
<%
// *** Recordset Stats, Move To Record, and Go To Record: declare stats variables

int titre_first = 1;
int titre_last  = 1;
int titre_total = -1;

if (titre_isEmpty) {
  titre_total = titre_first = titre_last = 0;
}

//set the number of rows displayed on this page
if (titre_numRows == 0) {
  titre_numRows = 1;
}
%>
<%
// *** Recordset Stats: if we don't know the record count, manually count them

if (titre_total == -1) {

  // count the total records by iterating through the recordset
    for (titre_total = 1; titre.next(); titre_total++);

  // reset the cursor to the beginning
  titre.close();
  titre = Statementtitre.executeQuery();
  titre_hasData = titre.next();

  // set the number of rows displayed on this page
  if (titre_numRows < 0 || titre_numRows > titre_total) {
    titre_numRows = titre_total;
  }

  // set the first and last displayed record
  titre_first = Math.min(titre_first, titre_total);
  titre_last  = Math.min(titre_first + titre_numRows - 1, titre_total);
}
%>
<% String MM_paramName = ""; %>
<%
// *** Move To Record and Go To Record: declare variables

ResultSet MM_rs = titre;
int       MM_rsCount = titre_total;
int       MM_size = titre_numRows;
String    MM_uniqueCol = "";
          MM_paramName = "";
int       MM_offset = 0;
boolean   MM_atTotal = false;
boolean   MM_paramIsDefined = (MM_paramName.length() != 0 && request.getParameter(MM_paramName) != null);
%>
<%
// *** Move To Record: handle 'index' or 'offset' parameter

if (!MM_paramIsDefined && MM_rsCount != 0) {

  //use index parameter if defined, otherwise use offset parameter
  String r = request.getParameter("index");
  if (r==null) r = request.getParameter("offset");
  if (r!=null) MM_offset = Integer.parseInt(r);

  // if we have a record count, check if we are past the end of the recordset
  if (MM_rsCount != -1) {
    if (MM_offset >= MM_rsCount || MM_offset == -1) {  // past end or move last
      if (MM_rsCount % MM_size != 0)    // last page not a full repeat region
        MM_offset = MM_rsCount - MM_rsCount % MM_size;
      else
        MM_offset = MM_rsCount - MM_size;
    }
  }

  //move the cursor to the selected record
  int i;
  for (i=0; titre_hasData && (i < MM_offset || MM_offset == -1); i++) {
    titre_hasData = MM_rs.next();
  }
  if (!titre_hasData) MM_offset = i;  // set MM_offset to the last possible record
}
%>
<%
// *** Move To Record: if we dont know the record count, check the display range

if (MM_rsCount == -1) {

  // walk to the end of the display range for this page
  int i;
  for (i=MM_offset; titre_hasData && (MM_size < 0 || i < MM_offset + MM_size); i++) {
    titre_hasData = MM_rs.next();
  }

  // if we walked off the end of the recordset, set MM_rsCount and MM_size
  if (!titre_hasData) {
    MM_rsCount = i;
    if (MM_size < 0 || MM_size > MM_rsCount) MM_size = MM_rsCount;
  }

  // if we walked off the end, set the offset based on page size
  if (!titre_hasData && !MM_paramIsDefined) {
    if (MM_offset > MM_rsCount - MM_size || MM_offset == -1) { //check if past end or last
      if (MM_rsCount % MM_size != 0)  //last page has less records than MM_size
        MM_offset = MM_rsCount - MM_rsCount % MM_size;
      else
        MM_offset = MM_rsCount - MM_size;
    }
  }

  // reset the cursor to the beginning
  titre.close();
  titre = Statementtitre.executeQuery();
  titre_hasData = titre.next();
  MM_rs = titre;

  // move the cursor to the selected record
  for (i=0; titre_hasData && i < MM_offset; i++) {
    titre_hasData = MM_rs.next();
  }
}
%>
<%
// *** Move To Record: update recordset stats

// set the first and last displayed record
titre_first = MM_offset + 1;
titre_last  = MM_offset + MM_size;
if (MM_rsCount != -1) {
  titre_first = Math.min(titre_first, MM_rsCount);
  titre_last  = Math.min(titre_last, MM_rsCount);
}

// set the boolean used by hide region to check if we are on the last record
MM_atTotal  = (MM_rsCount != -1 && MM_offset + MM_size >= MM_rsCount);
%>
<%
// *** Go To Record and Move To Record: create strings for maintaining URL and Form parameters

String MM_keepBoth,MM_keepURL="",MM_keepForm="",MM_keepNone="";
String[] MM_removeList = { "index", MM_paramName };

// create the MM_keepURL string
if (request.getQueryString() != null) {
  MM_keepURL = '&' + request.getQueryString();
  for (int i=0; i < MM_removeList.length && MM_removeList[i].length() != 0; i++) {
  int start = MM_keepURL.indexOf(MM_removeList[i]) - 1;
    if (start >= 0 && MM_keepURL.charAt(start) == '&' &&
        MM_keepURL.charAt(start + MM_removeList[i].length() + 1) == '=') {
      int stop = MM_keepURL.indexOf('&', start + 1);
      if (stop == -1) stop = MM_keepURL.length();
      MM_keepURL = MM_keepURL.substring(0,start) + MM_keepURL.substring(stop);
    }
  }
}

// add the Form variables to the MM_keepForm string
if (request.getParameterNames().hasMoreElements()) {
  java.util.Enumeration items = request.getParameterNames();
  while (items.hasMoreElements()) {
    String nextItem = (String)items.nextElement();
    boolean found = false;
    for (int i=0; !found && i < MM_removeList.length; i++) {
      if (MM_removeList[i].equals(nextItem)) found = true;
    }
    if (!found && MM_keepURL.indexOf('&' + nextItem + '=') == -1) {
      MM_keepForm = MM_keepForm + '&' + nextItem + '=' + java.net.URLEncoder.encode(request.getParameter(nextItem));
    }
  }
}

// create the Form + URL string and remove the intial '&' from each of the strings
MM_keepBoth = MM_keepURL + MM_keepForm;
if (MM_keepBoth.length() > 0) MM_keepBoth = MM_keepBoth.substring(1);
if (MM_keepURL.length() > 0)  MM_keepURL = MM_keepURL.substring(1);
if (MM_keepForm.length() > 0) MM_keepForm = MM_keepForm.substring(1);
%>
<%
// *** Move To Record: set the strings for the first, last, next, and previous links

String MM_moveFirst,MM_moveLast,MM_moveNext,MM_movePrev;
{
  String MM_keepMove = MM_keepBoth;  // keep both Form and URL parameters for moves
  String MM_moveParam = "index=";

  // if the page has a repeated region, remove 'offset' from the maintained parameters
  if (MM_size > 1) {
    MM_moveParam = "offset=";
    int start = MM_keepMove.indexOf(MM_moveParam);
    if (start != -1 && (start == 0 || MM_keepMove.charAt(start-1) == '&')) {
      int stop = MM_keepMove.indexOf('&', start);
      if (start == 0 && stop != -1) stop++;
      if (stop == -1) stop = MM_keepMove.length();
      if (start > 0) start--;
      MM_keepMove = MM_keepMove.substring(0,start) + MM_keepMove.substring(stop);
    }
  }

  // set the strings for the move to links
  StringBuffer urlStr = new StringBuffer(request.getRequestURI()).append('?').append(MM_keepMove);
  if (MM_keepMove.length() > 0) urlStr.append('&');
  urlStr.append(MM_moveParam);
  MM_moveFirst = urlStr + "0";
  MM_moveLast  = urlStr + "-1";
  MM_moveNext  = urlStr + Integer.toString(MM_offset+MM_size);
  MM_movePrev  = urlStr + Integer.toString(Math.max(MM_offset-MM_size,0));
}
%>
<html>
<head>
<title>Resultat de votre recherche</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="../lmstk.css" type="text/css">
</head>
<body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<table width="760" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr> 
    <td colspan="3"><h1>doc_art :</h1>
      <p> un logiciel de gestion de books ou de biblioth&egrave;que des 
        centres d'art, galeries et mus&eacute;es.</p>
      
    </td>
  </tr>
  <tr> 
    <td colspan="3" align="center" valign="middle"> <p>&nbsp;</p>
      <p align="center">Documents trouv&eacute;s pour : <strong><%= ((request.getParameter("optionTxt")!=null)?request.getParameter("optionTxt"):"") %></strong><br>
      </p>
      <p>Documents 
        <% if (!titre_isEmpty ) { %>
        <%=(titre_first)%> 
        <% } /* end !titre_isEmpty */ %>
        &agrave; 
        <% if (!titre_isEmpty ) { %>
        <%=(titre_last)%> 
        <% } /* end !titre_isEmpty */ %>
        de 
        <% if (!titre_isEmpty ) { %>
        <%=(titre_total)%> 
        <% } /* end !titre_isEmpty */ %>
        <br>
      </p>
      <table border="0" width="50%" align="center">
        <tr> 
          <td width="23%" align="center"> 
            <% if (MM_offset !=0) { %>
            <a href="<%=MM_moveFirst%>"><img src="images/First.gif" border=0></a> 
            <% } /* end MM_offset != 0 */ %>
          </td>
          <td width="31%" align="center"> 
            <% if (MM_offset !=0) { %>
            <a href="<%=MM_movePrev%>"><img src="images/Previous.gif" border=0></a> 
            <% } /* end MM_offset != 0 */ %>
          </td>
          <td width="23%" align="center"> 
            <% if (!MM_atTotal) { %>
            <a href="<%=MM_moveNext%>"><img src="images/Next.gif" border=0></a> 
            <% } /* end !MM_atTotal */ %>
          </td>
          <td width="23%" align="center"> 
            <% if (!MM_atTotal) { %>
            <a href="<%=MM_moveLast%>"><img src="images/Last.gif" border=0></a> 
            <% } /* end !MM_atTotal */ %>
          </td>
        </tr>
      </table>
      <table width="700" border="0" cellpadding="3">
        <% while ((titre_hasData)&&(Repeat1__numRows-- != 0)) { %>
        <% if (!titre_isEmpty ) { %>
        <tr> 
          <td><%=(((titre_data = titre.getObject("typedocument"))==null || titre.wasNull())?"":titre_data)%> <A HREF="fiche_doc.jsp?<%= MM_keepNone + ((MM_keepNone!="")?"&":"") + "book_id=" + (((titre_data = titre.getObject("book_id"))==null || titre.wasNull())?"":titre_data) %>"><%=(((titre_data = titre.getObject("noinventaire"))==null || titre.wasNull())?"":titre_data)%></A></td>
          <td bgcolor="#E4E4E4"><%=(((titre_data = titre.getObject("titre"))==null || titre.wasNull())?"":titre_data)%></td>
          <td> 
            <%=(((titre_data = titre.getObject("lieupublication"))==null || titre.wasNull())?"":titre_data)%></td>
          <td bgcolor="#E7E7E7" align="center"><%=(((titre_data = titre.getObject("datepublication"))==null || titre.wasNull())?"":titre_data)%></td>
        </tr>
        <% } /* end !titre_isEmpty */ %>
        <%
  Repeat1__index++;
  titre_hasData = titre.next();
}
%>
      </table>
      <table border="0" width="50%" align="center">
        <tr> 
          <td width="23%" align="center"> 
            <% if (MM_offset !=0) { %>
            <a href="<%=MM_moveFirst%>"><img src="images/First.gif" border=0></a> 
            <% } /* end MM_offset != 0 */ %>
          </td>
          <td width="31%" align="center"> 
            <% if (MM_offset !=0) { %>
            <a href="<%=MM_movePrev%>"><img src="images/Previous.gif" border=0></a> 
            <% } /* end MM_offset != 0 */ %>
          </td>
          <td width="23%" align="center"> 
            <% if (!MM_atTotal) { %>
            <a href="<%=MM_moveNext%>"><img src="images/Next.gif" border=0></a> 
            <% } /* end !MM_atTotal */ %>
          </td>
          <td width="23%" align="center"> 
            <% if (!MM_atTotal) { %>
            <a href="<%=MM_moveLast%>"><img src="images/Last.gif" border=0></a> 
            <% } /* end !MM_atTotal */ %>
          </td>
        </tr>
      </table>
      <p align="center">&nbsp;</p></td>
  </tr>
  <tr> 
    <td colspan="3" align="center" valign="middle"><table width="700" border="0" cellpadding="3" align="left">
        <tr> 
          <td nowrap>Rechercher encore :</td>
          <td> <form name="titre" method="post" action="doc.jsp">
              <select name="recherche">
                <option value="books.titre" selected>Titre</option>
                <option value="artist.name">Nom d'artist</option>
                <option value="auteur.name">Auteur</option>
                <option value="editor.name_editor">Editeur</option>
                <option value="books.noisbn">ISBN</option>
                <option value="books.noinventaire">Num&eacute;ro d'inventaire</option>
                <option value="books.thematique">Th&egrave;me</option>
              </select>
              <input type="text" name="optionTxt" size="32">
              <input type="submit" name="Submit" value="Trouver">
            </form></td>
        </tr>
      </table></td>
  </tr>
  <tr>
    <td colspan="3" align="left" valign="middle">&copy; Tony Grant/tgds.net 2002 
    </td>
  </tr>
</table>
</body>
</html>
<%
titre.close();
Conntitre.close();
%>