Auswahlliste springt auf ersten Eintrag und nicht auf Datenbankeintarg: php, Mysql

  • Update Seite: update funktioniert auch, doch kehre ich auf diese update-Seite von einer anderen Seite zurück, ist der erste Eintrag der Liste ausgewählt und nicht der Eintrag, der in der Datenbank steht. Wo hakts hier, kann mir da jmd helfen? Danke, Ingrid

    Einmal editiert, zuletzt von jojo87 (21. Januar 2011 um 17:48) aus folgendem Grund: php-tags regänzt

  • Da fällt dir nix auf?

    PHP
    $selected = isset($XX) && $XX == $row['nachname] ? ' selected="selected"' : '';

    Da fehlt ein Hochkommata, richtig wärs so:

    PHP
    $selected = isset($XX) && $XX == $row['nachname'] ? ' selected="selected"' : '';

    Ob das das Problem löst, bin ich mir nicht sicher.

  • Zitat

    Wo hakts hier


    An allen Ecken und Enden, angefangen bei nicht eingerücktem Quellcode!

    PHP
    if($_POST['Submit'])


    Schreibe

    PHP
    if(isset($_POST['Submit']))


    Wobei bedacht sein sollte, dass der Submit-Button nicht unbedingt mitgesendet wird!

    PHP
    $XX=$_POST['XX'];


    $XX, sehr aussagekräftiger Variablenname, da kannst du auch $willibald schreiben

    PHP
    $update=mysql_query("update account set accountinhaber='$XX where ID_account='$a'") or die ("Ungültige Anweisung ");


    Ohne ein mysql_real_escape_string Werte in die DB zu schreiben ist fahrlässig

    PHP
    $ergebnis=mysql_query("select * from account where ID_account='$a'") or die ("Ungültige Anweisung ");


    Kein "Select *" benutzen und wo kommt $a her?

    PHP
    while($DS = mysql_fetch_array( $ergebnis )) {
     $accountinhaber=$DS['accountinhaber'] ;
    }


    Wenn es nur einen Treffer geben kann, ist die Schleife Blödsinn, oder aber $accountinhaber wird immer wieder überschrieben, was ebenfalls Blödsinn wäre

    PHP
    <form id="form1" name="form1" method="post" action="<? echo $PHP_SELF; ?>">


    In google mal PHP_SELF XSS eingeben

    PHP
    $selected = isset($XX) && $XX == $row['nachname] ? ' selected="selected"' : '';


    ändern in

    PHP
    $selected = (!empty($XX) && $XX == $row['nachname]) ? ' selected="selected"' : '';
  • Dann würde ich mal alle Variablen per echo ausgeben, mit anderen Worten: einfach mal debuggen. Und an den Anfang des Scripted diese beiden Zeilen schreiben:

    PHP
    error_reporting(E_ALL);
    ini_set('display_errors', true);
  • geht ned, wenn ich mit echo den datenbankeintrag ausgeben lass is alls ok, da hats was mit dem option select klumpat, dem unnedigen, ...norddeutscher freund, i bin nicht aus bayern

  • Ich nehme an du hast die Verbesserungen des netten unregistrierten Users nicht mal übernommen... Bei so einem Code ist es klar das nichts funktioniert. An deiner Stelle würd ich das Programmieren an den Nagel hängen, schon allein die Variablennamen die du benutzt bringen einen ja schon zum reiern... Geschweige von Einrückungen oder dass der Code überhaupt einen Syntax Check überleben würde. Das Ding hat mehr Syntaxfehler, wie ein Kinderpuzzle Puzzleteile hat. Da kann man nur hoffen, dass du sowas nicht beruflich machst.

    Welchen Sinn deine Datenbankstruktur hat weiss ich auch noch nicht so recht... So wie ich das Script interpretieren konnte, kann man sich einen Nachnamen aus einer Nachnamenliste aussuchen, den dann ein bestimmter Account $a erhält. Logisch ergibt das für mich zwar überhaupt kein Sinn aber wie auch immer... Ich hab dir dein Script mal einigermaßen überarbeitet, so dass es auch lesbar ist und auch funktionieren könnte.

    Gruß crAzywuLf :D

    4 Mal editiert, zuletzt von crAzywuLf (23. Januar 2011 um 15:50)

  • dein didaktischerstil ist a bissl wild .. aber danke. ich habe variablennamen geändert für das Forum weil ichs so für übersichtlicher gehalten habe, scheint nicht gut zu kommen. ansonsten geht das update, schwierigkeiten gibts wie gesagt bei dem option select, wobei ich glaub, dass ich da in der DB einen Hund hab, dem geh ich jetzt nach, danke lg ingrid

  • Aber dir ist aufgefallen das ich unter anderem diese select Zeile geändert habe?

    PHP
    $selected = ($row['nachname'] == $accountinhaber) ? ' selected="selected"' : '';

    Hast du mal über phpMyAdmin nachgeschaut, ob es in der Datenbank alles richtig drin steht?

    Gruß crAzywuLf :D

  • ja, das stimmt alles, ich hab auch schon x versionen von dem teil ausprobiert, auch wird der nachname in das Feld in der Tabelle account eingetragen, update funktioniert ja ...

    aber ich glaub das problem liegt daran, dass bei meinem update form die Verbindung über die ID von der tabelle account (wo der nachname eingetragen wird)
    zur tabelle user (die sämtliche nachnamen enthält) fehlt
    und da torkle ich noch herum, dazwischen ist nämlich
    die Zwischentabelle account_user und da sollen ja beim update die IDs eingetragen werden, das bring ich mit mehr zeit zusammen.
    Könnte das sein, dass das der Grund ist weshalb nach dem update der wert in der auswahlliste wieder auf den ersten wert springt?
    (ich bin neu bei php. ich bau nur ein paar musterseiten zusammen).
    Wieder danke für deine hilfe! lg i

  • Dann ändere doch mal diese Zeile hier:

    PHP
    echo '<option'.$selected.'>' . $row['nachname'] . '</option>';

    in

    PHP
    echo '<option'.$selected.'>"' . $row['nachname'] . '" == "' . $accountinhaber . '".....' . $row['nachname'] . '</option>';

    Dann siehst du bei jedem Eintrag der Dropdown was verglichen wird...
    Wird der Accountinhaber richtig ausgeben? Gibt es da vll Leerzeichen zwischen den Anführungszeichen und dem Wort...?

    Gruß crAzywuLf :D

  • Hallo crAzywuLf :streichel: ,
    Du hast den Fehler bereits in deiner vorletzten Antwort gefunden:
    (ich habs nicht gleich bemerkt weil ich dazwischen noch was falsches eingebaut hatte)

    $selected = ($row['nachname'] == $accountinhaber) ? ' selected="selected"' : '';
    meine ursprüngliche version war
    $selected = ($row['nachname'] == $XX) ? ' selected="selected"' : ''; wobei $XX=$_POST['XX'];

    das war falsch

    DAS WARS, ich danke herzlichst, ingrid :humba: