Hilfestellung bei Datenbank-Ausgabe

kbit

Erfahrenes Mitglied
Hi, brauche mal einen kleinen Tip und zwar möchte ich die Buchstaben von a-z darstellen und wenn man auf a klickt soll aus der Datenbank alles mit a ausgeben werden und wenn ich auf b klicke alles mit b usw. Zur Zeit habe ich das so das ich über eine Auswahlliste den Buchstaben auswähle und dann über einen Button die Anfrage abschicke. Das funktioniert auch. Ich möchte das eher so haben das man auf den Buchstaben klickt und dann kommt darunter das Ergebnis. Hat da jemand eine Idee ?
 
Wenn ich das richtig verstanden habe, hast du zur zeit ein Form mit einem Post.

Du kannst einfach hingehen und setzt einen Link mit allen Postparametern.

ehemals:
HTML:
<form action="index.php" method="post" enctype="application/x-www-form-urlencoded" name="form1" id="form1">
  <select name="select">
  </select>
  <input type="submit" name="Submit" value="Submit" />
</form>

ersetzt das ganze einfach mit:

HTML:
<a href="index.php?clause=where feldname like 'a%'">a</a><br />
<a href="index.php?clause=where feldname like 'b%'">b</a><br />
<a href="index.php?clause=where feldname like 'c%'">c</a><br />
...

während der Laufzeit findest du in der Variable $clause dann das where statement welches du an deine Abfrage anhängst. Ggf. ist natürlich zu prüfen in wie fern dann auch andere Zugriffe auf die Datenbank möglich sind, und ob diese gewünscht sind.
Alternativ würde ich das über eine feste Parametrierung vornehmen die im Source dann entsprechend dem Parameter die Abfrage ausführt.

Viele Grüße
 
Zuletzt bearbeitet:
mit oder ohne seiten-reload ?

ohne:
PHP:
<?
$buchstaben = array("a","b","c");   //ergänzen ;)
$x = 0;
while($x <= sizeof($buchstaben)) {
echo "<a href='?letter=".$buchstaben[$x]."'>".$buchstaben[$x]."</a>";
$x++;
}
if(in_array($_GET['letter'],$buchstaben) {
$sql = "SELECT * FROM table WHERE letter LIKE '".mysql_escape_string($_GET['letter'])."'"; 
/* query + fetch */
echo $ergebnis // z.b.
}
 
Hi ich hab das gerade mal ausprobiert. Irgendwo habe ich noch einen Fehler da ich immer als Fehlermeldung bekomme:

Parse error: syntax error, unexpected '{' in D:\xampp\htdocs\suche5.php on line 13
Ich suche den Fehler jetzt schon eine weile aber anscheind habe ich Tomaten auf den Augen :confused: Zeile 13 ist übrigens nach dem $x++


PHP:
<?php

error_reporting(E_ALL);
require("open.inc.php");


$buchstaben = array("a","b","c");   
$x = 0;
while($x <= sizeof($buchstaben)){
echo "<a href='?letter=".$buchstaben[$x]."'>".$buchstaben[$x]."</a>";
$x++;
}
if(in_array($_POST['letter'],$buchstaben){
$sql = "SELECT S_Name,S_PLZ FROM Strassen WHERE letter LIKE '".mysql_escape_string($_POST['letter'])."'"; 
$result = mysql_query($sql) or die(mysql_error());
	
    if (mysql_num_rows($result)){
		while ($row=mysql_fetch_array($result)){
		echo $row['S_Name']."<br />";
		echo $row['S_PLZ']."<br />"."<br />";
					
		}
	}
	
}
?>
 
PHP:
if(in_array($_POST['letter'],$buchstaben){

Analysieren wir das mal:
PHP:
if(
  in_array(
    $_POST['letter'],$buchstaben
  )

Das wars. Was fehlt? Die schließende Klammer für die if()-Bedingung.
 
oh *g*

da fehlt ne ")" xD

sry
hab ich wohl in der schnelle übersehen

Ach ich hätte mal lieber bisschen besser die Augen auf machen sollen dann hätte ich das auch gesehn.

Hab dazu noch mal ne Allgemeine Frage zu dem Code von dir. Ist es denn so überhaupt möglich das wenn ich dann auf den Buchstaben klicke er mir so alle Namen die mit L beginnen ausgibt ? Ich denke ich müsste das doch so eher über die ID Schlüssel machen oder ?
 
PHP:
<?php
if(empty($_GET['letter']))
{
	for($i = 0; $i < 26; $i++)
	{
		print '<a href="skript.php?letter='.chr(97 + $i).'">'.chr(65 + $i).'</a><br>';
	}
} 
else
{
	$letter = substr($_GET['letter'], 0, 1);
	$sql_query = "SELECT `S_Name`, `S_PLZ` 
					FROM `Strassen`
					WHERE `letter` LIKE '".mysql_real_escape_string($letter)."%'";
	$sql = mysql_query($sql_query) or die(mysql_error());
	if(mysql_num_rows($sql) == 0)
	{
		print 'Keine Treffer';
	}
	else
	{
		while($row = mysql_fetch_array($sql)
		{
			echo $row['S_PLZ'] .' - '. $row['S_Name'];
		}
	}
}
?>

So sollte es gehen. Fehlt natürlich die Verbindung zur Datenbank und solche Sachen.
 
Ich hab das jetzt so gemacht funktioniert auch bis auf das er immer als
Notice sagt: Notice: Undefined offset: 3 in D:\xampp\htdocs\suche5.php on line 10
Notice: Undefined offset: 3 in D:\xampp\htdocs\suche5.php on line 10

PHP:
<?php

error_reporting(E_ALL);
require("open.inc.php");


$buchstaben = array("L","M","G");   
$x = 0;
while($x <= sizeof($buchstaben)){
echo "<a href='?S_Name=".$buchstaben[$x]."'>".$buchstaben[$x]."</a>";
$x++;
}
if(in_array($_GET['S_Name'],$buchstaben)){
$sql = "SELECT * FROM Strassen WHERE S_Name LIKE'".mysql_escape_string($_GET['S_Name'])."%'"; 
$result = mysql_query($sql) or die(mysql_error());
	
    if (mysql_num_rows($result)){
		while ($row=mysql_fetch_array($result)){
		echo $row['S_Name']."<br />";
		echo $row['S_PLZ']."<br />"."<br />";
					
		}
	}
	
}
?>
 
Zurück