Avatar billede Chak Nybegynder
06. oktober 2010 - 16:38 Der er 13 kommentarer og
1 løsning

php problem

Hej eksperter.

Jeg har et mindre php problem

Jeg har et felt i min tabel der hedder "s_changes_ids" som kan indeholde forskellige ting.

Hvordan tjekker jeg om det jeg vil indsætte allerede eksistere i feltet?

På forhånd tak.
Avatar billede michael_stim Ekspert
06. oktober 2010 - 16:44 #1
Hvis det ikke må indeholde dubletter, sætter du feltet/kolonnen til unique.
Avatar billede Chak Nybegynder
06. oktober 2010 - 16:52 #2
Er det ellers andre måder at tjekke det på?
feltet indeholder noget lignende dette "e:2;m:4" hvor semikolen skiller dem ad.

Hvordan tjekker jeg at "e:2" eksistere i forvejen?
Avatar billede perfektus Nybegynder
06. oktober 2010 - 17:40 #3
Jeg ville lave et php script der udtrækker alt fra din tabel, derefter at køre det i en løkke.
udover det laver du et array til dine database udtræk.

i løkken bruger du explode for at få delt dit udtræk, brug så den exploded værdi med "array_key_exists()" til at tjekke om din værdi findes i vores array, returner den true, findes værdien og du kan breake løkken, evt echo id'et..
hvis false så gemmer du den i arrayed.


Håber ikke det blev for kringlet.. Held og lykke
Avatar billede tjens Nybegynder
06. oktober 2010 - 17:58 #4
Hvis du har feltet indlæst fra databasen, kan du bare søge i strengen, og tilsætte den nye id, hvis den ikke er fundet:

if (strpos( $s_changes_ids, $new_id )===false {
    if (strlen($s_changes_ids) > 0 {            // indsæt semicolon hvis der findes andre id'er i forvejen
        $s_changes_ids .= ';'
    }
    $s_changes_ids .= $new_id;
    // Opdater databasen her !!
}
Avatar billede tjens Nybegynder
06. oktober 2010 - 18:03 #5
Der er en slutparentes for lidt i begge if'er i #4
Avatar billede Chak Nybegynder
06. oktober 2010 - 18:08 #6
perfektus kan du give et eksempel?

feltet hedder "s_changes_ids" siger vi indeholder "e:2;m:4"

variablen hedder "$cludy" siger vi indeholde "e.2"

hvordan ordner jeg lige det?
Avatar billede Chak Nybegynder
06. oktober 2010 - 18:16 #7
tjens.. Jeg kiggede lige på dit, men kan ikke få det til at virke helt..

her er en stump at koden..

                            $check_updat_cart = explode(";", $sq_uc["s_changes_ids"]);
                            $search_array = array($check_updat_cart);
                            $cludy = $ex_p_out[0].":".$ex_p_out[1];

                            if (strpos( $check_updat_cart, $cludy)===false) {
                              if (strlen($check_updat_cart) > 0) {            // indsæt semicolon hvis der findes andre id'er i forvejen
                                $check_updat_cart .= ';';
                            }
                            $check_updat_cart .= $cludy;
                                // Opdater databasen her !!
                              echo "eksis";
                                }


Tak
Avatar billede Chak Nybegynder
06. oktober 2010 - 18:26 #8
Hej igen..

Jeg rettede lidt til og fik det til at virke - tak!


                            $cludy = $ex_p_out[0].":".$ex_p_out[1];
                            $mystring = $sq_uc["s_changes_ids"];
                            $findme  = $cludy;
                            $pos = strpos($mystring, $findme);
                           
                            if ($pos === false) {
                          // echo "The string '$findme' was not found in the string '$mystring'";
                                mysql_query("UPDATE session_carts set s_changes_ids='".$sq_uc["s_changes_ids"].";".$ex_p_out[0].":".$ex_p_out[1]."' where ID='".$ex_p_in[1]."'");
Avatar billede tjens Nybegynder
06. oktober 2010 - 18:33 #9
Ja jeg har måske lavet det omvendt af hvad du skrev:

Jeg gik ud fra at du gerne ville have den nye værdi tilføjet, hvis den ikke fandtes i forvejen.
Avatar billede Chak Nybegynder
06. oktober 2010 - 18:48 #10
Ja, det var også det jeg gerne ville. Har også opdater jeg har lavet en fejl, og kan ikke gennemskue den..

Har du evt. en løsning?
Avatar billede tjens Nybegynder
06. oktober 2010 - 20:04 #11
Jeg kan måske hjælpe, hvis du beskriver fejlen nærmere ;-)

Du kan jo evt. ændre din mysql_query(... linie til echo(... for at se om sql'en bliver som forventet.
Avatar billede wanze Nybegynder
06. oktober 2010 - 22:53 #12
Det virker desuden dumt, at du selv forsøger at struktuere dataen i din database, selvom det lige præcis er det, den gør så skide godt. Det virker fjollet, at du gemmer mange informationer i ét felt i din database, når du til tider kun skal bruge dele af informationerne. Du burde i stedet smide hver information ind i hvert felt.
Avatar billede Chak Nybegynder
14. oktober 2010 - 02:01 #13
Kan sagtens følge dig wanze. Men jeg bruger det til at indikere hvad er hvad. fx. "u" er uden, "m" er Med og "e" er extra. selve tallet er ID'nummeret så jeg kan udtrække produktnavnet fra en anden table :)
Avatar billede wanze Nybegynder
14. oktober 2010 - 02:26 #14
Jeg kan ikke lige se problemet i at du giver det egne felter? En nem måde at gøre det må kunne være, at du laver 3 nye rækker int u, int m og int e.

Eller du kunne lave en ny tabel, hvis der er mange forskellige "bogstaver" der skal have egne felter. Denne kunne have en struktur i retningen af: id, refid, key, value.

Deri kunne du så fx have 1, 1, m, 2, hvor refid peger på det id rækker har i den anden tabel. :)

Én af de to løsninger ville helt klart være en bedre løsning.
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