Avatar billede syswatch Novice
22. august 2002 - 13:56 Der er 9 kommentarer og
1 løsning

Hente data fra mysql og updatere dem ???

Dette er et script der henter mine oplysninger og skriver dem så man kan opdatere en "post", det virker også helt fint med almindelige felter, men lige så snart den skal hente det der skal stå i textarea's så vil den ikke...dvs. de kommer ikke frem på siden.
Nogen der ved hvad der kan være galt ?

    $query = "select * from annoncer where (id = '$nr' AND password = '$password') order by id";
    $result = mysql_query($query);

    if (($result) && (mysql_num_rows($result) > 0)){
        echo "Ret annonce nr : <FONT SIZE=\"+1\">".$nr."</FONT><BR>\n";
      while($row = mysql_fetch_array($result)){
        printf("<FORM ACTION=\"%s\" METHOD=\"post\">\n",$PHP_SELF);
        printf("<INPUT NAME=\"nr\" TYPE=\"hidden\" VALUE=\"%s\">\n", $row[0]);
        printf("<INPUT NAME=\"kl\" TYPE=\"hidden\" VALUE=\"%s\">\n", $kl);
        print("<TABLE BORDER=\"0\" CELLPADDING=\"0\" CELLSPACING=\"0\">\n");
        for ($i=1;$i<mysql_num_fields($result);$i++){
            if ((mysql_field_type($result,$i) == 'string') && (!strrchr(mysql_field_name($result,$i), "x")))
            printf("<TR><TD>%s</TD><TD><INPUT NAME=\"%s\" TYPE=\"text\" SIZE=\"38\" VALUE=\"%s\" CLASS=\"felter\"></TD></TR>\n",
                    ucfirst(mysql_field_name($result,$i)),
                    mysql_field_name($result,$i),
                    $row[$i]
                    );
            else{
            if (!strrchr(mysql_field_name($result,$i), "x"))
            printf("<TR><TD>%s</TD><TD><TEXTAREA NAME=\"%s\" ROWS=\"4\" COLS=\"30\" CLASS=\"felter\">%s</TEXTAREA></TD></TR>\n",
                    ucfirst(mysql_field_name($result,$i)),
                    mysql_field_name($result,$i),
                    $row[$i]
                    );
            }
        }
Avatar billede syswatch Novice
22. august 2002 - 13:58 #1
Det skal lige siges at dette er et udsnit af et script, men det er her fejlen ligger et sted, jeg tror det er hvor denne linie starter:
if (!strrchr(mysql_field_name($result,$i), "x")) efter ELSE.
Avatar billede cbolvig Nybegynder
22. august 2002 - 14:56 #2
Jeg vil gerne lære noget nyt. Hvad er "%s" for noget?
Avatar billede halu Nybegynder
23. august 2002 - 11:29 #3
Du må jo kunne se på outputtet om det er betingelsen der er gal eller hvad. Kan du ikke poste det?

cbolvig -> printf() printer en formateret streng ud til std_out ->
%s betyder at argumentet skal fortolkes som streng.
prøv følgende og læs om sprintf() i php manualen ( forskellen mellen printf og sprintf er returværdien)
printf("test1= %s test2=%x","streng",9)
Avatar billede syswatch Novice
23. august 2002 - 11:32 #4
Halu: Det skal lige siges at jeg er rimelig newbie i PHP, og det er en af mine kammeraters script som jeg har tilpasset, og nu vil den ikke skrive textarea boxene så man kan rette i det der står i dem...
Jeg ved ikke helt hvad der er du mener ?
Avatar billede cbolvig Nybegynder
23. august 2002 - 13:43 #5
->halu
Åh ja, den havde jeg overset. Jeg bruger blot sjældent printX() og aldrig hvis den skal være så svær at gennemskue som den lange her. Tak.
Avatar billede halu Nybegynder
26. august 2002 - 08:53 #6
->syswatch
Jeg mener, hvad kommer der ud af scriptet. bliver linien i det hele taget printet ud til std_out ( hvad står der i sourcen efter php scriptet er kørt?)
Du nævner selv at du tror at feljen ligger i lilien
if(!strchr(mysql_field_name($result,$i),"x"))
--
oversat:  hvis ikke x findes i feltnavnet så ->
hvis denne betingelse altid er false, vil du ikke få skrevet linien med textarea ud - hvilket kunne være problemet.
hvis du får skrevet liline ud -> hvordan ser den så ud efter phpscriptet er  kørt?
Avatar billede syswatch Novice
26. august 2002 - 08:57 #7
Halu:
Jeg har 1 textarea som skal hente oplysninger fra en kolonne der hedder text. Og den indeholder da x.
Jeg kan ikke rigtig forstå det, for det burde jo egentlig være ok som det er ikke ?
Avatar billede halu Nybegynder
26. august 2002 - 09:17 #8
strchr("text","x") returneren en streng "xt" -> der hvor du gerne vil have printet noget ud har du altså ->
if(!"xt"){

}
hvilket i bedste fald er noget vrøvl ! betyder NOT
NOT FALSE == TRUE;
altså skal retur værdien af strchr() funktionen være FALSE hvis du skal have printet noget ud -> det bliver funktionen kun i det tilfælde hvor mysql_field_name() IKKE indeholder x.
Hvis du kender navnet på feltet er det meget pænere hvis du checker for det eksplicit -> eksemplevis med
if(mysql_field_name($result,$i) == "text"){

}
Desuden kan jeg se du har et problem  med at få udført den sidste betingelse i og med du tidligere har ->

if ((mysql_field_type($result,$i) == 'string') && (!strrchr(mysql_field_name($result,$i), "x"))){
// det der bliver skrivet ud


} else if(!strrchr(mysql_field_name($result,$i), "x")) {

// det der ikke bliver skrivet ud

}
du får der for faktisk KUN skrivet dit textarea ud NÅR feltet fra databasen IKKE indeholder en type der matches som STRING og felt navnet IKKE indeholder x ( altså felter med integers, floats, eller blobs (eksemplevis billedfiler ))
Avatar billede syswatch Novice
26. august 2002 - 09:57 #9
Halu:
Mange tak for dit svar... Jeg har forstået det hele nu.
Men jeg vil gerne lige have du skriver et SVAR her, så jeg kan give dig nogle point...
Avatar billede halu Nybegynder
26. august 2002 - 10:04 #10
Det får du da bare :-)
skulle der være en anden gang
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