Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Checkbox, Array, DB Select auslesen Fail!

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Checkbox, Array, DB Select auslesen Fail!

    Hallo, ich habe einen Problem, mit dem dem checkbox! Die Daten werden Erfolgreich übertragen wenn ich Metal oder Charts oder Hiphop eintrage bei checkbox würd ich folgendes zusammenbekommen genau so: metal, charts, hiphop

    das eintragen war für mich kein Problem nur das die Eingetragenden jetzt nur noch bei den Einstellungen auf checked eingestellt werden müssen also angekreuzt doch ich weiß nich wie irgendwie will er es nich so machen wie ich es machen will !^^

    ich hoffe Ihr könnt mir helfen hier mein Code:


    Der Code zum Reinschreiben!

    PHP-Code:
    <?php
    //Variablen Hinzupacken 
    $i 0;
    foreach (
    $_POST['musikgenre'] as $key => $value) {
     if (
    $i == 0$arraymusikgenre .= $value;
      else 
    $arraymusikgenre .= ', '.$value;
      
    $i++;
    }

    echo 
    "Änderungen wurden erfolgreich gespeichert.";
    $aendern mysql_query("UPDATE users SET musikgenre='$arraymusikgenre' usw...
    ?>
    Der Code zum auslesen in einem Array + Checkbox und If zweig zum Überprüfen was angekreuzt ist doch irgendwie mach ich was falsch ?

    PHP-Code:
    <?php

    $username 
    $_SESSION['username'];
    $ergebnis mysql_query("SELECT * FROM users WHERE username='$username'");
    $row mysql_fetch_object($ergebnis);

    echo 
    '<table>';
    echo 
    '<tr>';
    echo 
    '<td width="60%">';

    $musikgenre = array (
    "Metal",
    "Electro",
    "Alternative",
    "Rock'n'Roll",
    "Charts",
    "Hardstyle",
    "House",
    "HipHop",
    );

    foreach(
    $musikgenre as $a)
    {

      if (
    $row->musikgenre == $a
      {
      echo 
    '<input name="musikgenre[]" type="checkbox" checked="checked" value="'.$a.'">&nbsp;&nbsp;'.$a.'<br>';
      } else {
      echo 
    '<input name="musikgenre[]" type="checkbox" value="'.$a.'">&nbsp;&nbsp;'.$a.'<br>';
      }
    }

    echo 
    '</td>';
    echo 
    '</tr>';
    echo 
    '</table';

    ?>
    Hoffe Ihr könnt mir helfen!

    Gruss Mathis

  • #2
    Zitat von Kidstorm Beitrag anzeigen
    PHP-Code:
    else $arraymusikgenre .= ', '.$value
    Hast Du Dir mal $row->musikgenre ausgeben lassen?

    Edit...nu stimmts...^^

    Kommentar


    • #3
      das eintragen in der datenbank ist nich das thema nur ich möcht die eintragten sachen was ich angeklickt habe das die bei den einstellungen auch angekreuzt sind also mit checked

      PHP-Code:
      foreach($musikgenre as $a)
      {

        if (
      $row->musikgenre == $a
        {
        echo 
      '<input name="musikgenre[]" type="checkbox" checked="checked" value="'.$a.'">&nbsp;&nbsp;'.$a.'<br>';
        } else {
        echo 
      '<input name="musikgenre[]" type="checkbox" value="'.$a.'">&nbsp;&nbsp;'.$a.'<br>';
        }

      Hier ist mein Problem
      Wenn $row->musikgenre in dem falle oben: "metal, charts, hiphop" auslesen und das alls durchlaufender array überprüfen und die überprüft sind dann als checked setzen als kreuz also bei den einstellungen würde das so ausehen

      [X] Metal
      [ ] Electro
      [ ] Alternative
      [ ] Rock'n'Roll
      [X] Charts
      [ ] Hardstyle
      [ ] House
      [X] HipHop

      Do es tut das nich bei mir kommt nur

      [ ] Metal
      [ ] Electro
      [ ] Alternative
      [ ] Rock'n'Roll
      [ ] Charts
      [ ] Hardstyle
      [ ] House
      [ ] HipHop

      ob wohl die in der datenbank so eingetragen wurde:
      metal, charts, hiphop

      wie kann man das realisieren .. normalweiße ist das doch eine simple if abfrage und eine while schleife das muss ja durch den array durch oder seh ich das falsch?

      Kommentar


      • #4
        $a ist immer nur eines der Genres, also zum Beispiel "Metal" und Du vergleichst es zum Beispiel mit "metal, charts, hiphop"...das kann ja nicht wahr werden
        Das war es, was ich Dir in meinem letzten Post sagen wollte....deswegen solltest Du Dir mal $row->musikgenre ausgeben lassen.

        Kommentar


        • #5
          Die Daten werden Erfolgreich übertragen wenn ich Metal oder Charts oder Hiphop eintrage bei checkbox würd ich folgendes zusammenbekommen genau so: metal, charts, hiphop
          PHP-Code:
          $musikgenre = array (
          "Metal",
          "Electro",
          "Alternative",
          "Rock'n'Roll",
          "Charts",
          "Hardstyle",
          "House",
          "HipHop",
          ); 
          Wenn Du jetzt aus der DB den Eintrag metal, charts, hiphop erhältst und per foreach() jedes Einzelelement aus $musikgenre damit vergleichst,
          wie soll das jemals true werden?

          Verwende z.B. stripos(), um festzustellen, ob ein Genre aus $musikgenre in dem DB-String vorhanden ist.
          Competence-Center -> Enjoy the Informatrix
          PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

          Kommentar


          • #6
            Ich werds mal versuchen aber irgendwie bleib ich da noch hängen hab den ganzen Tag da rumgebastelt...
            irgendwie krieg ich es nich hin..

            Muss ich mir irgendwie was einfallen lassen.. also das reinschreiben geht ja brauch ja nur noch das auslesen das brauch ich für meine Homepage sonst steht bei mir schon alles wie einloggen ausloggen profil ausfüllen doch bei mehreren feldern darüber hab ich noch nich wirklich gedanken gemacht.. und mehreren feldern ist ja schon sowas man klickt ja mehrere an.. ^^

            Kommentar


            • #7
              Das wäre zum bleistift meine Lösung...

              PHP-Code:
              $temp=explode($row->musikgenre", ");
              if(
              in_array($a$temp))
              {
                  
              // Genre gefunden

              Kommentar


              • #8
                PHP-Code:
                foreach($musikgenre as $a)
                {
                  
                $temp explode(', '$row->musikgenre);
                  if(
                in_array($a$temp))
                  {
                   echo 
                '<input name="musikgenre[]" type="checkbox" checked="checked" value="'.$a.'">&nbsp;&nbsp;'.$a.'<br>';
                  } else {
                   echo 
                '<input name="musikgenre[]" type="checkbox" value="'.$a.'">&nbsp;&nbsp;'.$a.'<br>';
                  }

                Wunderbar das Resultat!
                das klappt so
                Vielen Dank ! hmm ok jetzt hab ich mir das mal angeguckt und hab wieder mal was gelernt =)

                ich danke dir^^

                Kommentar


                • #9
                  $temp = explode(', ', $row->musikgenre);
                  Von hinten durch die Brust ins Auge.

                  [WIKI]Normalisierung (Datenbank)[/WIKI]
                  [COLOR="#F5F5FF"]--[/COLOR]
                  [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                  „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                  [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                  [COLOR="#F5F5FF"]
                  --[/COLOR]

                  Kommentar


                  • #10
                    Hab nicht gesagt, dass die Lösung schön ist, aber sie funktioniert. Natürlich wäre es wesentlich besser das DB-Design zu überarbeiten...

                    Davon abgesehen könnte man die $temp=....noch vor die Schleife verschieben, das muss nicht bei jedem Schleifendurchlauf neu zugewiesen werden, wenn ich das richtig im blick hab...nur für den wahrscheinlichen fall, dass du dein DB-Design nciht überarbeitest....

                    Kommentar


                    • #11
                      DB-Design ? Was meinst du jetzt damit?

                      Kommentar


                      • #12
                        Klick doch wenigstens auf die Links, wenn sie schon jemand postet..
                        [COLOR="#F5F5FF"]--[/COLOR]
                        [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                        [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                        [COLOR="#F5F5FF"]
                        --[/COLOR]

                        Kommentar

                        Lädt...
                        X