Gå til innhold

Søk mot database - får ikke noe resultat


Anbefalte innlegg

Hei!

 

 

 

Prøver å gjøre et søk i noen databser jeg har, men får ikke noen resultater.

Er det noen som raskt kan se om det er noe galt i kodene?

 

 

 

Her gjøres søket:

 

<form name="search" method="post" action="<?=$PHP_SELF?>">
Seach for: <input type="text" name="find" /> in
<Select NAME="field">
<Option VALUE="deicao">Departure ICAO</option>
<Option VALUE="dename">Departure name</option>
<Option VALUE="aricao">Arrival ICAO</option>
</Select>
<input type="hidden" name="searching" value="yes" />
<input type="submit" name="search" value="Search" />
</form>

 

 

 

Og her er resten:

 

<?
//This is only displayed if they have submitted the form
if ($searching =="yes")
{
echo "<h2>Results</h2><p>";

//If they did not enter a search term we give them an error
if ($find == "")
{
echo "<p>You forgot to enter a search term";
exit;
}

// Otherwise we connect to our Database
mysql_connect("mysql.yourhost.com", "user", "password") or die(mysql_error());
mysql_select_db("database") or die(mysql_error());

// We preform a bit of filtering
$find = strtoupper($find);
$find = strip_tags($find);
$find = trim ($find);

//Now we search for our search term, in the field the user specified
$data = mysql_query("SELECT * FROM routes WHERE upper($field) LIKE'%$find%'");

//And we display the results
while($result = mysql_fetch_array( $data ))
{
echo $result['deicao'];
echo " ";
echo $result['dename'];
echo "<br>";
echo $result['aricao'];
echo "<br>";
echo "<br>";
}

//This counts the number or results - and if there wasn't any it gives them a little message explaining that
$anymatches=mysql_num_rows($data);
if ($anymatches == 0)
{
echo "Sorry, but we can not find an entry to match your query<br><br>";
}

//And we remind them what they searched for
echo "<b>Searched For:</b> " .$find;
}
?>

 

 

 

Noen som vet?

Lenke til kommentar
Videoannonse
Annonse

//Now we search for our search term, in the field the user specified
$data = mysql_query("SELECT * FROM routes WHERE upper($field) LIKE'%$find%'");

Ser ikke at du har definert $field noe sted? Har jeg forstått deg rett at du skal hente feltet fra drop down menyen blir det vel bare å skrive dette i begynnelsen av koden et sted:

$field = $_POST['field'];

 

Vær dog obs på at det kan være en sikkerhets risiko i scriptet ditt... ved at noen sender andre felter. Spørs litt åssen du har satt det opp.

Lenke til kommentar

Hei igjen!

 

 

Bare kom på at jeg kunne prøve meg med en annen ting jeg heller ikke får til.

 

Jeg skriver ut noen data fra database, og det funker helt greit på denne måten (del av en større tabell)

 

"<td width=50 cellpadding=2 cellspacing=2>" . "<font color=000000><a href=http://www.minwebside.com/login/index.php?page_id=" . $row['fltnum'] . ">" . $row['fltnum'] . "</a></font></td>"  .

 

Denne kodesnutten henter greit ut dataen i feltet fltnum, men jeg skulle gjerne ha linken til å fungere også? En eksempelverdi i fltnum er AL227. Hvis jeg da lager en php-side som heter AL227.php, så ønsker jeg at linken ovenfor leder dit.

 

Når jeg klikker linken, så dukker

http://www.minwebside.com/login/index.php?page_id=AL227

 

opp i URL-vinduet, men det vises ikke noe innhold.

 

Dette ble rotete forklart, men håper noen skjønner hva jeg mener.

Endret av tomarild
Lenke til kommentar

Hva med å skrive dette helt i toppen av index.php?

<?php
$page_id = $_GET['page_id'];
if (isset($page_id)) {
  header('Location: http://www.minwebside.com/login/'.$page_id.'.php');
}
  ?>

Her henter vi først ut page id fra urlen... hvis page_id ikke finnes så hopper vi over redirect, hvis den er satt så endrer vi side til

http://www.minwebside.com/login/'.$page_id.'.php

der $page_id blir byttet ut med verdien xxx: ?page_id=xxx

 

Forøvrig er vel denne koden mer riktig:

"<td width=50 cellpadding=2 cellspacing=2>" . "<font color=000000><a href='http://www.minwebside.com/login/index.php?page_id=" . $row['fltnum'] . "'>" . $row['fltnum'] . "</a></font></td>"

Endret av Warz
Lenke til kommentar
[/b]Forøvrig er vel denne koden mer riktig:
"<td width=50 cellpadding=2 cellspacing=2>" . "<font color=000000><a href='http://www.minwebside.com/login/index.php?page_id=" . $row['fltnum'] . "'>" . $row['fltnum'] . "</a></font></td>"

 

 

Takk for at du hjelper til Warz. Setter pris på det!

 

Fikk allikevel ikke den siste URLen til å fungere. Veldig rart, for helt korrekt URL vises i adressevinduet etter at jeg klikker på den.

Lenke til kommentar
Jeg var litt uklar der. Jeg mener at det går fint an å klikke på den. Browseren ledes til riktig URL, men det vises ikke noe innhold.

 

Altså.... jeg ledes til linken

 

http://www.minwebside.com/login/index.php?page_id=AL227

 

Men selv om det finnes en side som heter AL227, så skjer det ingenting.

 

Du har altså en side som heter AL227.php i login mappen din? og du bruker scriptet jeg ga deg øverst i index filen?

 

<?php
$page_id = $_GET['page_id'];
if (isset($page_id)) {
  header('Location: http://www.minwebside.com/login/'.$page_id.'.php');
}
?>

Lenke til kommentar

Ja, jeg har en fil som heter AL227.php.

Testet nå med scriptet du sendte, og da fungerer det.

 

Problemet er bare at alle mine filer i login-mappa blir included i et vindu i index-filen (slik at jeg får de samme rammene på siden hele tiden).

 

Scriptet jeg benytter til å inkludere PHP-sidene er dette

 

 

 

	<?php

if (empty($_GET['page_id'])) {
	require '100.php'; // default
} else {
	$page_id = $_GET['page_id'];
	if (strval($page_id) === strval(intval($page_id)) && file_exists('' . intval($page_id) . '.php')) {
		require '' . intval($page_id) . '.php';
	} else {
		require 'error.php'; // side med feilmelding
	}
}

?>

 

Det ligger midt i index-fila

Endret av tomarild
Lenke til kommentar

Hva med noe sånt?:

	<?php
// index siden:
if (empty($_GET['page_id'])) {
	require '100.php'; // default
} else {
	$page_id = $_GET['page_id'];
// AL227.php
		require '' . $page_id . '.php';
	} else {
		require 'error.php'; // side med feilmelding
	}
}

?>

Lenke til kommentar

God idé, men det blir ikke riktig i forhold til bruken av siden.

 

Det er en side for et virtuelt flyselskap, og i dette tilfellet skal jeg hente ut alle rutene fra databasen i en liste.

En av mange ruter er AL227, og når det rutenavnet dukker opp i listen, så skal man unne klikke på det, og få mer informasjon om ruten via php-siden som heter AL227.

 

Forstår du hva jeg mener? (utrolig vanskelig å forklare dette her) :)

Lenke til kommentar

Skjønner... jeg testa dette scriptet på serveren min og det funka fint:

 

	<?php

// index siden:
if (empty($_GET['page_id'])) {
	require '100.php'; // default
} else if (isset($_GET['page_id'])){
	$page_id = $_GET['page_id'];
// AL227.php
		require '' . $page_id . '.php';
	} else {
		require 'error.php'; // side med feilmelding
	}

?>

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...