php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 09.05.2005, 18:21  
Gast
 
Beiträge: n/a
Standard Selectfeld mit Daten aus der Datenbank vorbelegen!

hoi,

zunächst einmal, nein, es geht hier nicht darum,das Selectfeld mit Daten aus der DB zu füllen.
Das Problem ist vielmehr, dem Selectfeld irgendwie beizubringen, den Wert aus der DB beim Aufrufen anzuzeigen.

Angenommen, ein User hat in seinen Einstellungen beim Selectfeld "Kategorie" "Fische" angegeben. "Fische" hat in der DB den Wert 4 verpasst bekommen. Geht der User nun wieder auf seine Einstellungen, wird im Selectfeld "Kategorie" aber nur der erste Wert des Selectbox angezeigt.

Klickt der User nun auf Absenden, so hat er irrtümlich natürlich den ersten Wert des Selectfeldes ausgewählt und nicht seinen alten Wert beibehalten.

Wie kann man das Selectfeld etwas intelligenter gestalten?
Das Forensystem,auf dem ich diese Problemstellung gerade bearbeite ist phpBB.

Folgenden Code habe ich probiert:

Code:
// 
// Pick a cat, any cat ... 
// 
function cat_select($default, $select_name = "book_cat") 
{ 
   global $phpEx, $phpbb_root_path, $db; 

   $default = '1'; 

   $sql = "SELECT * 
        FROM " . BOOK_CATEGORIES_TABLE . ""; 
   $result = $db->sql_query($sql); 

   $cats = array(); 
   while ( $row = $db->sql_fetchrow($result) ) 
   { 
         $cats['name'] = $row['cat_name']; 
         $cats['id'] = $row['cat_id']; 
   } 

   @asort($cats); 
   @reset($cats); 

   $cat_select = '<select name="' . $select_name . '">'; 
   while ( list($cats['id'], $cats['name']) = @each($row) ) 
   { 
      $selected = ( $default == '1' ) ? ' selected="selected"' : ''; 
      $cat_select .= '<option value="' . $cats['id'] . '"' . $selected . '>' . $cats['name'] . '</option>'; 
   } 
   $cat_select .= '</select>'; 

   return $cat_select; 
}
als Ursprungsfunktion

Code:
'CAT_SELECT' => cat_select('1', 'book_cat'),
als Templateanweisung

Code:
   </tr> 
      <td class="row1">{L_CATEGORY}</td> 
      <td class="row2"> 
      {CAT_SELECT} 
      </td> 
   </tr>
als Anzeige

es wird aber leider nur ein leeres Selectfeld angezeigt ;-([/code]
 
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 09.05.2005, 19:07  
Erfahrener Benutzer
 
Registriert seit: 09.05.2005
Beiträge: 193
akratellio
Standard

Hallo Johny,

wenn
arr1 gleich einem Array mit deinen ID's und
arr2 ein Array mit den dazugehörigen Namen
ist,
dann...

$out.=" <select name=\"xy\">";

foreach(arr1 as $k=>$v){

if($_POST['xy']==$v){

$out.= " <option value=\"".$v."\" selected>".$arr2[$k]."</option>";

}

else{

$out.=" <option value=\"".$v."\">".$arr2[$k]."</option>";

}

}

$out.=" </selected>";

echo $out;

P.S. $_POST[''xy] kann natürlich auch der Wert sein in deiner Datenbank

greetings akratellio
akratellio ist offline  
Alt 09.05.2005, 19:08  
Waq
Erfahrener Benutzer
 
Registriert seit: 15.08.2004
Beiträge: 2.473
Waq
Standard

Inden Du diese Zeile hier zum anspringen bringst:
Zitat:
$selected = ( $default == '1' ) ? ' selected="selected"' : '';
Da müsste wohl mit der id verglichen werden...

Der Beitrag wurde verschoben, wegen...
... Postings im falschen Forum.

Bemerkung:
Die gestellte Frage entspricht nicht dem Wissensstand eines/einer Fortgeschrittenen.

moved to PHP - Anfänger
__________________
mod = master of disaster
Waq ist offline  
Alt 09.05.2005, 19:11  
Erfahrener Benutzer
 
Registriert seit: 05.07.2004
Beiträge: 1.476
DiBo33
Standard

Das gehört mit Sicherheit nich zu Fortgeschrittenen.


16.14. Warum soll ich nicht SELECT * schreiben?
http://php-faq.de/q/q-sql-select.html

11.7. Wie kann ich aus einer Datenbanktabelle einen <select> erzeugen?
http://php-faq.de/q/q-formular-select.html

Mit grossen Blick auf ORDER BY
13.1.7. SELECT Syntax
http://dev.mysql.com/doc/mysql/en/select.html

[edit]
Hätte ja beinahe deine Ursprungsfrage vergessen
http://de.selfhtml.org/html/formular..._vorselektiert
[/edit]
DiBo33 ist offline  
Alt 09.05.2005, 19:17  
Gast
 
Beiträge: n/a
Standard

hi,

hab mal versucht deinen Vorschlag in meinen Code zu integrieren!

Dabei kamen jedoch nur fünf leere Selectfelder raus:

Code:
//
// Pick a cat, any cat ...
//
function cat_select($default, $select_name = "book_cat")
{
	global $phpEx, $phpbb_root_path, $db;

	$default = '1';

	$sql = "SELECT *
		  FROM " . BOOK_CATEGORIES_TABLE . "";
	$result = $db->sql_query($sql);

	$cats = array();
	$cat_select = '<select name="' . $select_name . '">';

	while ( $row = $db->sql_fetchrow($result) )
	{
		$cats['name'] = $row['cat_name'];
		$cats['id'] = $row['cat_id'];

		$book_id = $HTTP_GET_VARS['b'];

		$sql = "SELECT book_cat
			  FROM " . BOOKS_TABLE . "
			  WHERE book_id = '$book_id'";
		while ( $row = $db->sql_fetchrow($result) )
		{
			while ( list($cats['id'], $cats['name']) = @each($row) )
			{
				$cat_select.=" <select name=\"cat\">"; 

				foreach( $cats['id'] as $cats['name']=>$cats['id'])
				{ 
					if($row['book_cat'] == $cats['id'])
					{ 
						$cat_select.= " <option value=\"".$cats['id']."\" selected>".$cats['name']."</option>"; 
					} 
					else
					{
						$cat_select.=" <option value=\"".$cats['id']."\">".$cats['name']."</option>";
					}
				} 
				$cat_select.=" </selected>"; 
			}
		}
	}

	$cat_select .= '</select>';

	return $cat_select;
}
 
Alt 10.05.2005, 16:14  
Gast
 
Beiträge: n/a
Standard

hoi,

so langsam wird das wirklich kurios.
bei einigen Kategorien stimmt die Anzeige, bei anderen wiederum nicht!

der aktuelle,neue Funktionscode:
Code:
// 
// Pick a cat, any cat ... 
// 
function cat_select($oldcat, $bookid, $select_name = "cat") 
{ 
   global $db; 

   $sql = "SELECT cat_id, cat_name 
      FROM " . BOOK_CATEGORIES_TABLE. " 
      ORDER BY cat_name, cat_id"; 
   if ( !($result = $db->sql_query($sql)) ) 
   { 
      message_die(GENERAL_ERROR, "Couldn't query book cat table", "", __LINE__, __FILE__, $sql); 
   } 

   $cat_select = '<select name="' . $select_name . '">'; 
   while ( $row = $db->sql_fetchrow($result) ) 
   { 
      // 
      // Select Book's Cat 
      // 

      $sql2 = "SELECT * 
           FROM " . BOOKS_TABLE . " 
           WHERE book_id = '$bookid'"; 
      $result2 = $db->sql_query($sql2); 
    
      while ( $row2 = $db->sql_fetchrow($result2) ) 
      { 
         if( $row2['book_cat'] == $oldcat) 
         { 
            $selected = "selected='selected'"; 
         } 
         else 
         { 
            $selected = ""; 
         } 
    
         $cat_select .= '<option value="' . $row['cat_id'] . '"' . $selected . '>' . $row['cat_name'] . '</option>'; 
      } 
   } 
   $cat_select .= "</select>"; 

   return $cat_select; 
}
 
Alt 11.05.2005, 13:46  
Erfahrener Benutzer
 
Registriert seit: 05.07.2004
Beiträge: 1.476
DiBo33
Standard

Bitte PHP-Tags statt CODE-Tags benutzen


Erkläre mir mal genauer wie deine Tabellenstrukturen sind, welchen Inhalt deine SELECT-Felder haben sollen.

Mir ist immer noch nicht klar, warum du in deiner Funktion 2 SELECTS an MySQL absetzen musst.
DiBo33 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
Eintragen von Daten per Formular in MySQL Datenbank PHP Tipps 2004 11 07.06.2009 08:58
Daten aus Datenbank in eine Variable speichern cyberfreak PHP Tipps 2008 1 24.04.2008 15:20
Daten in Datenbank übergeben Bebre PHP Tipps 2008 2 11.02.2008 11:41
Daten von Datenbank durch Klick in Feld holen Taktaky PHP Tipps 2008 23 22.08.2007 17:20
Daten werden nicht in die Datenbank eingetragen picco PHP Tipps 2005-2 17 06.10.2005 11:38
[Erledigt] Daten aus einer Datenbank auslesen Datenbanken 2 04.09.2005 19:13
Daten aus Datenbank auslesen und in PHP-Seite anzeigen PHP Tipps 2005-2 1 28.08.2005 20:16
Daten übertragen von datenbank zu datenbank PHP Tipps 2005-2 6 20.06.2005 13:19
Daten aus Datenbank in Formular PHP Tipps 2005 24 20.04.2005 17:10
Daten in Datenbank ändern PHP Tipps 2005 3 27.01.2005 14:40
Über Smarty Daten i d Datenbank (php MyAdmin) aktualisieren. PHP Tipps 2005 1 26.01.2005 09:40
Viele Daten in die Datenbank eintragen. sunset PHP Tipps 2005 10 11.01.2005 19:32
[Erledigt] Daten in Datenbank einfügen Datenbanken 2 18.10.2004 21:11
[Erledigt] Nur bestimmte Daten auslesen und in Datenbank schreiben PHP Tipps 2004 2 26.09.2004 14:33
[Erledigt] Daten in Datenbank einlesen Datenbanken 2 08.08.2004 13:31

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
sql php vorbelegung aus datenbank, php select vorbelegen, selectbox vorbelegen, sql select vorbelegung, daten aus datenbank in ein select schreiben, php form mit werten vorbelegen, sql select wert vorbelegen, select-feld vorbelegen, php textfeld vorbelegen wenn, select zeile vorbelegen, sql select feld anfügen und füllen, datenbank auslesen vorbelegen, mysql feld einfügen und vorbelegen, sql felder vorbelegen, smarty: default wer von formularfeldern neu belegen, php textfeld vorbelegen, select feld html vorbelegen inhalt per sql, form select m it .cat füllen, sql select list vorbelegen, html select vorbelegen selected

Alle Zeitangaben in WEZ +2. Es ist jetzt 13:27 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.