Avatar billede daniel_d Nybegynder
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();
    }
}
Avatar billede daniel_d Nybegynder
21. maj 2007 - 15:37 #1
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
Avatar billede daniel_d Nybegynder
21. maj 2007 - 15:39 #2
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 :)
Avatar billede jakobdo Ekspert
21. maj 2007 - 16:17 #3
Hvad er det du skal have hjælp med?
Du spammer bare rundt selv! :o)
Avatar billede dkfire Nybegynder
21. maj 2007 - 16:27 #4
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.
Avatar billede daniel_d Nybegynder
21. maj 2007 - 16:31 #5
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();
    }
Avatar billede dkfire Nybegynder
21. maj 2007 - 16:42 #6
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.
Avatar billede dkfire Nybegynder
21. maj 2007 - 16:45 #7
Den hedder selvfølgelig print_r()
Avatar billede michael_stim Ekspert
21. maj 2007 - 16:48 #8
Kan du ikke bare köre denne, uden din for:
$query = "UPDATE #__jcalpro_events SET approve = 1 WHERE cat IN ('".implode($array)."')";
Avatar billede michael_stim Ekspert
21. maj 2007 - 16:49 #9
Så skal du selvf. ikke have ' om inde i IN.
Avatar billede daniel_d Nybegynder
21. maj 2007 - 16:57 #10
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
Avatar billede jakobdo Ekspert
21. maj 2007 - 17:55 #11
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?
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester