Hey Leute
ich habe in PHP eine Seite geschrieben, die sich mit einer Oracle Datenbank verbindet, dort Abfragen durchführt und die Ergebnisse anzeigt.
Man kann dort bestimmte Abfragen durchführen.
Es gibt nur leider ein Problem
bei der Ausgabe der Tabelle wird immer die 1. Zeile vollkommen ignoriert
also zeigt der an, wenn es nur einen Datensatz gibt, dass es keine Datensätze gibt
hier der Code:
Javascripts
Funktionen:
Hauptteil:
ist alles in einer Datei
vielleicht habt ihr eine Idee wo genau mein Denkfehler ist
häng an dem Problem schon einigen Tagen und bin mit meinem Latein am Ende
sorry wenn der Code ein wenig unübersichtlich ist
aber ich bin noch ein ziemlicher Anfänger bei PHP
hab erst vor kurzem angefangen
ich habe in PHP eine Seite geschrieben, die sich mit einer Oracle Datenbank verbindet, dort Abfragen durchführt und die Ergebnisse anzeigt.
Man kann dort bestimmte Abfragen durchführen.
Es gibt nur leider ein Problem
bei der Ausgabe der Tabelle wird immer die 1. Zeile vollkommen ignoriert
also zeigt der an, wenn es nur einen Datensatz gibt, dass es keine Datensätze gibt
hier der Code:
Javascripts
PHP-Code:
function ID()
{
var element = document.getElementById("text");
var element2 = document.getElementById("label");
var element3 = document.getElementById("send");
element2.firstChild.nodeValue = 'Geben Sie eine ID ein: ';
element.style.display = "";
element2.style.display = "";
window.form1.text.focus();
}
function Name()
{
var element = document.getElementById("text");
var element2 = document.getElementById("label");
var element3 = document.getElementById("send");
element2.firstChild.nodeValue = 'Geben Sie einen Namen (bzw. Anfangsbuchstabe) ein: ';
element.style.display = "";
element2.style.display = "";
window.form1.text.focus();
}
function Job()
{
var element = document.getElementById("text");
var element2 = document.getElementById("label");
var element3 = document.getElementById("send");
element2.firstChild.nodeValue = 'Geben Sie eine Jobbezeichnung (bzw. Anfangsbuchstabe) ein: ';
element.style.display = "";
element2.style.display = "";
window.form1.text.focus();
}
function Ort()
{
var element = document.getElementById("text");
var element2 = document.getElementById("label");
var element3 = document.getElementById("send");
element2.firstChild.nodeValue = 'Geben Sie einen Standort (bzw. Anfangsbuchstabe) ein: ';
element.style.display = "";
element2.style.display = "";
window.form1.text.focus();
}
function display2()
{
var element = document.getElementById("text");
var element2 = document.getElementById("label");
var element3 = document.getElementById("send");
element.style.display = "none";
element2.style.display = "none";
document.form1.submit();
}
</script>
PHP-Code:
function formular()
{
echo '<form action="" method = "POST" name="form1"><p>Wählen Sie ihre Suche aus:</p><p><select name="Suche" size="16" >
<optgroup label="Mitarbeiter:">
<option label="EMPNO" onclick="ID();" >nach ID</option>
<option label="ENAME" onclick="Name();" >nach Name</option>
<option label="JOB" onclick="Job();" >nach Beruf</option>
<option label = "ALL" onclick="display2();"> Alle Mitarbeiter anzeigen</option>
</optgroup>
<optgroup label="Abteilung">
<option label="DEPTNO" onclick="ID();">nach Abteilungsnummer</option>
<option label="LOC" onclick="Ort();">nach Standort</option>
<option label = "AllD" onclick="display2();"> Alle Abteilungen anzeigen</option>
</optgroup>
<optgroup label = "spezielles Suchen:">
<option label = "job1" onclick="display2();">welche Berufe sind auf welchem Standort verteilt</option>
<option label = "job2" onclick="display2();">Wieviele Mitarbeiter gibt es zu welchem Beruf</option>
<option label = "job3" onclick="Job();">Anzahl der Mitarbeiter zu einem bestimmten Beruf</option>
<option label = "job4" onclick="Ort();">Welche Mitarbeiter sind auf welchem Standort vertreten</option>
<option label = "job5" onclick="Name();">Welche Mitarbeiter sind in welcher Abteilung</option>
</select></p><label id="label" for="text" style="display:none">Test</label><br /><input type="text" id = "text" name = "text" style="display:none" /><input type="submit" id="send" style="display:none"</form>';
}
function sqlConnect($mySQL)
{
global $stat;
$con = oci_connect( 'user' ,'password' , 'database') or die ("Keine DB Verbindung!");
$stat = oci_parse($con, $mySQL);
oci_execute($stat);
table($stat);
}
function table($stat)
{
global $stat;
global $array;
$counter = 0;
echo "<table border='1'>\n";
echo "<tr>\n";
//Spalten ausgabe
$array = array_keys(oci_fetch_array($stat, OCI_ASSOC+OCI_RETURN_NULLS));
for($i=0; $i<10; $i++)
{
if(isset($array[$i]))
{
echo "<th>";
echo $array[$i];
echo "</th>";
}
}
echo "</tr>\n";
//Datenausgabe
while ($row = oci_fetch_array($stat, OCI_ASSOC+OCI_RETURN_NULLS) )
{
$counter ++;
echo "<tr>\n";
foreach ($row as $item)
{
echo " <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : " ") . "</td>\n";
}
echo "</tr>\n";
}
echo "</table>\n<br />";
$array = '';
if($counter==0)
{
echo "Keine Daten gefunden!<br />";
}
echo '</br> nach 1min wird die Anzeige gelöscht</br>';
echo '<meta http-equiv="refresh" content="60;url=testSearch.php">';
}
PHP-Code:
echo '<div align = "center" >';
formular();
if($_SERVER['REQUEST_METHOD']=='POST')
{
if(empty($_POST['Suche']))
{
$err[]="xxxxxx";
}else
{
switch($_POST['Suche']){
case 'Alle Mitarbeiter anzeigen':
$mySQL = "SELECT * FROM EMP";
sqlConnect($mySQL);
break;
case 'Alle Abteilungen anzeigen':
$mySQL = 'SELECT * FROM DEPT';
sqlConnect($mySQL);
break;
case 'welche Berufe sind auf welchem Standort verteilt':
$mySQL = 'SELECT e.JOB, d.LOC FROM EMP e, DEPT d WHERE d.DEPTNO = e.DEPTNO GROUP BY d.LOC, e.JOB ORDER BY e.JOB';
sqlConnect($mySQL);
break;
case 'Wieviele Mitarbeiter gibt es zu welchem Beruf':
$mySQL = 'SELECT JOB, COUNT(JOB) AS Anzahl FROM EMP GROUP BY JOB';
sqlConnect($mySQL);
break;
}
}
}
if(isset($_POST['text']))
{
$search = $_POST['text'];
switch($_POST['Suche'])
{
case 'nach ID':
if($_POST['text'] == "" )
{
echo 'Bitte geben Sie etwas ins Feld ein. Es sind nur Zahlen von 0 bis 9 erlaubt.';
}else if (preg_match("#^[0-9]+$#", $_POST['text']) == false)
{
echo 'Ungültige Zeichen';
}else
{
$mySQL = "SELECT * FROM EMP WHERE EMPNO LIKE UPPER('".mysql_real_escape_string($search)."%')";
sqlConnect($mySQL);
}
break;
case 'nach Name':
if($_POST['text'] == "")
{
echo 'Bitte geben Sie etwas ins Feld ein';
}else if (preg_match("#^[a-zA-Z]+$#", $_POST['text']) == false)
{
echo 'Ungültige Zeichen';
}else
{
$mySQL = "SELECT * FROM EMP WHERE ENAME LIKE UPPER('".mysql_real_escape_string($search)."%')";
sqlConnect($mySQL);
}
break;
case 'nach Beruf':
if($_POST['text'] == "")
{
echo 'Bitte geben Sie etwas ins Feld ein';
}else if (preg_match("#^[a-zA-Z]+$#", $_POST['text']) == false)
{
echo 'Ungültige Zeichen';
}else
{
$mySQL = "SELECT * FROM EMP WHERE JOB LIKE UPPER('".mysql_real_escape_string($search)."%')";
sqlConnect($mySQL);
}
break;
case 'nach Abteilungsnummer':
if($_POST['text'] == "")
{
echo 'Bitte geben Sie etwas ins Feld ein';
}else if (preg_match("#^[0-9]+$#", $_POST['text']) == false)
{
echo 'Ungültige Zeichen';
}else
{
$mySQL = "SELECT * FROM DEPT WHERE DEPTNO LIKE UPPER('".mysql_real_escape_string($search)."%')";
sqlConnect($mySQL);
}
break;
case 'nach Standort':
if($_POST['text'] == "")
{
echo 'Bitte geben Sie etwas ins Feld ein';
}else if (preg_match("#^[a-zA-Z]+$#", $_POST['text']) == false)
{
echo 'Ungültige Zeichen';
}else
{
$mySQL = "SELECT * FROM DEPT WHERE LOC LIKE UPPER('".mysql_real_escape_string($search)."%')";
sqlConnect($mySQL);
}
break;
case 'Anzahl der Mitarbeiter zu einem bestimmten Beruf':
if($_POST['text'] == "")
{
echo 'Bitte geben Sie etwas ins Feld ein';
}else if (preg_match("#^[a-zA-Z]+$#", $_POST['text']) == false)
{
echo 'Ungültige Zeichen';
}else
{
$mySQL = "SELECT JOB, COUNT(JOB) AS Anzahl FROM EMP WHERE JOB LIKE UPPER('".mysql_real_escape_string($search)."%') GROUP BY JOB";
sqlConnect($mySQL);
}
break;
case 'Welche Mitarbeiter sind auf welchem Standort vertreten':
if($_POST['text'] == "")
{
echo 'Bitte geben Sie etwas ins Feld ein';
}else if (preg_match("#^[a-zA-Z]+$#", $_POST['text']) == false)
{
echo 'Ungültige Zeichen';
}else
{
$mySQL = "SELECT d.LOC, e.EMPNO, e.ENAME, e.JOB FROM DEPT d, EMP e WHERE d.DEPTNO = e.DEPTNO AND d.LOC LIKE UPPER('".mysql_real_escape_string($search)."%') ";
sqlConnect($mySQL);
}
break;
case 'Welche Mitarbeiter sind in welcher Abteilung':
if($_POST['text'] == "")
{
echo 'Bitte geben Sie etwas ins Feld ein';
}else if (preg_match("#^[a-zA-Z]+$#", $_POST['text']) == false)
{
echo 'Ungültige Zeichen';
}else
{
$mySQL = "SELECT d.DNAME, e.EMPNO, e.ENAME, e.JOB FROM DEPT d, EMP e WHERE d.DEPTNO = e.DEPTNO AND d.DNAME LIKE UPPER('".mysql_real_escape_string($search)."%') ORDER BY JOB";
sqlConnect($mySQL);
}
break;
}
}
vielleicht habt ihr eine Idee wo genau mein Denkfehler ist
häng an dem Problem schon einigen Tagen und bin mit meinem Latein am Ende
sorry wenn der Code ein wenig unübersichtlich ist
aber ich bin noch ein ziemlicher Anfänger bei PHP
hab erst vor kurzem angefangen
Kommentar