PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Suchmaske Problem


piratus
20.10.2009, 16:38:23
Ich habe folgendes Problem. Ich will eine Suchmaske erstellen die bei Eingabe gewisse Sachen ausgibt.

Hier erstmal die Anlagedatei für die Datenbank

<?php
$server = "localhost" ;
$user="root";
$pass="";
$datenbank="ansprechpartner";
$tabelle="ansprechpartner";
$datenbank_handle=mysql_connect($server, $user, $pass);

$sent = $_POST['sent'];

if ($datenbank_handle)
{
echo "Die Verbindung zum Datenbankserver wurde hergestellt!","<br>";
$db=mysql_select_db($datenbank);
if ($db)
{
$tsql = "CREATE TABLE ".$tabelle."
(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
firma VARCHAR(30) NOT NULL,
bereich VARCHAR(35) NOT NULL,
apvorname VARCHAR(35) NOT NULL,
apnachname VARCHAR(35) NOT NULL,
telefon VARCHAR(35) NOT NULL,
fax VARCHAR(35) NOT NULL,
mobil VARCHAR(35) NOT NULL,
mail VARCHAR(35) NOT NULL


)";
$tresult = mysql_query($tsql);
echo $tresult.mysql_errno() . ": " . mysql_error(). "\n";
if ($tresult) echo "Datenfelder wurden angelegt"."<br>";
} else echo "Die Datenbanktabelle muss erst angelegt werden.";
}
else
{
echo "Bitte kontrollieren Sie die Datenbankangaben
und die Datenbankverbindung!";
}
?>
<tr>

<td bgcolor="#FF9933">
<form action ="<?php echo $_SERVER['PHP_SELF']; ?>" method = "post">
<input type="hidden" name="sent" value="2" >
<input type ="submit" value="Zurück zum Menü">
</form>
</td>
</tr>
<?php
if ($sent=="2")
{
?>
<meta http-equiv="Refresh" content="0;URL=ap_menu.php">
<?php
}

Jetzt das Programm selber

<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
<title>Suche</title>
</head>
<body>
<?php

$tabelle="ansprechpartner";

$sent=$_POST["sent"];


$firma=$_POST["firma"];
$bereich=$_POST["bereich"];
$apvorname=$_POST["apvorname"];
$apnachname=$_POST["apnachname"];
$telefon=$_POST["telefon"];
$fax=$_POST["fax"];
$mobil=$_POST["mobil"];
$mail=$_POST["mail"];

$xfirma=$_POST["xfirma"];



include ("ap_db.inc.php");
if ($sent=="")
{
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<table>
<tr>
<td>Geben sie die Firma!</td>
<td><input type="text" name="xfirma" size="20" /></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="Absenden" >
<input type="reset" >
<input type="hidden" name="sent" value="1" >
</td>
</tr>
</table>
</form>
</body>
</html>
<?php
}

if ($sent=="1")
{

$datenbank_handle=db_verbindung();
$abfrage="SELECT * FROM ".$tabelle." WHERE firma LIKE '%$xfirma%'ORDER BY firma ";
$ergebnis=mysql_query($abfrage);

while ($row = mysql_fetch_array($ergebnis) )
{

?>

<br>
<table border="1">

<table border="1">
<tr>
<td colspan="4" width="500"><b> <? echo $row["firma"].""; ?> </b></td>
</tr>
</table>



<table border="1">

<tr>
<td colspan="4"> <? echo $row["bereich"]. " - ".$row["apvorname"]. " ".$row["apnachname"].""; ?> </td>
</tr>



<tr>
<td width="250"> Tel: <br> <? echo $row["telefon"].""; ?> </td>
<td width="250"> Fax: <br> <? echo $row["fax"]. ""; ?> </td>
<td width="250"> Mobil: <br> <? echo $row["mobil"]. ""; ?> </td>
<td width="250"> Mail: <br> <? echo $row["mail"]. ""; ?> </td>
</tr>





</table>
</table>


</table>
<?
}

}

?>
<br>
<tr>

<td bgcolor="#FF9933">
<form action ="<?php echo $_SERVER['PHP_SELF']; ?>" method = "post">
<input type="hidden" name="sent" value="2" >
<input type ="submit" value="Zurück zum Menü">
</form>
</td>
</tr>
<?php

if ($sent=="2")
{
?>
<meta http-equiv="Refresh" content="0;URL=ap_menu.php">
<?php
}

Nun soll das Programm die Firma nicht für jede Person anzeigen sonder nur 1x dastehen und darunter sollen die zugehörigen Personen aufgelistet sein.
Ich weiß echt nicht weiter.

langwebdesign
20.10.2009, 20:38:31
Hi,

du willst ja nur die Personen der ausgewählten Firma ausgeben wenn ich das richtig sehe. Dann brauchst du doch nur den Firmennamen ausgeben der dir mit POST übergeben wird und bei der Ausgabe des Datenbank Ergebnisses lässt du den Firmennamen einfach weg.

<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
<title>Suche</title>
</head>
<body>
<?php

$tabelle="ansprechpartner";

$sent=$_POST["sent"];

//warum hast du hier ne firma
$firma=$_POST["firma"];

$bereich=$_POST["bereich"];
$apvorname=$_POST["apvorname"];
$apnachname=$_POST["apnachname"];
$telefon=$_POST["telefon"];
$fax=$_POST["fax"];
$mobil=$_POST["mobil"];
$mail=$_POST["mail"];

//und hier ne xfirma?
$xfirma=$_POST["xfirma"];



include ("ap_db.inc.php");
if ($sent=="")
{
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<table>
<tr>
<td>Geben sie die Firma!</td>
<td><input type="text" name="xfirma" size="20" /></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="Absenden" >
<input type="reset" >
<input type="hidden" name="sent" value="1" >
</td>
</tr>
</table>
</form>
<?php
}

if ($sent=="1")
{

$datenbank_handle=db_verbindung();
$abfrage="SELECT * FROM ".$tabelle." WHERE firma LIKE '%$xfirma%'ORDER BY firma ";
$ergebnis=mysql_query($abfrage);

echo '<table border="1">
<tr>
<td colspan="4" width="500"><b> '.$xfirma.' </b></td>
</tr>
</table>';


while ($row = mysql_fetch_array($ergebnis) )
{

?>

<br>
<table border="1">


<table border="1">

<tr>
<td colspan="4"> <? echo $row["bereich"]. " - ".$row["apvorname"]. " ".$row["apnachname"].""; ?> </td>
</tr>



<tr>
<td width="250"> Tel: <br> <? echo $row["telefon"].""; ?> </td>
<td width="250"> Fax: <br> <? echo $row["fax"]. ""; ?> </td>
<td width="250"> Mobil: <br> <? echo $row["mobil"]. ""; ?> </td>
<td width="250"> Mail: <br> <? echo $row["mail"]. ""; ?> </td>
</tr>





</table>
</table>


</table>
<?
}

}

?>
<br>
<tr>

<td bgcolor="#FF9933">
<form action ="<?php echo $_SERVER['PHP_SELF']; ?>" method = "post">
<input type="hidden" name="sent" value="2" >
<input type ="submit" value="Zurück zum Menü">
</form>
</td>
</tr>
<?php

if ($sent=="2")
{
?>
<meta http-equiv="Refresh" content="0;URL=ap_menu.php">
<?php
}

?>
</body>
</html>


Du hast da ein paar verschachtelte Tabellen, da hab ich jetzt keine Rücksicht drauf genommen, aber das solltest du evtl. auch überarbeiten?

Was wohl dein nächstes Problem sein wird ist das wenn jemand den Firmennamen nicht genau weiß dann wird er nichts finden, außerdem bin ich als Anwender grundsätzlich zu faul zum Tippen *g* deshalb mein Vorschlag, mach kein Eingabefeld sondern eine Auswahlliste in der man die Firma nur noch anklicken muss.


$sql = "SELECT DISTINCT(firma) FROM ansprechpartner";
//hier den query noch ausführen

echo '<select name="xfirma">';

while ($row = mysql_fetch_array($ergebnis) ){
echo '<option>'.$row["firma"].'</option>';
}

echo '</select>';

mfg stephan