27. juli 2005 - 10:56Der er
46 kommentarer og 1 løsning
Hvorfor kommer alle de valgte ikke med, selvom der er makeret fle
Hejsa
Jeg har den her select, hvor man kan vælge flere ved at holde Ctrl i bund samtidig med at man trykker, men et eller andet sted sker der en fejl og de bliver ikke smide i databasen som: a,b,c,d,g,o den smider kun a ind.
Min kode er meget lang og jeg håber i kan finde lidt rundt i den.
Det skal siges at de felter som skal gøre sådan er: personality interests clothing_style music_style film_style food_style
AI bliver først for alvor en del af arbejdet, når teknologien integreres i den måde, vi arbejder på. At have adgang til AI betyder ikke nødvendigvis, at medarbejderne er klar til at bruge den.
Det skulle være den her, men jeg kan se at der må være smuttet noget i rodet:
foreach($subjects as $v) { if(!empty($_POST[$v])) { if(!in_array($_POST[$v], ${$v})) { $error[] = "Du kan ikke vælge noget som ikke findes i feltet '$v'!"; } } }
Jeg har aldrig selv brugt det, så ved ikke heeeelt hvordan man løser det. Men umiddelbart vil jeg mene, at du skal navngive din select så den hedder name='personality[]' f.eks.
Så vil du kunne hente dem med: $_POST['personality'][0] $_POST['personality'][1] $_POST['personality'][2]
$_POST['personality'] skal så når den bliver modtaget som multiple smide alt indholdet så [0] kommer først [0],[1],[5] (Hvis nu man ikek ahr valgt [2] [3] og [4]).
Det er en langrække som den skal smide i databasen.
foreach($subjects as $v) { if(!empty($_POST[$v])) { if(!in_array($_POST[$v], ${$v})) { $error[] = "Du kan ikke vælge noget som ikke findes i feltet '$v'!"; } } }
foreach($subjects as $v) { if(!empty($_POST[$v])) { if(!in_array($_POST[$v], ${$v})) { $error[] = "Du kan ikke vælge noget som ikke findes i feltet '$v'!"; } } }
Jep, det der mindes jeg selv at have lavet til dig :) Men dengang var det da ikke planen med et multiple dropdown, vel?! Jeg skal lave nogen eksempler med multiple dropdowns for jeg har aldrig brugt det, og det har jeg ikke lige tid til pt. desværre...
Hmm ok, umiddelbart kan jeg ikke lige se det ved at hurtig-skimme koden - Hvordan ser siden ud når den er kørt? Måske er der en javascript fejl eller lign?
Så nu kom vi over det, men så kommer en anden fejl:
Du kan ikke vælge noget som ikke findes i feltet 'personality'! Du kan ikke vælge noget som ikke findes i feltet 'interests'! Du kan ikke vælge noget som ikke findes i feltet 'clothing_style'! Du kan ikke vælge noget som ikke findes i feltet 'music_style'! Du kan ikke vælge noget som ikke findes i feltet 'film_style'! Du kan ikke vælge noget som ikke findes i feltet 'food_style'!
Det er denne kode:
foreach($subjects as $v) { if(!empty($_POST[$v])) { if(!in_array($_POST[$v], ${$v})) { $error[] = "Du kan ikke vælge noget som ikke findes i feltet '$v'!"; } } }
Som tjekker om man har valgt en af dem i selecten, som er:
Hmm ja, nogle af dem er da i hvert tilfælde arrays, så prøv at lave den foreach om til:
foreach( $subjects as $v ) { if ( !empty( $_POST[$v] ) ) { if ( is_array( $_POST[$v] ) ) { foreach ( $_POST[$v] as $val ) { if ( !in_array( $val, ${$v} ) ) { $error[] = "Du kan ikke vælge noget som ikke findes i feltet '$v'!"; break; } } } else { if ( !in_array( $_POST[$v], ${$v} ) ) { $error[] = "Du kan ikke vælge noget som ikke findes i feltet '$v'!"; } } } }
Øhm, nej - Eller det ved jeg ikke hvordan du vil løse - Din database er designet til at man kan vælge én ting i personality, men nu har du ændret det så man kan vælge flere ting. Gør man det "rigtigt" opretter man så en ny tabel hvor man opbevarer brugerens valg af personality... Den dårlige løsning er at lave feltet større og gøre sådan:
Jeg vil gerne bruge implode metoden her i starten, da jeg ikke har i sinde at lave en søge side endnu og hvis jeg gør vil den ikke blive så kompliceret at de kan søge personlighed.
Nu bliver det rettet, men prøv at login, så er det man har valgt ikke seleced når man ser der nede, det skulle den gerne også når der kommer igen med post, så er de heller ikke selected;
Du er nødt til at prøve at lære at debugge bedre - Find ud af hvorfor de ikek bliver valgt, brug var_dump() og så videre til at se hvad de forskellige variable indeholder når tingene ikke virker. Mit gæt er stadig at der pga din ændring fra enkelt til array... Du laver også nogle grimme forvirrende loops som: foreach ( $var as $var ) - Det er pænere at adskille dem som f.eks: foreach ( $personer as $person )
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.