Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Leerzeichen zuviel beim abspeichern in die Datenbank

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Leerzeichen zuviel beim abspeichern in die Datenbank

    Hi ich programmiere gerade eine Aufstellung mit den Formationen und Aufstellung abspeichern.

    Jetzt hab ich einen Fehler gefunden der echt schlimm ist, dennoch finde ich ihn nicht.

    Es geht darum das bei der Aufstellungsseite die im Anhang dabei ist.
    Dort sieht man welche Spieler man aufstellen kann und welche gerade aufgestellt sind.

    Mein Problem ist das immer wenn ich auf Aufstellung speichern klicke. Alle Spielernamen perfekt in der Datenbank gespeichert werden außer meine Stürmer. Es ist immer ein Leerzeichen nach dem Namen dabei und so werden die Namen nicht richtig auf die Spiele übertragen.

    Also ich erkläre mal den Ablauf. Zuerst werden mal alle Spielernamen und Stärken in Arrays der jeweiligen Positionen gespeichert.

    aufstellung.php
    PHP-Code:
    $result2 mysql_query("SELECT * FROM spieler WHERE Verein = '$row[Vereinsname]' ORDER BY Staerke DESC");
          
    $sturm = array();
          
    $mittelfeld = array();
          
    $abwehr = array();
          
    $torwart = array();
          
          while (
    $row2 mysql_fetch_assoc($result2)) {
              if(
    $row2["Position"] == "Sturm") {
                
    $sturm[] = $row2["Nachname"];
                
    $sturm[] = $row2["Staerke"];
                } elseif(
    $row2["Position"] == "Mittelfeld") {
                    
    $mittelfeld[] = $row2["Nachname"];
                    
    $mittelfeld[] = $row2["Staerke"];
                    } elseif(
    $row2["Position"] == "Abwehr") {
                        
    $abwehr[] = $row2["Nachname"];
                        
    $abwehr[] = $row2["Staerke"];
                        } elseif(
    $row2["Position"] == "Torwart") {
                            
    $torwart[] = $row2["Nachname"];
                            
    $torwart[] = $row2["Staerke"];
                            }
          } 
    Danach werden diese in einer Drop-Down Liste zur Auswahl angezeigt. Beispiel wir haben 4 Stürmer zur Auswahl wobei man nur einen auswählen kann. Die Spielernamen werden angezeigt und die Stärke in der Klammer sieht man beim Bild im Anhang.

    formationen.php (Datei ist in aufstellung.php eingebunden)
    PHP-Code:
    <select name="Sturm1">
              <?php
            $end 
    count($sturm);
            
    $x 0;
            while (
    $x $end) {
                
    $y $x 1;
                if (
    $row2["Spieler6"] == $sturm[$x]) {
                    echo 
    "<option selected='selected'>$sturm[$x] ($sturm[$y])</option>";
                } else {
                    echo 
    "<option>$sturm[$x] ($sturm[$y])</option>";
                }
                
    $x $x 2;    
            }
            
    ?>
          </select>

    <select name="Mittelfeld1">
              <?php
            $end 
    count($mittelfeld);
            
    $x 0;
            while (
    $x $end) {
                
    $y $x 1;
                if (
    $row2["Spieler4"] == $mittelfeld[$x]) {
                    echo 
    "<option selected='selected'>$mittelfeld[$x] ($mittelfeld[$y])</option>";
                } else {
                    echo 
    "<option>$mittelfeld[$x] ($mittelfeld[$y])</option>";
                }
                
    $x $x 2;
            }
            
    ?>
          </select>




    <?php
          $result3 
    mysql_query("SELECT * FROM spieler WHERE Verein = '$row[Vereinsname]' ORDER BY Marktwert DESC");
          
    ?>
        <select name="Elfmeter">
          <?php
          
    while ($row3 mysql_fetch_assoc($result3)) {
              
    $result4 mysql_query("SELECT * FROM attribute WHERE Username = '$row3[Username]'");
              
    $row4 mysql_fetch_assoc($result4);
              
    $elfmeter = ($row4["SK"] + $row4["SG"]) / 2;
              
    $elfmeter round($elfmeter);
              
            if (
    $row2["Elfmeter"] == $row3["Nachname"]) {
                    echo 
    "<option selected='selected'>$row3[Nachname] ($elfmeter)</option>";
                } else {
                    echo 
    "<option>$row3[Nachname] ($elfmeter)</option>";
                }
          }
            
    ?>
          </select>
    So wenn man jetzt auf Aufstellung speichern klickt. wird nun das aufstellen.php aufgerufen. Das teilt nun beim Leerzeichen den String in die Teile Stärke in der Klammer und den Nachnamen. Nun soll es den Nachnamen in die Datenbank in die jeweilige Position speichern. Funktioniert überall einwandfrei nur bei den Stürmer ist immer ein Leerzeichen zuviel obwohl ich es genau gleich habe wie bei den anderen Positionen. Jetzt würdet ihr sagen ist leicht zu beheben schneide einfach noch einen Buchstaben weiter ab. Würde auch funtkionieren, doch das dumme ist das es bei den Freistoßschützen, Elfmeterschützen usw. genau das gleiche Problem ist.
    Wähle ich einen Torwart als Kapitän wird sein Nachname ohne Leerzeichen danach gespeichert. Wähle ich einen Stürmer wird sein Nachname mit einem Leerzeichen danach gespeichert. Das ist echt problematisch.

    aufstellen.php
    PHP-Code:
    $teile explode(" "$_POST["Sturm1"]);
    if (
    $teile[1] == "(100)") {
    $spieler6 substr($_POST["Sturm1"], strlen($_POST["Sturm1"])-5);
            } else {
                
    $spieler6 substr($_POST["Sturm1"], strlen($_POST["Sturm1"])-4);
            }

    $teile explode(" "$_POST["Mittelfeld2"]);
            if (
    $teile[1] == "(100)") {
                
    $spieler5 substr($_POST["Mittelfeld2"], strlen($_POST["Mittelfeld2"])-5);
            } else {
                
    $spieler5 substr($_POST["Mittelfeld2"], strlen($_POST["Mittelfeld2"])-4);
            }

    $teile explode(" "$_POST["Elfmeter"]);
        if (
    $teile[1] == "(100)") {
            
    $elfmeter substr($_POST["Elfmeter"], strlen($_POST["Elfmeter"])-5);
        } else {
            
    $elfmeter substr($_POST["Elfmeter"], strlen($_POST["Elfmeter"])-4);
        } 


    Wo liegt mein Fehler????

    Sind jeweils immer Teile von den Dateien. Denke das sollte genügen.
    Angehängte Dateien

  • #2
    Zitat von Floridus Beitrag anzeigen
    Wo liegt mein Fehler?
    Finde es heraus, in dem du während der Verarbeitung der Daten Testausgaben machst.

    var_dump bietet sich an um zu erkennen, ob eine Stringvariable noch unerwartete Leerzeichen enthält.

    Kommentar


    • #3
      Danke für deine Hilfe. Zwar hat es mir nicht bei meinem Problem geholfen aber jetzt weiß ich eine wichtige Methode

      Habe jetzt einfach eine andere Methode gemacht und zwar überprüft es danach mit der Methode str_replace alle Leerzeichen und entfernt diese

      Funktioniert nun einwandfrei und alles perfekt juhu

      Trotzdem danke.

      Kommentar


      • #4
        Habe jetzt einfach eine andere Methode gemacht und zwar überprüft es danach mit der Methode str_replace alle Leerzeichen und entfernt diese
        Naja, solange Dir wurschteln statt programmieren reicht, bitte. Aber erwarte bitte nicht, dass sich später mal jemanden Deinen Code antut.

        Kommentar

        Lädt...
        X