php suche liefert falschen datensatz zurück

  • #1
R

reik

Aktives Mitglied
Themenersteller
Dabei seit
29.05.2005
Beiträge
42
Reaktionspunkte
0
morgen liste,

ich habe mich soweit vorgearbeitet das ich eine datensatzsuche machen kann in php. dazu habe ich eine suchseite erstellt und eine ergebnisseite.
so weit so gut ... aber ich bekomme immer nur ein und den selben datensatz angezeigt. egal welche id ich eintage nach der gesucht werden soll. die db-verbindung scheint also zu funktionieren und nur eben habe ich einen denkfehler bei der suche innerhalb der datenbank - vielleicht hat jemand von euch eine idee dazu was ich falsch mache. am besten ist wohl ich poste mal die seiten ...

die suchseite

Code:
<?php require_once('../../../Connections/test.php'); ?>
<?php
$colname_ErgCD = -1;
if (isset($_GET['ID'])) {
 $colname_ErgCD = (get_magic_quotes_gpc()) ? $_GET['ID'] : addslashes($_GET['ID']);
}
mysql_select_db($database_test, $test);
$query_ErgCD = sprintf(SELECT * FROM tblcms_cd WHERE ID = %s ORDER BY ID ASC, $colname_ErgCD);
$ErgCD = mysql_query($query_ErgCD, $test) or die(mysql_error());
$row_ErgCD = mysql_fetch_assoc($ErgCD);
$totalRows_ErgCD = mysql_num_rows($ErgCD);
?><!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN [url]http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>[/url]
<html xmlns=[url]http://www.w3.org/1999/xhtml>[/url]
<head>
<meta http-equiv=Content-Type content=text/html; charset=iso-8859-1 />
<title>Unbenanntes Dokument</title>
<style type=text/css>
<!--
#Layer1 {
	position:absolute;
	width:722px;
	height:115px;
	z-index:1;
	top: 17px;
}
-->
</style>
</head>

<body>
<table width=566 border=1>
 <tr>
  <td><form action=ergebnis.php method=get name=form1 target=_self id=form1>
   <label>
   <input name=ID type=text id=ID value=<?php echo $row_ErgCD['ID']; ?> />
   <input type=submit name=Submit value=Suchen />
   </label>
  </form></td>
 </tr>
</table>

</body>
</html>
<?php
mysql_free_result($ErgCD);
?>
und die ergebniss seite

Code:
<?php require_once('../../../Connections/test.php'); ?>
<?php
$maxRows_ErgCD = 1;
$pageNum_ErgCD = 0;
if (isset($_GET['pageNum_ErgCD'])) {
 $pageNum_ErgCD = $_GET['pageNum_ErgCD'];
}
$startRow_ErgCD = $pageNum_ErgCD * $maxRows_ErgCD;

mysql_select_db($database_test, $test);
$query_ErgCD = SELECT * FROM tblcms_cd;
$query_limit_ErgCD = sprintf(%s LIMIT %d, %d, $query_ErgCD, $startRow_ErgCD, $maxRows_ErgCD);
$ErgCD = mysql_query($query_limit_ErgCD, $test) or die(mysql_error());
$row_ErgCD = mysql_fetch_assoc($ErgCD);

if (isset($_GET['totalRows_ErgCD'])) {
 $totalRows_ErgCD = $_GET['totalRows_ErgCD'];
} else {
 $all_ErgCD = mysql_query($query_ErgCD);
 $totalRows_ErgCD = mysql_num_rows($all_ErgCD);
}
$totalPages_ErgCD = ceil($totalRows_ErgCD/$maxRows_ErgCD)-1;
?>
<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN [url]http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>[/url]
<html xmlns=[url]http://www.w3.org/1999/xhtml>[/url]
<head>
<meta http-equiv=Content-Type content=text/html; charset=iso-8859-1 />
<title>Unbenanntes Dokument</title>
<style type=text/css>
<!--
#Layer1 {
	position:absolute;
	width:502px;
	height:59px;
	z-index:1;
}
#Layer2 {
	position:absolute;
	width:536px;
	height:115px;
	z-index:1;
}
-->
</style>
</head>

<body>
<div id=Layer2>
 <table border=1 cellspacing=2>
  <tr>
   <td>ID</td>
   <td>Name</td>
   <td>Vorname</td>
   <td>Geburt</td>
   <td>REIN</td>
   <td>WEBSERVER</td>
   <td>Archiv</td>
  </tr>
  <?php do { ?>
   <tr>
    <td><?php echo $row_ErgCD['ID']; ?></td>
    <td><?php echo $row_ErgCD['Name']; ?></td>
    <td><?php echo $row_ErgCD['Vorname']; ?></td>
    <td><?php echo $row_ErgCD['Geburt']; ?></td>
    <td><?php echo $row_ErgCD['REIN']; ?></td>
    <td><?php echo $row_ErgCD['WEBSERVER']; ?></td>
    <td><?php echo $row_ErgCD['Archiv']; ?></td>
   </tr>
   <?php } while ($row_ErgCD = mysql_fetch_assoc($ErgCD)); ?>
 </table>
</div>
</body>
</html>
<?php
mysql_free_result($ErgCD);
?>

ich für meinen teil kann da nix falsches entdecken - aber ich bin ja auch kein programmierer (leider)... vielleicht noch soviel ich habe das ganze nach verschiedenen anleitungen gemacht mit einem grafischen tool, so das der code größtenteils automatisch generiert wurde.

meine vermutung ist das ich den parameter aus dem suchfeld nicht so übergebe wie gebraucht. es wird immer der erste datensatz angezeigt. wahrscheinlich brauche ich auch die php abfrage in der suchseite nicht wirklich - oder? [war schon spät als ich diese versionen speicherte ;) ] und wenn das so ist - wie übergebe ich eine variable der ergebnisseite damit danach gesucht werden kann???

hmm *nicht weiter weiss* hoffentlich habe ich mich halbwegs verständlich ausgedrückt ...

gruß
reik
 
  • #2
Könnte so gehen ;)

suche.php
Code:
<?php
mysql_connect(localhost,xxxx,xxxx);
mysql_select_db(test_db);

$query = (SELECT id, vorname, nachname FROM tbl_user ORDER by nachname ASC);
$resID = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_object($resID)) {
	$n = $row->nachname. .$row->vorname;
	$opt .=-><option value='. $row->id .'>'. $n .'</option>';
}
?>

<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN [url]http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>[/url]
<html xmlns=[url]http://www.w3.org/1999/xhtml>[/url]
<head>
<meta http-equiv=Content-Type content=text/html; charset=iso-8859-1 />
<title>Unbenanntes Dokument</title>
<style type=text/css>
<!--
#Layer1 {
position:absolute;
width:722px;
height:115px;
z-index:1;
top: 17px;
}
-->
</style>
</head>

<body>
<table width=566 border=1>
	<tr>
		<th>Auswahl der vorhandenen Einträge (Name, Vorname)</th>
	</tr>
 <tr>
  <td><form action=ergebnis.php method=POST name=form1 target=_self id=form1>
   <label>
			<select name=id style=width:400px>
				<option value=-1>Bitte wählen</option>
				<?php echo $opt; ?>
			</select>
   <input type=submit name=show value=Anzeigen />
   </label>
  </form></td>
 </tr>
</table>

<table width=566 border=1>
	<tr>
		<th>Suche nach Nachname</th>
	</tr>
 <tr>
  <td><form action=ergebnis.php method=POST name=form2 target=_self id=form2>
   <label>
   <input name=nachname type=text id=nachname value= />
   <input type=submit name=search value=Suchen />
   </label>
  </form></td>
 </tr>
</table>

</body>
</html>

ergebnis.php
Code:
<?php
mysql_connect(localhost,xxxx,xxxx);
mysql_select_db(test_db);

if($_POST[show] && $_POST[id] > 0) {
	$sql = SELECT * FROM tbl_user WHERE id='. $_POST[id] .';
}
elseif($_POST[search]){
	$sql = SELECT * FROM tbl_user WHERE nachname LIKE->%. $_POST[nachname] .%' ORDER by nachname ASC;
}
$resID = mysql_query($sql);
$count = @mysql_num_rows($resID);

?>
<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN [url]http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>[/url]
<html xmlns=[url]http://www.w3.org/1999/xhtml>[/url]
<head>
<meta http-equiv=Content-Type content=text/html; charset=iso-8859-1 />
<title>Unbenanntes Dokument</title>
<style type=text/css>
<!--
#Layer1 {
position:absolute;
width:502px;
height:59px;
z-index:1;
}
#Layer2 {
position:absolute;
width:536px;
height:115px;
z-index:1;
}
-->
</style>
</head>

<body>
<div id=Layer2>
<?php
if($count >= 1) {
?>
 <table border=1 cellspacing=2>
  <tr>
   <td>ID</td>
   <td>Name</td>
   <td>Vorname</td>
			<td>Strasse</td>
			<td>PLZ</td>
			<td>Ort</td>
  </tr>
  <?php while($row = mysql_fetch_object($resID)) { ?>
   <tr>
    <td><?php echo $row->id; ?></td>
    <td><?php	echo $row->nachname; ?></td>
    <td><?php echo $row->vorname; ?></td>
				<td><?php echo $row->strasse; ?></td>
				<td><?php echo $row->plz; ?></td>
				<td><?php echo $row->ort; ?></td>
   </tr>
   <?php } ?>
 </table>
<?php
}
else {
	echo Keine Treffer!;
}
?>

</div>
</body>
</html>
 
  • #3
hi PCDConny,

merci - ich werde das jetzt mal ausprobieren ob ich das so zum laufen bekommen. erstmal vielen dank für deine hilfe. ggf. würde ich mich nochmal melden wenn fragen noch sind.

gruß
reik
 
  • #4
Anpassen an deine Bedürfnisse musste es schon, is nur als Beispiel gedacht ;)
 
  • #5
hi PCDConny,

jaja das war schon klar ;)
ich habe ja schließlich nicht deine tabellen hier in meiner db ...

ich habe das ganze jetzt erstmal soweit am laufen das mir die suchseite angezeigt wird und ich bei den optionen auch die inhalte der seite gezeigt werden ... aber ich kriege bei der ergebniss seite kein treffer angezeigt

hmm - ich bin noch am grübeln woran das liegt - ich vermute mal ein falsches suchkriterium oder so ...

soweit erstmal danke.
gruß
reik
 
  • #6
hi PCDConny,

also ich weiss nicht was ich falsch mache!

ich wollte im ersten schritt erstmal die suchmaske soweit anpassen, das daten ausgegeben werden. im bereich der optionen hat das auch schon funktioniert. doch wenn ich auf die buttons anzeige bzw. suche klicke wird in der ergebniss.php immer kein treffer angegeben. was ja so nicht stimmt. mit einem wort die daten werden nicht an die ergebnis.php übergeben.

hmm vielleicht kennste das problem schon (??) @PCDConny und hast eine idee wo ich da falsch liege. hmm was würdest du brauchen um das beurteilen zu können?

gruß und danke
reik
 
  • #7
Schick mir mal deine Tabelle mit ein paar Testdatensätzen und die 2 Dateien per *.rar-Archiv als E-Mail.
 
  • #8
OK ent oder weder mml

$_POST[id] / $_POST[ID] ;)

mischen gilt nicht :1


Und das Feld nachname gibt es nur in meinem Beispiel, bei dir ist es Name

PS:
nen einfaches print_r($_REQUEST) hilft manchmal ungemein ;)
 
  • #9
arg ... warum bin ich nur so blind????

also nochmal vielen dank für deine hilfe @PCDConny - die suchfunktion funktioniert jetzt.

anpassungen sind jetzt nicht mehr wirklich schwer. (hoffe ich zumindestens)

gruß reik
 
Thema:

php suche liefert falschen datensatz zurück

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben