Avatar billede snigeren Nybegynder
19. august 2007 - 14:37 Der er 18 kommentarer og
1 løsning

afkryds checkbox hvis der er noget i databasen

Hvordan kan jeg sætte flueben i en checkbox hvis der er noget i databasen? For at finde ud af hvilke poster der skal puttes i databasen har jeg et while loop til at oprette x-antal checkboxe:

while($row = mysql_fetch_array($query1))
{
echo '<tr><td colspan="3"><input type="checkbox" name="ids[]"';
echo '" value="' . $row['surfacenavn'] . ":" . $row['farvekode'] . '">';
echo $row['surfacenavn'];
echo '</td></tr>';
}

Hvad er koden for at sætte flueben i checkbox? måske jeg så selv kan klare den?
Avatar billede nemlig Professor
19. august 2007 - 15:05 #1
<input type='checkbox' name='blabla' checked='checked'>
Avatar billede snigeren Nybegynder
19. august 2007 - 15:41 #2
hmm det her er nok helt galt men kan man gøre noget lignende det her?

while($row = mysql_fetch_array($query1))
{
    $query = mysql_query("SELECT * FROM shop_surface_dd WHERE varenr='" . $_GET["varenr"] . "'")or die(mysql_error());
    $row7 = mysql_fetch_array($query);
    echo '<tr><td colspan="3"><input type="checkbox" name="ids[]"';
    echo '" value="' . $row['surfacenavn'] . ":" . $row['farvekode'] . '" ' . if($farvekode=='"'$row['farvekode']'"'){"checked='checked'";} . '>';
    echo $row['surfacenavn'];
    echo '</td></tr>';
}
Avatar billede snigeren Nybegynder
19. august 2007 - 15:44 #3
uhm glemte fejl meddelelsen:
Parse error: parse error, unexpected T_IF in /var/www/triplan/triplan.net/www/e_shop/admin/edit_product.php on line 67
linie 67 er  . if($farvekode=='"'$..............
Avatar billede nemlig Professor
19. august 2007 - 16:24 #4
Jeg har splittet det lidt mere op:
Og er dit array "row7" korrekt defineret. I koden hentes der nemlig ikke noget fra "row7", men det kan selvfølgelig være andet sted, det foregår.

echo '<tr><td colspan="3"><input type="checkbox" name="ids[]"';
echo ' value="' . $row['surfacenavn'] . '":"' . $row['farvekode'] . '" ';
if($farvekode==$row['farvekode'])
    {
    echo 'checked="checked"';
    }
    echo '>';
  echo $row['surfacenavn'];
  echo '</td></tr>';
}
Avatar billede snigeren Nybegynder
19. august 2007 - 17:15 #5
jeg endte med at gøre sådan her,..:

while($row = mysql_fetch_array($query4))
{
    $query = mysql_query("SELECT * FROM shop_surface_dd WHERE varenr='" . $_GET["varenr"] . "'")or die(mysql_error());
    echo '<tr><td colspan="3"><input type="checkbox" name="ids[]"';
    echo ' value="' . $row['surfacenavn'] . '":"' . $row['farvekode'] . '" ';
    while($row7 = mysql_fetch_array($query))
    {
        if($row7['farvekode']==$row['farvekode'])
        {
            echo 'checked="checked"';
        }
    }
    echo '>';
    echo $row['surfacenavn'];
    echo '</td></tr>';
}
Avatar billede snigeren Nybegynder
19. august 2007 - 17:15 #6
bare smid et svar =)
Avatar billede nemlig Professor
19. august 2007 - 17:18 #7
Godt du fik de til at virke.
Avatar billede snigeren Nybegynder
19. august 2007 - 17:42 #8
uhm lige en extra lille ting,.. =)

når jeg skal opdatere min database med det indhold jeg nu har, troede jeg at jeg bare kunne gøre således:

$sql = "update shop_content (varegruppeID, varenr, beskrivelse, dimension, enhed, enhedstype) values ('$varegruppeID', '$varenr', '$beskrivelse', '$dimension', '$enhed', '$enhedstype')";
$result = mysql_query($sql) or die(mysql_error());

Men den jeg får fejl i sql syntaxen... så det er nok ikke rigtigt =)
Avatar billede nemlig Professor
19. august 2007 - 17:59 #9
Der findes flere måder, fx sådan her:

mysql_query("UPDATE shop_content SET varegruppeID='$varegruppeID',varenr='$varenr' WHERE feltnavn = '$ret'")or die (mysql_error());

Bemærk, at jeg kun har angivet 2 feltnavne, og at jeg også har sat "WHERE", som bruges til identificere den post, du vil opdatere.
Avatar billede snigeren Nybegynder
19. august 2007 - 19:10 #10
Disse data kommer videre til UPDATE scriptet men intet sendes til db´en:
Array
(
    [varenr] => 66667
    [beskrivelse] => tester 67
    [dimension] => 6x67
    [enhed] => 6667
    [enhedstype] => cm
    [ids] => Array
        (
            [0] => Galvaniseret
            [1] => RAL 7016
            [2] => RAL 9010
        )

    [submit] => Opdatér vare
)

UPDATE scriptet ser således ud nu:

$sql = "UPDATE shop_content SET varegruppeID='$varegruppeID', varenr='$varenr', beskrivelse='$beskrivelse', dimension='$dimension', enhed='$enhed', enhedstype='$enhedstype' WHERE varenr = '" . $varenr . "'";
                    $result = mysql_query($sql) or die(mysql_error());


Jeg ved godt at [ids] => Array ikke er med i sql´en de skal ind et andet sted men de andre data burde jo blive opdateret
Avatar billede snigeren Nybegynder
19. august 2007 - 19:16 #11
ahh hehe flot det var fordi jeg skulle smide $_GET["varenr"] ind istedet for $varenr

I rest my case,.. takker for hjælpen =)
Avatar billede nemlig Professor
19. august 2007 - 19:28 #12
Velbekomme og tak for point :-)
Avatar billede snigeren Nybegynder
19. august 2007 - 20:04 #13
argh den var ikke helt på plads alligevel,.. mon du kan finde fejlen?
den "mister" $farvekode undervejs =( 

Mit checkbox script ser således ud:

while($row = mysql_fetch_array($query5))
{
    $query = mysql_query("SELECT * FROM shop_surface_dd WHERE varenr='" . $_GET["varenr"] . "'")or die(mysql_error());
    echo '<tr><td colspan="3"><input type="checkbox" name="ids[]"';
    echo ' value="' . $row['surfacenavn'] . '":"' . $row['farvekode'] . '" ';
    while($row7 = mysql_fetch_array($query))
    {
    if($row7['surfacenavn']==$row['surfacenavn'])
        {
        echo 'checked="checked"';
        }
    }
    echo '>';
      echo $row['surfacenavn'];
      echo '</td></tr>';
}

og mine edit/tilføj sql sætninger ser således ud:

if($action=="opdater")
{
$varegruppeID = $_GET["varegruppeID"];
                   
                   
$sql = "UPDATE shop_content SET varenr='$varenr', beskrivelse='$beskrivelse', dimension='$dimension', enhed='$enhed', enhedstype='$enhedstype' WHERE varenr = '" . $_GET["varenr"] . "'";
$result = mysql_query($sql) or die(mysql_error());
                   
$sql2 = "DELETE from shop_surface_dd WHERE varenr = '" . $_GET["varenr"] . "'";
$result2 = mysql_query($sql2) or die(mysql_error());
                   
$ids = ( isset( $_POST['ids'] ) && is_array( $_POST['ids'] ) ? $_POST['ids'] : array() );
      foreach( $ids as $id )
      {
        list($surfacenavn, $farvekode) = explode(":", $id);
        $sql_dd = "insert into shop_surface_dd (varenr, farvekode, surfacenavn) values ('$varenr', '$farvekode', '$surfacenavn')";
        $result_dd = mysql_query($sql_dd) or die(mysql_error());
      }
Avatar billede snigeren Nybegynder
19. august 2007 - 20:05 #14
den sletter fint det gamle indhold fra shop_surface_dd men det nye indhold mangler farvekode dvs. feltet "farvekode" er nu tomt =(
Avatar billede nemlig Professor
19. august 2007 - 20:14 #15
Jeg forstår ikke helt sammenhængen i koden, og det gør nok heller ikke noget.
Vi kan vel være enige om, at variablen $farvekode er tom, for din "insert into" ser rigtig ud.
Hvor bliver variabelen $farvekode sat???

Har det noget med udtrækket tidligere at gøre, for så skal variablen i "insert into" jo hedde $row['farvekode'] og ikke $farvekode.
Avatar billede snigeren Nybegynder
19. august 2007 - 21:14 #16
uhm før vi lavede om på nedenstående kode virkede det fint:

kode 1, virker fint:
while($row = mysql_fetch_array($query5))
{
    echo '<tr><td colspan="3"><input type="checkbox" name="ids[]"';
    echo '" value="' . $row['surfacenavn'] . ":" . $row['farvekode'] . '">';
    echo $row['surfacenavn'];
    echo '</td></tr>';
}

kode 2, virker ikke,.. den mister somewhere farvekode:

while($row = mysql_fetch_array($query4))
{
    $query = mysql_query("SELECT * FROM shop_surface_dd WHERE varenr='" . $_GET["varenr"] . "'")or die(mysql_error());
    echo '<tr><td colspan="3"><input type="checkbox" name="ids[]"';
    echo ' value="' . $row['surfacenavn'] . '":"' . $row['farvekode'] . '" ';
    while($row7 = mysql_fetch_array($query))
    {
        if($row7['surfacenavn']==$row['surfacenavn'])
            {
            echo 'checked="checked"';
            }
    }
    echo '>';
      echo $row['surfacenavn'];
      echo '</td></tr>';
}


begge scripts bruger samme update, delete og insert sql...
Avatar billede nemlig Professor
19. august 2007 - 21:35 #17
Den første "while" smides "query5-array" i variablen "$row".
Næste "while" smides "query4-array" samme variabel, nemlig "$row".
Er det korrekt?
Avatar billede snigeren Nybegynder
19. august 2007 - 23:07 #18
det er bare eksempler... kode 1 virker men efter jeg ændrede koden til det i kode 2 mangler :farvekode  det skulle jo gerne stadig se sådan her ud    surfacenavn:farvekode

Jeg opretter lige et nyt spørgsmål, du kan bare byde ind på det også =) så får du flere points hvis vi finder en løsning =)
Avatar billede snigeren Nybegynder
20. august 2007 - 17:24 #19
jeg ved ikke hvad fejlen var men efter jeg byggede hele scriptet op igen forfra virkede det =) så nu er det helt over and out =)
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