Avatar billede ohmish Nybegynder
24. januar 2003 - 00:04 Der er 13 kommentarer og
1 løsning

Mysql: hent alle felter, og smid udfyldte felter over i ny tabel.

Halløj.
Nogen der lige har løsningen på hvordan jeg checker en DB-generet form for udfyldte felter? Det må jo igen blive noget med while/for loops, og f.eks count++..men hvordan?. Jeg har en form, der henter og lister over 100 felter fra databasen, hvor alle felter får et opadgående tal inkluderet i strengnavnet.. Men hvad med navnet når jeg skal gennemgå hver enkelt felt bagefter? Man skal kunne skrive en kommentar til enkelte felter, hvorefter KUN kommenterede felter gemmes i en ny tabel.
Avatar billede Slettet bruger
24. januar 2003 - 00:39 #1
Forestiller mig at du har noget kode lignende dette!

$sql = "select * from whatever where 1";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result))
{
    echo "<input type=\"text\" name=\"id".$row[id]."\" value=\"".$row[comment]."\"><br>";
    $ids[] = $row[id];
}
$ids = implode("|", $ids);
echo "<input type=\"hidden\" name=\"ids\" value=\"$ids\">";

----------------------------------------------------
Så kan dit problem løses på denne måde!

$ids = explode("|", $_POST["ids"]);
foreach($ids as $value)
{
    if($_POST["id$value]!="")
    {
        $sql = "update whatever set comment='".$_POST["id$value"]."' where id=$value";
        mysql_query($sql);
    }
}
Avatar billede tipsen Nybegynder
24. januar 2003 - 02:42 #2
if($_POST["id$value]!="")

kan evt. erstattes af:

if(isset($_POST["id$value"]) && !empty($_POST["id$value"]))
Avatar billede Slettet bruger
24. januar 2003 - 03:01 #3
if($_POST["id$value]!="")
Skal under alle omstændigheder erstattes af:
if($_POST["id$value"]!="")
Avatar billede ohmish Nybegynder
24. januar 2003 - 08:07 #4
godt så! jeg arbejder lige med det. har selv leget med idéen om at lave et skjult input i løkken. For hvordan kan man ellers lave og gemme en ny streng?
Avatar billede ohmish Nybegynder
24. januar 2003 - 08:48 #5
Jeg får fejlen: Fatal error: [] operator not supported for strings in index.php on line 142

Linie 42 er: $ids[] = $row["id"];
Avatar billede ohmish Nybegynder
24. januar 2003 - 08:48 #6
Jeg mente sefølli:

Linie 142 er: $ids[] = $row["id"];
Avatar billede ohmish Nybegynder
24. januar 2003 - 08:51 #7
Måske sku jeg hellere lave en løkke med noget $id++?
Avatar billede Slettet bruger
24. januar 2003 - 09:07 #8
Nej, brug endelig ikke $id++....
Smid et dump af din tabel og kode der, hvor fejlen opstår!
Avatar billede ohmish Nybegynder
24. januar 2003 - 10:01 #9
$result = mysql_query("SELECT * FROM comments ORDER BY user");
    $row = mysql_fetch_array($result);

    while ($row) { 
    $com = $row["com"];
    $user = $row["user"];
    print "<tr class=\"table\" valign=\"top\">";
        print "<td>";
        print "<div align=\"left\">$user</div>";
        print "</td>";
        print "<td valign=\"top\">";
print "<div align=\"right\"><input type=\"text\" name=\"id".$row["id"]."\" size=\"20\" value=\"$com\" "maxlength=\"20\"></div>";
        print "</td>";

$ids[] = $row["id"];
$ids = implode("|", $ids);
echo "<input type=\"hidden\" name=\"ids\" value=\"$ids\">";

$row = mysql_fetch_array($result);
}
Avatar billede Slettet bruger
24. januar 2003 - 10:08 #10
Prøv med..

while($row = mysql_fetch_array($result);)
{ 
    $com = $row["com"];
    $user = $row["user"];
    print "<tr class=\"table\" valign=\"top\">";
        print "<td>";
        print "<div align=\"left\">$user</div>";
        print "</td>";
        print "<td valign=\"top\">";
print "<div align=\"right\"><input type=\"text\" name=\"id".$row["id"]."\" size=\"20\" value=\"$com\" "maxlength=\"20\"></div>";
        print "</td>";

$ids[] = $row["id"];
}
$ids = implode("|", $ids);
echo "<input type=\"hidden\" name=\"ids\" value=\"$ids\">";
Avatar billede ohmish Nybegynder
24. januar 2003 - 10:46 #11
Regin, du er bare iorden! efter lidt rettelser hist og pist virker det perfekt.. det er sgu noget komliceret noget i starten. Tak ska du ha' :)

Smid et svar.
Avatar billede ohmish Nybegynder
24. januar 2003 - 10:49 #12
måske du vil forklare hva der foregår? altså i din tilføjelse.. jeg går ud fra det er noget array, med implode/explode. foreach kendte jeg ikke meget til.
Avatar billede Slettet bruger
24. januar 2003 - 13:15 #13
Explode:
du har f.eks. strengen "bla;tja;whatever;hmmm"
når du så kører:
explode(";", "bla;tja;whatever;hmmm");
Sprænges strengen ved alle ";" og der retuneres arrayet
array("bla", "tja", "whatever", "hmmm");
implode virker den anden vej, så hvis du kører:
implode(";", array("bla", "tja", "whatever", "hmmm");
returnes den originale streng!

foreach($array as $value)
looper over et array og hopper fra indhold til indhold,
foreach(array("bla", "tja", "whatever", "hmmm") as $value)
{
  echo $value."<br>";
}
Vil returnere:
bla
tja
whatever
hmmm

Dette er meget anvendeligt når et array ikke er indexeret numerisk!
Du kan også bruge følgende:
$array["nøgle"] = "VÆRDI";
foreach($array as $key => $value)
Her vil $key så være nøglen til arrayet ("nøgle") og $value vil være "værdi"!
Avatar billede ohmish Nybegynder
24. januar 2003 - 15:39 #14
alright. nu er hovedpinen over dét væk. tak for hjælpen du! :)
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