[PHP]Auswahl eines teils im Array anhand einer Benutzereingabe

Bluebo

Mitglied
Hi PHP-Profies,

ich habe in einer Konfigurationsdatei mehrere Datenbankzugänge in einem array gespeichert.

zb.
PHP:
$db = array(
	1 => array(
		'dbName' => 'Datenbank1',
		'dbhost' => 'localhost',
		'dbTable2' => 'test2',
		...
	),
	
	2 => array(
		'dbName' => 'Datenbank2',
		'dbhost' => 'localhost',
		'dbTable2' => 'test4',
		...
	),
);

und weitere Daten.

Ich hab mir eine Dropdown-Liste erstellt, wo die Datenbanken ausgewählt werden können.
Jenachdem wieviel Datenbanken in dem Array vorhanden sind erweitert sich die Liste.
Also es kann die Datenbankenanzahl variieren. Der Benutzer kann dann eine Datenbank
auswählen und die Informationen werden gesendet.

Jetzt soll die vom Benutzer ausgewählte datenbank für weitere Verarbeitungen
zur verfügung stehn.

wie kann ich jetzt den ensprechenden teil des datenbankarrays auszuwählen, den
der Benutzer gewählt hat zb.verfügbar machen?
(wegen der varriierenden Datenbankenanzahl).


Ich hoffe ihr versteht was ich meine,

Danke, LG Bluebo
 
Zuletzt bearbeitet:
der Weg im Wortlaut:

1.) Formular mit (1, 2, 3, ...)
PHP:
echo "<select name=\"db_waehlen\">";
foreach ($db as $db_key => $einzel_db)
{
    echo "<option value=\"$db_key\">".$einzel_db['dbName']."</option>";
}
echo "</select>";
2.)
PHP:
$datenbank = isset($_SESSION['db']) ? $_SESSION['db'] : $db[$_POST['db_waehlen']];

3.)
PHP:
if (!isset($_SESSION['db']))
{
    $_SESSION['db'] = $_POST['db_waehlen'];
}

4.) jetzt solltest du in mit
PHP:
$db[$_SESSION['db']]
immer die richtigen Daten aus $db haben.
 
Zuletzt bearbeitet:
Hey nepda,
das ja mal eine fixe Anwort! Vielen Dank!

Ich hab da noch mal zwei Fragen.

zu Punkt 2.
PHP:
$datenbank = isset($_SESSION['db']) ? $_SESSION['db'] : $db[$_POST['db_waehlen']];

Ich Programmier noch nicht so lang PHP, was bedäutet das ? und der : ein der zeile?
kenne nur die einfach syntax. ;)
Und die zweite währe muss ich das über $_SESSION machen?
habe nur eine Ausgabeseite. Schön wäre ein Ansatz ohne $_SESSION. wenn es keine Umstände macht.

das mit dem Formular sieht bei mir so aus:
PHP:
function getDb($db){
		$counter=1;
		$i=0;
		
		while($i < count($db)){
		
			if ($i == 0){
				echo '<option value="'.$i.'" selected="selected">'.$counter.'. '.$db[$counter]['dbName'].'</option>';
			}else{
				echo '<option value="'.$i.'">'.$counter.'. '.$db[$counter]['dbName'].'</option>';
			}
			
			$counter++;
			$i++;
		}
	}

Aber ansonnsten sag ich mal Top!
Ich wiederhole mich noch mal ;) Vielen Dank!!

LG Bluebo
 
Ich Programmier noch nicht so lang PHP, was bedäutet das ? und der : ein der zeile?
kenne nur die einfach syntax. ;)
Oh, ja...
einfacher wäre:
PHP:
if (isset($_SESSION['db']))
{
    $datenbank =  $_SESSION['db'];
} else {

    $datenbank =  $db[$_POST['db_waehlen']];
}
und die Syntax von der anderen Schreibweise ist:
PHP:
$variable = ($bedingung == true) ? "richtig" : "falsch";

Eine Möglichkeit wäre außer der mit Sessions, die Klienten-IP inklusive des Array Keys in eine Datei zu schreiben... etwas übertrieben, meiner Meinung nach.
Wenn du dich jetzt doch entscheidest Sessions zu nehmen, vergess' nicht session_start() an den Anfang der Datei zu schreiben.
 
So, hab raus bekommen! :)

Muss zugeben war nicht einfach. xD
Aber nach dem kleinen Denkanstoss gings weiter.

Für alle noch mal die Lösung anbei! ( vereinfachte Version )
Da ich das ganze noch mit bischen "OOP" mache. ;)

PHP:
<?php

$db = array(
    1 => array(
        'dbName' => 'Datenbank1',
        'dbhost' => 'localhost',
        'dbTable2' => 'test2',
    ),
    
    2 => array(
        'dbName' => 'Datenbank2',
        'dbhost' => 'localhost',
        'dbTable2' => 'test4',
    ),
);

function selectDb_form($a){
	
			echo'
			<form id="form1" name="dbselect" method="post" action="db.php">
			<label>
			<select name="ID" size="1" id="0">';
			
			$counter=1;
			$i=0;
			
			while($i < count($a)){
			
				if ($i == 0){
					echo '<option value="'.$counter.'" selected="selected">'.$counter.'. '.$a[$counter]['dbName'].'</option>';
				}else{
					echo '<option value="'.$counter.'">'.$counter.'. '.$a[$counter]['dbName'].'</option>';
				}
				
				$counter++;
				$i++;
			}
			
			echo '
			</select>
			</label>
			<input type="submit" value="Auswählen">
			</form>';
}

if(count($db) < 2){
		$dbData = $db[1];
	}elseif(count($db) > 1){
		function selectDb_form($db){
		$dbData = $db[1];
}
	
if(!isset($_POST['ID']) || ''){	
	}else{
		$selectedDB = $_POST['ID'];
		$dbData = $db[$selectedDB];
}
	
	echo 'Ausgewählte DB: '.$dbData['dbName'].'<br />';
?>

Nochmal vielen Dank.
LG Bluebo
 
Zuletzt bearbeitet:
Zurück