SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Der CSS-Problemlöser

Der CSS-Problemlöser zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > PHP Grundlagen
Hilfe Community Kalender Heutige Beiträge Suchen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 05.03.2006, 22:45:09
cebulba cebulba ist offline
Anfänger
 
Registriert seit: Mar 2006
Beiträge: 4
Simples Suchformular - steht auf dem Schlauch?!

Moin.
Ich brauch einen kleinen Hinweis. Ich komm einfach nicht auf die Lösung...

Habe ein einfaches Suchformular geschrieben, als Einstieg. Im Eingabeformular habe ich eine PULLDOWN Liste (die dynamisch aus einer DB) generiert wird.
Der ausgewählte Eintrag soll dann an die DB übergeben werden, bzw. an die Folgeseite und mir entsprechend die Einträge rausschmeissen.

Das klappt aber leider nicht. Ich bekomme immer die Fehlermeldung das der übergebene Parameter keine SQL Abfrage ist?

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /www/htdocs/w006891d/SucheGastgeberErg.php on line 65

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /www/htdocs/w006891d/SucheGastgeberErg.php on line 70

und hier der Code dazu:

SucheGastgeber.php
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<? include "DBConnect.inc.php" ?>
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Suchanfrage Gastgeber</title>
</head>

<body>

<form action="SucheGastgeberErg.php" method="GET">
<table border="0" width="429px">
<tr>
<td width="50%">Kategorie =</td>
<td width="50%"><select name="Kategorie">
	<option value="%"
	selected>- bitte auswählen - </option>
	<?
	
// Verbindung zur Datenbank aufbauen
Conn();
mysql_select_db($DB,$Conn);

$strSQL="SELECT DISTINCTROW Gastgeberverzeichnis.Kategorie FROM "."Gastgeberverzeichnis ORDER BY Kategorie";
$Erg=mysql_query($strSQL);
while ($Zeile=mysql_fetch_array($Erg))
{
	echo "<option value=\"$Zeile[0]\">$Zeile[0]</option>";
}
mysql_free_result($Erg);
DisConn();
?>
</select></td>
</tr>


<tr>
<td><input name="submit" type="submit"
title="Suchen" value="Suche starten">
</td>
<td>&nbsp;</td>
</tr>
</table>
</form>
</body>
</html>
und hier die Ausgabeseite: SucheGastgeberErg.php

Code:
<? include "DBConnect.inc.php" ?>
<html>

<head>
<meta http-equiv="Content-Language" content="de">

<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Datenbankabfrage Gastgeber</title>
</head>

<body>
<table border="0">
<?
	import_request_variables ("gb","frm_");
	if ($frm_Kategorie!="%")
	{
		//Kategorie ausgewählt
		$Bed1="(Kategorie=\"$frm_Kategorie\")";
	}
	else
	{
		$Bed1="";
	}



$strSQL="SELECT * FROM Gastgeberverzeichnis $Bed1";

//Verbindung zur Datenbank aufbauen
Conn();
mysql_select_db($DB,$Conn);

$RS=mysql_query($strSQL,$Conn);


//Daten ausgeben

while($zeile=mysql_fetch_array($RS,MYSQL_ASSOC))
	{
		echo "<tr><td>".getZelle($zeile["Name"],$strFormat)."</td></tr>";
	}
    
mysql_free_result($RS);
DisConn();
?>
</table>
</body>
</html>
Wenn ich nichts auswähle - schmeisst er mir alle raus (so soll's ja auch sein), aber wenn ich eine Kategorie auswähle, bekomme ich ne Fehlermeldung.

Kleiner Tipp für mich? Danke.
Mit Zitat antworten
  #2  
Alt 06.03.2006, 07:59:42
tsunamitsunami tsunamitsunami ist offline
Junior Member
 
Registriert seit: Dec 2005
Alter: 51
Beiträge: 236
AW: Simples Suchformular - steht auf dem Schlauch?!

Hy,
tausche in der sql-Abfrage mal den "." gegen ein ",".

Normalerweise heißt es select spalte1,spalte2,spalte3 from tabelle where
bedingung="wert" order by spalte;

Gruß
tsunamitsunami
Mit Zitat antworten
  #3  
Alt 06.03.2006, 13:05:11
chris17 chris17 ist offline
Senior Member
 
Registriert seit: Apr 2003
Alter: 57
Beiträge: 1.236
AW: Simples Suchformular - steht auf dem Schlauch?!

Hi,
Zitat:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /www/htdocs/w006891d/SucheGastgeberErg.php on line 65

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /www/htdocs/w006891d/SucheGastgeberErg.php on line 70
Welche Zeilen sind das? Soviel Zeilen hat die gepostete "SucheGastgeberErg.php" nicht.

Die "SucheGastgeber.php" funktioniert?

In der "SucheGastgeberErg.php" mal folgendes ausprobieren.
PHP-Code:
//...
if ($frm_Kategorie!="%") {
    
//Kategorie ausgewählt
    
$Bed1="(Kategorie=\"$frm_Kategorie\")";
} else {
    
$Bed1="";
}


$strSQL="SELECT * FROM Gastgeberverzeichnis $Bed1";

# TESTAUSGABE
# Hier siehst Du selbst, dass bei gewaehlter Kategorie was fehlt...
echo $strSQL


//Verbindung zur Datenbank aufbauen
Conn();
mysql_select_db($DB,$Conn);

# Mal schauen was MySQL dazu meint
#$RS=mysql_query($strSQL,$Conn);
$RS=mysql_query($strSQL,$Conn) or die(mysql_error());
//... 
Grüße
Mit Zitat antworten
  #4  
Alt 06.03.2006, 20:28:53
cebulba cebulba ist offline
Anfänger
 
Registriert seit: Mar 2006
Beiträge: 4
AW: Simples Suchformular - steht auf dem Schlauch?!

Zitat:
Zitat von chris17

Die "SucheGastgeber.php" funktioniert?
Ja, geht. In der URL wird folgendes übergeben:
../SucheGastgeberErg.php?Kategorie=Gasthof&submit=Suche+starten

Zitat:
[CODE]
$strSQL="SELECT * FROM Gastgeberverzeichnis $Bed1";

# TESTAUSGABE
# Hier siehst Du selbst, dass bei gewaehlter Kategorie was fehlt...
echo $strSQL;


//Verbindung zur Datenbank aufbauen
Conn();
mysql_select_db($DB,$Conn);

# Mal schauen was MySQL dazu meint
#$RS=mysql_query($strSQL,$Conn);
$RS=mysql_query($strSQL,$Conn) or die(mysql_error());
//...
[CODE]
so. Hab jetzt ne Änderung vorgenommen, in der SucheGastgeberErg.php

die neue SELECT Anweisung lautet:
PHP-Code:
$strSQL="SELECT * FROM Gastgeberverzeichnis WHERE $Bed1"
DAMIT geht es, wenn ich einen Wert auswähle (z.B. Kategorie="Gasthof").

Allerdings - wenn ich nichts auswähle - gehts nicht mehr, sondern meldet einen Fehler. Das geht nur ohne das "WHERE". Wie muß ich das jetzt noch ändern?
Mit Zitat antworten
  #5  
Alt 06.03.2006, 21:07:00
cebulba cebulba ist offline
Anfänger
 
Registriert seit: Mar 2006
Beiträge: 4
AW: Simples Suchformular - steht auf dem Schlauch?!

Moin nochmal.
Hab ich mich schon für die Tipps bedankt?
Also Danke ;-)

Ich hab jetzt noch einige Änderungen vorgenommen. Ich habe einen zweiten Parameter in SucheGastgeber.php eingefügt, damit ZWEI Kriterien ausgewählt werden.
Diese werden auch wunderbar übergeben und die Ausgabe funzt auch.

Kleines Problem: Es geht NICHT, wenn ich den ersten anwähle, den zweiten aber nicht.

Also nochmal:

beide Felder nichts ausgewählt = es werden alle angezeigt.
beide Felder etwas ausgewählt = es werden alle gemäß der Auswahl angezeigt
Erstes Feld nicht ausgewählt, zweites augewählt = es werden alle gemäß der Auswahl angezeigt
Erstes Feld ausgewählt, zweites NICHTS ausgewählt = es werden ALLE angezeigt (und hier ist der Fehler, denn mir sollten nur die angezeigt werden, gemäß Auswahl).

Und hier der Code:

SucheGastgeber.php
PHP-Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<? include "DBConnect.inc.php" ?>
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Suchanfrage Gastgeber</title>
</head>

<body>

<form action="SucheGastgeberErg.php" method="GET">
<table border="0" width="429px">
<tr>
<td width="50%">Kategorie =</td>
<td width="50%"><select name="Kategorie">
    <option value="%"
    selected>- bitte auswählen - </option>
    <?
    
// Verbindung zur Datenbank aufbauen
Conn();
mysql_select_db($DB,$Conn);

$strSQL="SELECT DISTINCTROW Gastgeberverzeichnis.Kategorie FROM "."Gastgeberverzeichnis ORDER BY Kategorie";
$Erg=mysql_query($strSQL);
while ($Zeile=mysql_fetch_array($Erg))
{
    echo "<option value=\"$Zeile[0]\">$Zeile[0]</option>";
}
mysql_free_result($Erg);
DisConn();
?>
</select></td>
</tr>
</tr>
<tr>
<td>&nbsp;</td>
<td>UND</td>
</tr>
<tr>
<td width="50%">Urlaubsregion =</td>
<td width="50%"><select name="Region">
<option value="%" selected>- bitte auswählen - </option>
<?
//Verbindung zur Datenbank aufbauen
Conn();
mysql_select_db($DB,$Conn);

$str2SQL="SELECT DISTINCTROW Gastgeberverzeichnis.Region FROM "."Gastgeberverzeichnis ORDER BY Region";
$Erg2=mysql_query($str2SQL);
while ($Zeile2=mysql_fetch_array($Erg2))
{
echo "<option value=\"$Zeile2[0]\">$Zeile2[0]</option>";
}
mysql_free_result($Erg2);
DisConn();
?>
</select>
</td>
</tr>

<tr>
<td><input name="submit" type="submit"
title="Suchen" value="Suche starten">
</td>
<td>&nbsp;</td>
</tr>
</table>
</form>
</body>
</html>
und hier die neue SucheGastgeberErg.php

PHP-Code:
<? include "DBConnect.inc.php" ?>
<html>

<head>
<meta http-equiv="Content-Language" content="de">

<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Datenbankabfrage Gastgeber</title>
</head>

<body>
<table border="0">
<?
    import_request_variables ("gb","frm_");
    if ($frm_Kategorie!="%")
    {
        //Kategorie ausgewählt
        $Bed1="Kategorie=\"$frm_Kategorie\"";
    }
    else
    {
        $Bed1="";
    }


    if ($frm_Region!="%")
    {
        //Region ausgewählt
        $Bed2="(Region=\"$frm_Region\")";
    }
    else
    {
        $Bed2="";
    }

    if (($Bed1!="") && ($Bed2!=""))
    {
        $Bed=" WHERE ($Bed1 AND $Bed2)";
    }
    elseif ($Bed2!="")
    {
        $Bed="WHERE $Bed2";
    }
    elseif (($Bed2=="") && ($Bed1==""))
    {
        $Bed="";
    }
    
$strSQL="SELECT * FROM Gastgeberverzeichnis $Bed";

# TESTAUSGABE 
# Hier siehst Du selbst, dass bei gewaehlter Kategorie was fehlt... 
echo $strSQL;  


//Verbindung zur Datenbank aufbauen
Conn();
mysql_select_db($DB,$Conn);

# Mal schauen was MySQL dazu meint 
#$RS=mysql_query($strSQL,$Conn); 
$RS=mysql_query($strSQL,$Conn) or die(mysql_error()); 



//Daten ausgeben

while($zeile=mysql_fetch_array($RS,MYSQL_ASSOC))
    {
        echo "<tr><td>".getZelle($zeile["Name"],$strFormat)."</td></tr>";
    }
    
mysql_free_result($RS);
DisConn();
?>
</table>
</body>
</html>
Wie muß ich die Bedingungen ändern, damit mir auch bei der Kombination Bed1 ausgewählt, Bed2 "nichts" - etwas angezeigt wird. Hier muß irgend eine if Anweisung falsch sein...
Mit Zitat antworten
  #6  
Alt 07.03.2006, 15:39:45
chris17 chris17 ist offline
Senior Member
 
Registriert seit: Apr 2003
Alter: 57
Beiträge: 1.236
AW: Simples Suchformular - steht auf dem Schlauch?!

Hi,

wenn keine Kategorie oder Region gewählt wird, bekommen sie ja den Wert "%" zugewiesen. -> <option value="%" selected>

"%" ist im Zusammenhang mit LIKE von Bedeutung -> http://dev.mysql.com/doc/refman/4.0/...functions.html

Man könnte es dann ganz einfach so lösen, ganz ohne die vielen "ifs". Ich gehe davon aus, daß beide
Bedingungen zutreffen müssen. -> AND
PHP-Code:
//...
import_request_variables ("gp","frm_"); //  "gp" nicht "gb".
$strSQL "SELECT
                   *
               FROM
                   Gastgeberverzeichnis
               WHERE
                   Kategorie LIKE '$frm_Kategorie'
               AND
                   Region LIKE '$frm_Region'"
;
//... 
Kannst es ja mal testen.

Grüße

P.S.: Es reicht aus, wenn Du am Anfang des Skriptes einmal die Verbindung zur DB aufbaust und ganz am Ende schliesst.
Mit Zitat antworten
  #7  
Alt 08.03.2006, 00:33:52
cebulba cebulba ist offline
Anfänger
 
Registriert seit: Mar 2006
Beiträge: 4
AW: Simples Suchformular - steht auf dem Schlauch?!

Hallo Chris17,

danke für die Lösung. Hab das ganze Script aus nem Buch (zu nem Büchershop)...

Bei mir soll man aber eben nicht unbedingt beides auswählen müssen.
Es geht ja auch,wenn ich nur die zweite Kategorie anwähle - aber ebend nicht, wenn ich nur die erste anwähle.
Wahrscheinlich ist da irgendwas bei den "if"s verkehrt...aber was?

muss da noch ein
PHP-Code:
elseif ($Bed1!=""
    { 
        
$Bed="WHERE $Bed1"
hin?
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
mit suchformular von bis suchen. self_user PHP für Fortgeschrittene und Experten 16 08.02.2006 21:51:51
Wie programmiere ich mein eigenes Suchformular? Zonk PHP Entwicklung und Softwaredesign 9 10.02.2004 12:36:58
simples problem :) EyeDacor MySQLi/PDO/(MySQL) 3 25.12.2003 20:05:00
simples preg_replace()-Problem c4 PHP für Fortgeschrittene und Experten 6 11.02.2003 18:51:43


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:16:22 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt