php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 17.08.2005, 16:14  
Gast
 
Beiträge: n/a
Standard <select> liefert keinen wert zurück

Erstmal ein freundliches Hallo in die Runde

Ich habe ein Problem und hoffe, dass ihr mir weiterhelfen könnt.
Ich habe ein php-Script, in dem eine Datenbank abgefragt wird.
Als "Frontend" sozusagen ist alles in php, die html-tags verpacke ich in Strings, die ich dann ausgebe. So habe ich mir also eine Dropdownliste mit <select> gebastelt und fülle diese dynamisch mit best. Werten aus der DB. Diese sollen ein Auswahlkriterium für die folgende Textsuche darstellen. Mein Problem ist nur, dass diese Dropdownliste mir nicht zurückgibt, was ausgewählt wurde. Bei der Texteingabe funktioniert das prima. Was mache ich da falsch?

Hier mal der Code für das Select.
Code:
echo "<select name=\"Kategorien\">";
#liste mit inhalten füllen, i ist der zähler
$i=0;
#erzeugt ersten eintrag als dummy
echo "<option value=\"kategorie\">---bitte ausw&auml;hlen---";
while ($i < $num)
{
	#holen der werte aus dem ergebnis der db-anfrage $res
	$title = mysql_result($res, $i, "cur_title");
	#liste wird mit diesen einträgen gefüllt, als rückgabewert wird $kategorie benutzt
	echo "<option value=\"kategorie\">".$title;
	$i++;
}
echo "</select>";
Normalerweise müsste ich doch dann im eigentlichen php mit $kategorie aus diesen wert zugreifen können, oder?

Grüße Kevin
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 17.08.2005, 16:23  
Gast
 
Beiträge: n/a
Standard

Wie überprüfst du den Wert des Select-Feldes. Der Quellcode dazu wäre nicht schlecht.

Gruß
phpfan
 
Alt 17.08.2005, 16:29  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard Re: <select> liefert keinen wert zurück

Zitat:
Zitat von Kev4020
Code:
echo "<select name=\"Kategorien\">";
Normalerweise müsste ich doch dann im eigentlichen php mit $kategorie aus diesen wert zugreifen können, oder?
Nö.
Erstens dürfte das Feld wenn überhaupt mit $Kategorien ansprechbar sein und zweitens solltest Du mal hier im Forum nach register_globals suchen.
Das steht evtl. auf off und das ist auch gut so.
Dann kannst Du mit $_GET['Kategorien'] bzw. $_POST['Kategorien'] drauf zugreifen.
__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard ist offline  
Alt 17.08.2005, 16:29  
Gast
 
Beiträge: n/a
Standard

Hallo phpfan,

Öhm, dass ist alles, was ich mit dem Ding anstelle.
Ich dachte, dass er kategorie zurückgibt und dadrin dann der String steht, der ausgewählt wird, also der ausgewählte $title.

Hab ich da was vergessen?

Sorry, bin php&html-n00b.

Grüße Kevin
 
Alt 17.08.2005, 16:34  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

In dem Code kommt kein einziges Mal $kategorie vor. Außer in einem Kommentar. Du gibst nur oft den Text "kategorie" aus.
Wäre zwar ohnehin falsch, aber Du willst doch irgendwie drauf zugreifen, oder?
Wo machst Du das?
__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard ist offline  
Alt 17.08.2005, 16:38  
Gast
 
Beiträge: n/a
Standard

Hallo Gerhard,

Das war ja nur ein Ausschnitt.
Der gesamte Code sieht so aus:

PHP-Code:
<html>
<head><title>Suche</title>
</head>
<body>
<?php
#####################################################################################################
    #Die Variable $kategorie; wird später einmal die Auswahl der Kategorie aufnehmen,
    #Die Variable $suchstring; wird später einmal den Text aus dem Suche-Feld holen
#####################################################################################################

#eröffnen einer db-sitzung, bd-abfrage zu den hauptkategorien
$db=mysql_connect('localhost''root''');
#in $res wird das ergebnis gespeichert
$res mysql_db_query("dewiki","select cur_title from cur where cur_namespace=14 and cur_text not like '%Kategorie:%'");
#anzahl der datensätze, die mit der anfrage gefunden wurden
$num=mysql_num_rows($res);


#aufbau der eingabe und konkatenieren als ein string
echo "
Bitte w&auml;hlen Sie eine Kategorie:  "
;
$output="<form action = \"$PHP_SELF\" method = \"post\">Nach was wollen Sie suchen? "." "."<input name = \"suchstring\">"." "."<input type = \"submit\"value=\"Ab die Post!\"><input type = \"reset\"value=\"Kommando zur&uuml;ck!\"></form>";
    
#eröffnen der liste
echo "<select name=\"Kategorien\">"#####hier ein onchange ereignis rein?

#liste mit inhalten füllen, i ist der zähler
$i=0;
#erzeugt ersten eintrag als dummy
echo "<option value=\"kategorie\">---bitte ausw&auml;hlen---";
while (
$i $num)
{
    
#holen der werte aus dem ergebnis der db-anfrage $res
    
$title mysql_result($res$i"cur_title");
    
#liste wird mit diesen einträgen gefüllt, als rückgabewert wird $kategorie benutzt
    
echo "<option value=\"kategorie\">".$title;
    
$i++;
}
echo 
"</select>";
#ausgabe der als string zusammengefassten html-anweisung für die eingabemaske
echo $output."



"
;
#ausgabe der ausgewählten kategorie
echo "



<hr>



"
;
####################################################################################
#$kategorie='OS';    #da keine rückgabe von liste ->setzen der standardkategorie####
####################################################################################


if ($kategorie=='')#($kategorie=='---bitte ausw&auml;hlen---') #muss so gesetzt werden, wenn die liste mal was zurückgibt
{
    echo 
"<font color=\"red\">Es wurde keine Kategorie gew&auml;hlt! Es wurde in allen Kategorien gesucht!</font>

<hr>

"
;
}
else
{
    echo 
"Es wurde in der Kategorie: <font color=\"blue\">\"".$kategorie."\" "."</font>nach"." "."<font color=\"red\"> \"".$suchstring."\" "."</font>gesucht. Die Hauptseite wird nicht mit durchsucht!

<hr>

"
;  #testausgabe, was als kategorie, suchstring und dokumentname ankommt
}    
#$ln ist die länge des eingegebenen strings
$ln=strlen($suchstring);
if (
$ln<4)
{
    echo 
"

Ihr Suchbegriff<font color=\"red\">"
." "."\"".$suchstring."\"</font>"." "."ist nur ".$ln." "."Zeichen lang!
Bitte geben Sie mindestens 4 Zeichen an!

"
;
}
else
{
    
#Datenbank die zweite
    #hier kommt die eigentliche suchabfage an die db
    
    
$str_kategorie="%Kategorie:".$kategorie."%";
    
$suchen=mysql_db_query("dewiki","select cur_title from cur where cur_namespace=0 and cur_title like '%$suchstring%' or cur_text like '%$suchstring%' and cur_text like '$str_kategorie' and cur_title not like 'Hauptseite'");
    
#echo $str_kategorie;
    
$num2=mysql_num_rows($suchen);
    
#man sollte es schon noch überblicken können
    
if ($num2<=50 and $num2>0)
    {
        
#j ist ein zähler
        
$j=0;
        if (
$num2==1)
        {
            echo 
"

Es wurde "
.$num2." "."Treffer gefunden!<hr>

<table border align=\"center\"><td>[list=1]"
;
        }
        else
        {
        echo 
"

Es wurden "
.$num2." "."Treffer gefunden!<hr>

<table border align=\"center\"><td>[list=1]"
;
        }
        while (
$j $num2)
        {
            
#holen der werte aus dem ergebnis der db-anfrage $suchen
            
$gefunden mysql_result($suchen$j"cur_title");
            
$pfad="http://10.0.27.213/dewiki/index.php/".$gefunden;
            
$link="<a href=\"$pfad\">$gefunden</a>";            
            echo 
"[*]".$link."";            
            
$j++;
        }
        echo 
"[/list]</td></table>";
    }
    elseif (
$num2==0)
    {
        echo 
"<font color=\"red\">Es wurde nichts gefunden!</font>

"
;
    }
    
#zuviel des guten ist auch nicht immer von vorteil
    
elseif ($num2>50)
    {
        echo 
"Es wurden ".$num2." "."Ergebnisse gefunden!
Bitte schr&auml;nken Sie die Suche weiter ein!"
;
    }    
}
mysql_close($db);
?>
</body>
</html>
 
Alt 17.08.2005, 16:49  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

Also...
Entweder
Zitat:
Zitat von Kev4020
Hallo phpfan,

Öhm, dass ist alles, was ich mit dem Ding anstelle.
Ich dachte, dass er kategorie zurückgibt und dadrin dann der String steht, der ausgewählt wird, also der ausgewählte $title.
oder
Zitat:
Zitat von Kev4020
Das war ja nur ein Ausschnitt.
Der gesamte Code sieht so aus:
Beides geht nicht.

Hat jetzt eigentlich mal was geklingelt bezüglich $kategorie und $Kategorien und $_POST['Kategorien']?

Du baust da eine Auswahlliste, mit dem Namen Kategorien.
Unabhängig vom ausgewählten Eintrag wird der Wert "kategorie" übertragen.
Also auch wenn Du an den Inhalt rankommst, ist er immer gleich.
Das solltest Du mal korrigieren.
Bei value="kategorie" sollte immer was anderes rein.
__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard ist offline  
Alt 17.08.2005, 16:59  
Gast
 
Beiträge: n/a
Standard

Hallo Gerhard,

In deinem ersten Zitat meinte ich ja, dass das einzige ist, was ich mit dem Ding anstelle (also mit der Liste an sich) dort drin passiert. Weiter mach ich ja auch nichts damit.
Aber das ist ja auch egal.
Also so richtig ist der groschen noch nicht gefallen, aber es lichtet sich langsam.
Also ich muss das gesamte Ding erstmal mit $Kategorien aufrufen. Das heißt weiter, dort wo "kategorie" steht, was ich dachte, was die Variable wird, muss also z.B. $title hin, denn das ist ja das, was ich haben will: den String, den ich in der Liste auswähle. Das einzige, was ich noch nicht verstanden habe ist $_POST['Kategorien']. Mit $_GET['...'] könnte ich mir die Anfrage aus der URL holen, was ich aber nicht will, weil es später, wo es eingebunden werden soll dann nicht mehr funktionieren würde.
OK, ich werd das erstmalmal soweit ändern. Ich hoffe du kannst mit mit dem $_POST['Kategorien'] noch einen heißen Tipp geben.

Grüße Kevin
 
Alt 17.08.2005, 17:10  
Gast
 
Beiträge: n/a
Standard

Hallo, ich nochmal.

Soweit funktionierts, aber das Dumme ist jetzt, dass ich immer den letzten Wert von $title rauskrieg - logisch, der rennt ja die Schleife bis zum Ende und dort steht nunmal der letzte Wert.
Aber wie kann ich die Liste dazu bewegen, mir das zurückzugeben, was ich ausgewählt habe?

Mit dem $_POST['Kategorien'] hab ich folgendes probiert.
Ich habe also anstatt kategorien $title gesetzt. und dann außerhalb der Schleife:
$kategorie=$_POST['Kategorien'];
aber da gehts auch nicht

Irgendwas mach ich falsch...oder ich habs immer noch nicht begriffen *kopfvordiewandhau - doller*

Grüße Kevin
 
Alt 17.08.2005, 17:11  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

Zitat:
Zitat von Kev4020
Also ich muss das gesamte Ding erstmal mit $Kategorien aufrufen. Das heißt weiter, dort wo "kategorie" steht, was ich dachte, was die Variable wird, muss also z.B. $title hin, denn das ist ja das, was ich haben will: den String, den ich in der Liste auswähle. Das einzige, was ich noch nicht verstanden habe ist $_POST['Kategorien']. Mit $_GET['...'] könnte ich mir die Anfrage aus der URL holen, was ich aber nicht will, weil es später, wo es eingebunden werden soll dann nicht mehr funktionieren würde.
OK, ich werd das erstmalmal soweit ändern. Ich hoffe du kannst mit mit dem $_POST['Kategorien'] noch einen heißen Tipp geben.

Grüße Kevin
Naja, ob sich da schon was lichtet....
Was meinst Du mit "erstmal mit $Kategorien aufrufen"?

Du solltest lieber mal in der PHP-Doku nach Parameter-Übergabe suchen. Da steht eigentlich alles zu Feldnamen und $_GET und $_POST drin.

Da das Formular mit method="post" arbeitet, kannst Du $_GET ohnehin nicht verwenden.
__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

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

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Fester Wert bei Registrierung festlegen themr Datenbanken 1 07.03.2008 14:41
nach grösstem (unbekannten) Wert suchen lindner Datenbanken 2 20.08.2006 22:13
Wie diesen Wert in eine DB einfügen? Mike² Datenbanken 5 29.03.2006 23:57
array verarbeitung (schlag auf den hinterkopf) PHP Tipps 2007 9 16.11.2005 11:37
Vergleich von einem Wert, mit Werten aus einer Tabelle PHP Tipps 2005 14 01.11.2005 03:04
minus wert, plus wert in variable nutzen PHP Tipps 2005-2 5 22.10.2005 19:15
In Dropdownfeld (<select>) ausgewählten Wert vorgeben? nicobischof HTML, Usability und Barrierefreiheit 3 19.10.2005 17:11
<select> dynamisch vorselektieren PHP-Fortgeschrittene 6 11.08.2005 20:39
[Erledigt] Wert von Reihe 1 mit Wert von Reihe 2 tauschen Datenbanken 5 20.06.2005 17:21
Problem mit anzeige aus DB, erst nach refresh aktueller wert PHP Tipps 2005 7 27.04.2005 19:42
kleinsten und größten wert ermitteln niffi PHP Tipps 2005 14 26.04.2005 12:42
&amp;lt;select&amp;gt; Wert setzen HTML, Usability und Barrierefreiheit 12 25.03.2005 18:06
[Erledigt] is_dir liefert falschen Wert PHP-Fortgeschrittene 4 19.03.2005 12:27
Wert automatisch erhöhen PHP Tipps 2005 5 13.02.2005 16:25
[Erledigt] Problem: per klick auf Button Wert erhöhen/verringern HTML, Usability und Barrierefreiheit 7 07.10.2004 08:31

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
welchen wert liefert select html

Alle Zeitangaben in WEZ +2. Es ist jetzt 06:24 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.