21. maj 2007 - 15:35
Der er
11 kommentarer
array bliver ikke splittet før indsætning i db
Hej. Jeg bøvler med en funktion der modtager et array fra et inputfelt, f.eks. 1,2,3,5 funktionen opdaterer så et felt i databasen hvor 1,2,3,5 er id's til bestemte rækker. problemet er bare, at mit array ikke bliver splittet korrekt op selvom jeg bruger explode, så kan sgu ikke helt hitte rede i den. her er lidt kode: .................................. function buildarray( $approve ) { if ($approve <> NULL) { $paramA = explode(",", $approve); $a = "0"; foreach ($paramA as $paramB) { $paramB = trim($paramB); $paramB = "'".$paramB."'"; $paramA[$a] = $paramB; $a++; } $approve = implode(",", $paramA); } } function botMosJCalApprove() { global $database, $mosConfig_live_site; if ( !mosGetParam( $_REQUEST, 'approve') ) return true; // Cronjob kaldes med [URL]/index.php?approve=true $query = "SELECT params FROM #__mambots WHERE element = 'jcalapprove' AND folder = 'system'"; $database->setQuery( $query ); $id = $database->loadResult(); $mambot = new mosMambot( $database ); $mambot->load( $id ); $mambotParams =& new mosParameters( $mambot->params ); $approve = $mambotParams->get('approve'); // giver f.eks. 1,2 $x = 0; $array = array(buildarray($approve)); for ($x = 0; $x < count($array); $x++ ) { $query = "UPDATE #__jcalpro_events SET approved = 1 WHERE cat = $array "; $database->setQuery( $query ); $database->query(); } }
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
Den øverste funktion function buildarray( $approve ) { if ($approve <> NULL) { $paramA = explode(",", $approve); $a = "0"; foreach ($paramA as $paramB) { $paramB = trim($paramB); $paramB = "'".$paramB."'"; $paramA[$a] = $paramB; $a++; } $approve = implode(",", $paramA); } } Er nok slet ikke nødvendig, men blot et forsøg på at løse mit problem
Sagen er den, at hvis jeg erstatter $approve = $mambotParams->get('approve'); med $approve = "1,2,3"; Så virker det helt fint, så det er som om at min $mambotParams->get('approve'); laver noget udu :)
Hvad er det du skal have hjælp med? Du spammer bare rundt selv! :o)
Hvorfor gør du dette her?: for ($x = 0; $x < count($array); $x++ ) { $query = "UPDATE #__jcalpro_events SET approved = 1 WHERE cat = $array "; $database->setQuery( $query ); $database->query(); } Du bruger jo ikke $x til noget.
ok, har måske ikke forklaret mig godt nok. Prøver igen :) og noget af min kode var vist heller ikke helt korrekt, men koden her virker hvis jeg bruger $array = "1,2"; men ikke når jeg modtager den via mit inputfelt $x = 0; //$array = "1,2"; $array = $mambotParams->get('approve'); // Denne fejler $array = explode(",", $array); for ($x = 0; $x < count($array); $x++ ) { $query = "UPDATE #__jcalpro_events SET approve = 1 WHERE cat = \"$array[$x]\" "; $database->setQuery( $query ); $database->query(); }
Har du prøvet printr($array) ?? Så du er sikker på det er hvad du tror det er. Men du behøver altså ikke en for-løkke der, den har ingen formål.
Den hedder selvfølgelig print_r()
Kan du ikke bare köre denne, uden din for: $query = "UPDATE #__jcalpro_events SET approve = 1 WHERE cat IN ('".implode($array)."')";
Så skal du selvf. ikke have ' om inde i IN.
når jeg laver en print_r på mit @array får jeg bare 1, så det er nok her fejlen ligger - jeg får ikke fat i mine variabler korrekt
Lad os prøve at se din form så? Husker du, hvis du vil modtage et array, at sætte [] efter navnet? Så det f.eks. er: <input type="text" name="myName[]" /> Eller på en checkbox eller hvor du nu får info fra?
Vi tilbyder markedets bedste kurser inden for webudvikling