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

  • Kidstorm
    hat ein Thema erstellt [Erledigt] Checkbox, Array, DB Select auslesen Fail!.

    [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

  • nikosch
    antwortet
    Klick doch wenigstens auf die Links, wenn sie schon jemand postet..

    Einen Kommentar schreiben:


  • Kidstorm
    antwortet
    DB-Design ? Was meinst du jetzt damit?

    Einen Kommentar schreiben:


  • RustyXXL
    antwortet
    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....

    Einen Kommentar schreiben:


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

    [WIKI]Normalisierung (Datenbank)[/WIKI]

    Einen Kommentar schreiben:


  • Kidstorm
    antwortet
    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^^

    Einen Kommentar schreiben:


  • RustyXXL
    antwortet
    Das wäre zum bleistift meine Lösung...

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

    Einen Kommentar schreiben:


  • Kidstorm
    antwortet
    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.. ^^

    Einen Kommentar schreiben:


  • Arne Drews
    antwortet
    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.

    Einen Kommentar schreiben:


  • RustyXXL
    antwortet
    $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.

    Einen Kommentar schreiben:


  • Kidstorm
    antwortet
    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?

    Einen Kommentar schreiben:


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

    Edit...nu stimmts...^^

    Einen Kommentar schreiben:

Lädt...
X