!!! Listing 1: suche_mysql.php
function getMT()
{
list($msec, $sec) = explode(" ",microtime());
return ((float)$msec+(float)$sec);
}
$startTime = getMT();
$dbConnection = null;
// Verbindung über ODBC zu MySQL herstellen
function dbOpen($aHost, $aUser, $aPassword, $aDataBase) {
global $dbConnection;
$dbConnection = mysql_connect($aHost,$aUser,$aPassword)
or die("Konnte Verbindung zur Datenbank nicht aufbauen");
mysql_select_db($aDataBase,$dbConnection);
}
function printTableHeader($aWidth,$aCellSpacing,$aCellPadding) {
echo "
\n";
}
function printTableRow() {
echo "\n";
}
function printTableData($aWidth,$aHeight,$aBgColor,
$aAlign,$aVAlign,$aContent) {
echo "\n";
echo $aContent."\n";
echo " | \n";
}
function closeTableRow() {
echo "
\n";
}
function printTableEnd() {
echo "
\n";
}
$HTMLbreak = "
";
$HTMLboldOn = "";
$HTMLboldOff = "";
?>
Suche in iX-Buchbesprechungen
// Formularausgabe, wenn whatsit ("Suchen") nicht gesetzt
if (!isset($HTTP_GET_VARS["whatsit"]))
$whatsit = "";
if (!$whatsit)
{
?>
} else {
// hier beginnt der Suchvorgang: DB-Verbindung aufbauen...
dbOpen("localhost","root","sehr_geheim","biblio");
$hitCount = 0;
$sqlQuery = "";
$suchDisplay = "";
if ($whatsit=="Autorensuche") {
$sqlQuery = "SELECT v.name AS vname, v.ort, b.titel, ".
"b.untertitel, b.jahr, b.waehrung".
", b.preis, b.seiten, b.id, b.isbn, rez.vorname ".
"AS rvorname, rez.nachname AS rnachname".
", b.rez_monat, b.rez_jahr from autoren a, buecher b, ".
"verlage v, rez_aut r, rezensenten rez WHERE r.buch_id = b.id".
" AND a.id = r.autor_id AND v.id = b.verlag_id".
" AND b.rez_id = rez.id AND UPPER(a.nachname) LIKE \"".
strtoupper($s_autor)."\" ORDER BY b.titel";
$suchDisplay = " Autoren, deren Name \"".$s_autor."\" enthält";
} else
if ($whatsit=="Preislimit") {
// select-Statement aufbauen
}
$resSearch = mysql_query($sqlQuery,$dbConnection);
if (mysql_num_rows($resSearch))
{
echo "Suchergebnis für ".$suchDisplay."
".$HTMLbreak.$HTMLbreak;
printTableHeader("70%",2,0);
while (list($vname,$ort,$titel,$untertitel,$jahr,
$waehrung,$preis,$seiten,$id,$isbn,
$rvorname,$rnachname,$rez_monat,$rez_jahr)
= mysql_fetch_row($resSearch)) {
$rsA = mysql_query("SELECT autoren.vorname,
autoren.nachname FROM rez_aut INNER JOIN
autoren ON rez_aut.autor_id = autoren.id
WHERE (rez_aut.buch_id = ".$id.")
ORDER BY autoren.nachname",$dbConnection);
$AuthStr = "";
$i = 1;
while (list($vorname,$nachname)= mysql_fetch_row($rsA))
{
$AuthStr .= $vorname." ".$nachname;
if ($i++");
printTableData("80%",100,"#F0F0F0","left","top",
$AuthStr.$HTMLbreak.$HTMLboldOn.$titel.$HTMLboldOff.
$HTMLbreak.$untertitel.$HTMLbreak.
$ort.", ".$vname." ".$jahr.$HTMLbreak.
$seiten." Seiten".$HTMLbreak.
$isbn.$HTMLbreak.
$waehrung." ".$preis.$HTMLbreak.$HTMLbreak.
$HTMLboldOn."Rezension :".$HTMLboldOff.$rvorname.
" ".$rnachname." in Heft ".
$rez_monat."/".$rez_jahr.$HTMLbreak);
closeTableRow();
$hitCount++;
} //Ende der while-Schleife
printTableEnd();
echo "Anzahl Treffer : ".$hitCount.$HTMLbreak.$HTMLbreak."
";
} //Ende der if-Schleife (mysql_num_rows)
else
echo "Keine Übereinstimmungen gefunden
\n";
mysql_close();
$endTime = getMT();
echo $endTime;
$duration = ($endTime-$startTime);
// und die benötigte Zeit messen.
echo "
Time needed: ".$duration."
";
echo "Zurück zur Suche";
$logFile = fopen("PHPLog.txt", "a");
fputs($logFile,date("d.m.Y H:i:s;").
$startTime.";".$endTime.";".$duration.
";MySQL;".$hitCount.";".$sqlQuery."\n");
fclose($logFile);
}
?>
!!! Listing 2: get_image_mysql.php
if ($ID != 0) {
$img_query = "select bild from buecher where $ID = id";
$host="localhost";
$user="dbadmin";
$password="sehr_geheim";
mysql_connect($host,$user,$password);
mysql_select_db("biblio");
$my_res = mysql_query($img_query);
if (mysql_affected_rows() > 0) {
Header("Content-type: image/gif");
print(mysql_result($my_res, 0, "bild"));
}
}
?>
!!! Listing 3: suche_mssql.asp
<%@Language="JScript" %>
<%
d = new Date();
startTime = d.getTime();
function printTableHeader(aWidth,aCellSpacing,aCellPadding) {
Response.write('\n');
}
function printTableRow() {
Response.write('\n');
}
function printTableData(aWidth,aHeight,aBgColor,
aAlign,aVAlign,aContent) {
Response.write('\n');
Response.write(aContent+'\n');
Response.write(' | \n');
}
function closeTableRow() {
Response.write('
\n');
}
function printTableEnd() {
Response.write('
\n');
}
HTMLbreak = '
';
HTMLboldOn = '';
HTMLboldOff = '';
%>
Suche in iX-Buchbesprechungen
<%
// Formularausgabe, wenn whatsit ("Suchen") nicht gesetzt
whatsit = Request("whatsit");
if (String(whatsit) == "undefined")
{
%>
<%
} else {
// hier beginnt der Suchvorgang: DB-Verbindung aufbauen...
//dbOpen("(local)","db_user","sehr_geheim","biblio");
hitCount = 0;
sqlQuery = '';
suchDisplay = '';
if (whatsit=='Autorensuche') {
s_autor = String(Request.Querystring('s_autor'));
sqlQuery = 'SELECT DISTINCT v.name AS vname, v.ort, ".
"b.titel, b.untertitel, b.jahr, b.waehrung'+
', b.preis, b.seiten, b.id, b.isbn, rez.vorname '.
'AS rvorname, rez.nachname AS rnachname'+
', b.rez_monat, b.rez_jahr from autoren a, '.
'buecher b, verlage v, rez_aut r,'+
' rezensenten rez WHERE r.buch_id = b.id '.
'AND a.id = r.autor_id AND v.id = b.verlag_id'+
' AND b.rez_id = rez.id AND UPPER(a.nachname) '.
'LIKE \''+s_autor.toUpperCase()+'\'';
suchDisplay = ' Autoren, deren Name "'+s_autor+'" enthält';
} else
if (whatsit=='Verlagssuche') {
// Aufbau des select-Statements
}
rsSearch = Session('dbConnection').Execute(sqlQuery);
if (!rsSearch.EOF) {
Response.write('Suchergebnis für '+suchDisplay+'
'+HTMLbreak+HTMLbreak);
printTableHeader('70%',2,0);
while (!rsSearch.EOF) {
rsA = Session('dbConnection').
Execute('SELECT autoren.vorname, autoren.nachname
FROM rez_aut INNER JOIN '+
'autoren ON rez_aut.autor_id = autoren.id
WHERE (rez_aut.buch_id = '+rsSearch('id').Value+')');
AuthStr = '';
while (!rsA.EOF) {
AuthStr += rsA('vorname').Value+' '+rsA('nachname').Value;
rsA.moveNext();
if (!rsA.EOF)
AuthStr+=', ';
}
printTableRow();
printTableData('20%',100,'#F0F0F0','center',
'middle','
');
printTableData('80%',100,'#F0F0F0','left','top',
AuthStr+HTMLbreak+HTMLboldOn+rsSearch('Titel').
Value+HTMLboldOff+HTMLbreak+
rsSearch('untertitel').Value+HTMLbreak+
rsSearch('ort').Value+', '+rsSearch('vname').Value+
' '+rsSearch('jahr').Value+HTMLbreak+
rsSearch('seiten').Value+' Seiten'+HTMLbreak+
rsSearch('isbn').Value+HTMLbreak+
rsSearch('waehrung').Value+' '+rsSearch('preis').
Value+HTMLbreak+HTMLbreak+
HTMLboldOn+'Rezension : '+HTMLboldOff+
rsSearch('rvorname').Value+' '+
rsSearch('rnachname').Value+' in Heft '+
rsSearch('rez_monat').Value+'/'+
rsSearch('rez_jahr').Value+HTMLbreak);
closeTableRow();
rsSearch.moveNext();
hitCount++;
} //Ende der while-Schleife (!rsSearch.EOF)
printTableEnd();
Response.write('Anzahl Treffer : '
+hitCount+HTMLbreak+HTMLbreak+'
');
} //Ende der if-Abfrage (!rsSearch.EOF)
else
Response.write('Keine Übereinstimmungen gefunden
\n');
e = new Date();
endTime = e.getTime();
duration = endTime-startTime;// und die beötigte Zeit messen.
Response.write(HTMLbreak+'Time needed: '+duration+HTMLbreak);
Response.write('Zurück zur Suche');
var fso, logFile;
fso = new ActiveXObject('Scripting.FileSystemObject');
logFile = fso.OpenTextFile(Server.MapPath("/ix/asp")
+ "\\ASPLog.txt", 8, true);
logFile.WriteLine(e.getDate()+'.'
+(e.getMonth()+1)+'.'+e.getYear()+' '
+e.getHours()+':'+e.getMinutes()+':'
+e.getSeconds()+';'+startTime+';'+endTime+';'
+duration+';MSSQL;'+hitCount+';'+sqlQuery);
logFile.Close();
}
%>
!!! Listing 4: get_image_mssql.asp
<%@ LANGUAGE="JScript" %>
<%
if (Request.QueryString("ID")!="")
intID = Request.QueryString("ID")
else
intID = 28;
// Clear out the existing HTTP header information
Response.Expires = 0;
Response.Buffer = true;
Response.Clear();
// Change the HTTP header to reflect that an image is being passed.
Response.ContentType = "image/gif";
dbConn = Server.CreateObject("ADODB.Connection");
// The following open line assumes you have
// set up a System DataSource
dbConn.Open("Provider=MSDASQL;Driver=
{SQL Server};Server=(local);Database=
biblio;Uid=;Pwd=;");
rs = dbConn.Execute("SELECT bild FROM buecher
WHERE id = " + intID);
Response.BinaryWrite(rs("bild").Value);
Response.End();
%>
!!! Listing 5: global.asa
!!! Listing 6: getall
#!/bin/sh
CONFFILE=BENCHCONF
# benchname |host |url |wgetoptions
# wphpmysqlpic|db.ix.heise.de|/ix/php/suche_mysql.php| -r --proxy=off -nH
MAX=10
if [ $# -eq 0 ];then
echo "Aufruf: $0 confdescription [count]"
echo "default fuer count ist 10"
exit
fi
MYQ=$1
shift
BASIS="QEACACACDEDCABCEDFGZSTRMKBALWGHIJE"
ZAHLEN="77,66,55,44,33,22,11,12,13,14,15,20,10,20,30,\
40,50,60,70,80,90,15,25,35,45,55,65,75,85,95"
export BASIS ZAHLEN
DUMMY=`grep -w $MYQ $CONFFILE | awk -F"|" '{print $1}'`
if [ -z $DUMMY ]; then
echo "$MYQ ist keine gueltige confdescription"
exit
fi
# alte Dateien loeschen:
# rm -f suche*
# rm -f *log
if [ $# -gt 0 ];then
MAX=$1
fi
COUNTS=$MAX
START=`date "+%s"`
date "+$0$$$MYQ $COUNTS start: %H-%M-%S"
while [ $MAX -gt 0 ]; do
SUCH=`echo $BASIS | awk '{print substr($0,'"$MAX"',1)"%"}'`
PREIS=`echo $ZAHLEN | awk -F',' '{print $'"$MAX"'}'`
MAX=`expr $MAX - 1`
./getrez $MYQ $SUCH &
./getpreis $MYQ $PREIS &
./getverlag $MYQ $SUCH &
./getautor $MYQ $SUCH &
done
wait
STOP=`date "+%s"`
DAUER=`expr $STOP - $START`
date "+$0$$$MYQ $COUNTS stop: %H-%M-%S $DAUER secs"
!!! Listing 7: getautor
#!/bin/sh
DEFAULT="A%25"
CONFFILE=BENCHCONF
MYQ=$1
shift
HOST=`grep -w $MYQ $CONFFILE | awk -F"|" '{print $2}'`
Q1=`grep -w $MYQ $CONFFILE | awk -F"|" '{print $3}'`
WGETOPT=`grep -w $MYQ $CONFFILE | awk -F"|" '{print $4}'`
Q1=${Q1}?s_autor=
if [ $# -gt 0 ];then
Q2=$1
else
Q2=$DEFAULT
fi
Q3="&whatsit=Autorensuche"
Q=$Q1$Q2$Q3
URL=http://${HOST}/$Q
START=`date "+%s"`
date "+$0$$start_$MYQ: %H:%M:%S"
wget $WGETOPT --output-file=$0-${MYQ}.log $URL
STOP=`date "+%s"`
DAUER=`expr $STOP - $START`
date "+$0$$stop_$MYQ: %H:%M:%S $DAUER sec"