letzte Auswahl im Selector "merken"

Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

phpneuling_

Grünschnabel
Hallo ihr lieben,

ich hätte da mal ein kleines Problem,

Ich krieg es nicht hin, das die letzte Auswahl die ich ausgewählt habe im Selecetor stehen bleibt. der springt immer wieder auf den ersten Eintrag zurück.

was mach ich da falsch?
Kann es vielleicht daran liegen, dass ich die Werte in _POST und element auswahl vorher auf Gleichheit prüfen muss?

thx und grüße

PHP:
<!DOCTYPE HTML>
<html lang="de">
<head>
    <meta charset="utf-8">
        <title>test</title>
<?php
try {
        $pdo = new PDO ( 'mysql:dbname=nation;charset=utf8', 'root', '' );
        //$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        //$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
} catch ( PDOException $e ) {
        die ( $e->getMessage () );
}


?>
</head>


<body>
<form method="post">
  <fieldset>

<?php
    $sql = "SELECT name, region_id FROM regions ORDER BY name";
    $stmt = $pdo -> prepare($sql);
    $stmt -> execute();
    //print_r($stmt->fetchAll(PDO::FETCH_ASSOC));
    echo "<select name ='auswahl' id = 'auswahl'>";

?>

<?php
    foreach ($stmt->fetchAll(PDO::FETCH_COLUMN,0) as $daten)
    echo "<option value = '$daten'>$daten </option> ";

     //echo "<option value = '.$daten->$daten.'"' .($_POST['auswahl'] == $daten->id ? ' selected='selected'' : '') . '>'.$daten->name.'</option>'";
     echo "</select>";
     $auswahl = $_POST['auswahl'] ?? 'standard';
    if(isset($_POST['auswahl'])){
       $region = $_POST['auswahl'];




        $auswahl = 'SELECT countries.name as "name2", countries.area, avg(country_stats.gdp), avg(country_stats.population), continents.name FROM
                    countries, country_stats, regions INNER JOIN continents ON regions.continent_id = continents.continent_id
                    WHERE regions.region_id = countries.region_id AND countries.country_id = country_stats.country_id AND regions.name = "'. $region .'" GROUP BY countries.country_id';


        $stmt = $pdo -> prepare($auswahl);
        $stmt->execute();
        echo "<table id=\"Länder\">\n\t";
        echo "<thead>
                <tr>
                <th><h3>Land</h3></th>
                <th><h3>Fläche</h3></th>
                <th><h3>AVG BIP</h3></th>
                <th><h3>AVG Bevölkerung</h3></th>
                <th><h3>Kontinent</h3></th>
                </tr>
                </thead>\n";
        echo "<tbody>\n\t";
        $ausgabe[] = $stmt->fetch(PDO::FETCH_ASSOC);

        while ( $zeile = $stmt->fetch ( PDO::FETCH_ASSOC ) ) {
          echo  "<tr>\t<td>".$zeile['name2']."</td>
                      <td>".$zeile['area']."</td>
                      <td>".$zeile['avg(country_stats.gdp)']."</td>
                      <td>".$zeile['avg(country_stats.population)']."</td>
                      <td>".$zeile['name']."</td></tr>\n\t";
          }

}


?>
<br>
<input type = "submit" value ="anzeigen">
</form>


        </body>
</html>
 

Yaslaw

alter Rempler
Moderator
$_POST Auswerrtung so ziemlich an den Anfang setzen

PHP:
$asuwahl = isset($_POST['auswahl']) ? isset($_POST['auswahl']) : "";
...
echo "<select name ='auswahl' id = 'auswahl'>";
foreach ($stmt->fetchAll(PDO::FETCH_COLUMN,0) as $daten){
    $selected = $auswahl==$daten ? "selected='selected'" : "";
    echo "<option value = '{$daten}' {$selected}>{$daten}</option> ";
} 
echo "</select>";
 

phpneuling_

Grünschnabel
hey, danke dir für die Hilfe :) Ich scheine tatsächlich zu belehrungsressistent zu sein.
Jetzt zeigt er mir immer das letzte feld des selectors an und nicht die letzte "user auswahl"

ich merke gerade, dass man mein Eingangspost vielleicht nicht präzise genug war.

Sorry :)
 

phpneuling_

Grünschnabel
Hat noch jemand einen Tip?

Jetzt nimmt er immer den letzten aus der auswahlliste.


PHP:
<?php

try {

        $pdo = new PDO ( 'mysql:dbname=nation;charset=utf8', 'root', '' );

    } catch ( PDOException $e ) {

        die ( $e->getMessage () );

}

?>

</head>



<body>
<?php
    $auswahl = isset($_POST['auswahl']) ? isset($_POST['auswahl']) : "";
?>
<form method="post">

<?php



    $sql = "SELECT name, region_id FROM regions ORDER BY name";

    $stmt = $pdo -> prepare($sql);

    $stmt -> execute();

    echo "<select name ='auswahl' id = 'auswahl'>";
    foreach ($stmt->fetchAll(PDO::FETCH_COLUMN,0) as $daten){
        $selected = $auswahl==$daten ? "selected='selected'" : "";
        echo "<option value = '{$daten}' {$selected}>{$daten}</option> ";
    }
    echo "</select>";

    if(isset($_POST['auswahl'])){

       $region = $_POST['auswahl'];

....
 

Yaslaw

alter Rempler
Moderator
Ja, dann musst du den Code anpassen, damit $auswahl nicht mehr bool ist. Am besten hinterfragst du mein Code, denn da ist ein C&P Fehler drin
PHP:
 $auswahl = isset($_POST['auswahl']) ? $_POST['auswahl'] : "";
 

phpneuling_

Grünschnabel
morgen,
Die Variable $asuwahl hatte ich gesehen und auch bereits geändert gehabt.
wenn ich mir $daten anzeigen lasse, steht dort immer egal was ich aussuche Western Europe drin?!
Danke dir bis hierhin.
 
Zuletzt bearbeitet:

phpneuling_

Grünschnabel
Hi M.Scatello,

Danke dir.
der Quelltext sieht so aus



HTML:
Region <select name ='auswahl' id = 'auswahl'> '<br>'<option value = 'Antarctica' selected='selected'>Antarctica</option> <option value = 'Australia and New Zealand' selected='selected'>Australia and New Zealand</option> <option value = 'Baltic Countries' selected='selected'>Baltic Countries</option> <option value = 'British Islands' selected='selected'>British Islands</option> <option value = 'Caribbean' selected='selected'>Caribbean</option> <option value = 'Central Africa' selected='selected'>Central Africa</option> <option value = 'Central America' selected='selected'>Central America</option> <option value = 'Eastern Africa' selected='selected'>Eastern Africa</option> <option value = 'Eastern Asia' selected='selected'>Eastern Asia</option> <option value = 'Eastern Europe' selected='selected'>Eastern Europe</option> <option value = 'Melanesia' selected='selected'>Melanesia</option> <option value = 'Micronesia' selected='selected'>Micronesia</option> <option value = 'Micronesia/Caribbean' selected='selected'>Micronesia/Caribbean</option> <option value = 'Middle East' selected='selected'>Middle East</option> <option value = 'Nordic Countries' selected='selected'>Nordic Countries</option> <option value = 'North America' selected='selected'>North America</option> <option value = 'Northern Africa' selected='selected'>Northern Africa</option> <option value = 'Polynesia' selected='selected'>Polynesia</option> <option value = 'South America' selected='selected'>South America</option> <option value = 'Southeast Asia' selected='selected'>Southeast Asia</option> <option value = 'Southern Africa' selected='selected'>Southern Africa</option> <option value = 'Southern and Central Asia' selected='selected'>Southern and Central Asia</option> <option value = 'Southern Europe' selected='selected'>Southern Europe</option> <option value = 'Western Africa' selected='selected'>Western Africa</option> <option value = 'Western Europe' selected='selected'>Western Europe</option> </select>    <br>
 
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…