Avatar billede heden Nybegynder
28. september 2005 - 19:17 Der er 17 kommentarer og
1 løsning

Hjælp til rettelse?

Hej eksperter, kan i se fejlen her?:

      <select id="spgselector" name="spg" onChange="window.location.href='<?= $_SERVER['PHP_SELF'] ?>?spg='+this.value;">
          <? while($row = mysql_fetch_assoc($spgquery)) {
$id = $row['id'];
$spg = $row['spg'];
$sSelected = "";
if( intval($_GET['spg']) == $id ) $sSelected = "SELECTED";
print "<option value=\"".$id."\" ".$sSelected.">".$spg."</option>";
            }    ?>
      </select>
    </div></td>
    </tr>
</table> 
<div align="center">    </div>
<?php
if(isset($_POST['submit']))
    {
include 'db.php';
$svar = htmlspecialchars(addslashes($_POST['svar']));
$id = $_GET['id'];
$id = $spg_id;
mysql_query("INSERT INTO spg_svar (spg_id, svar) VALUES ('$svar, $spg_id')") or die(mysql_error());
echo "<div align=\"center\" class=\"tekst_linkThin\">Svarene blev oprettet</div>";
    }
?>
<form action="opret_svar.php" method="post" name="nyhed" enctype="multipart/form-data">
  <table width="90%"  border="0" align="center" cellpadding="0" cellspacing="0">
      <tr>
        <td width="22%" class="style2">Svar muligheder: </td>
        <td width="57%"><div align="center" class="style2"></div></td>
        <td width="21%"><span class="style2">Det korrekte svar: </span></td>
      </tr>
      <tr>
        <td class="style2">Svar:</td>
        <td><input name="svar" type="text" id="svar" size="50"></td>
        <td><div align="center">
          <input type="radio" name="korrekten" value="korrekten">
            </div></td>
      </tr>
      <tr>
        <td colspan="3"><div align="center">
            <input type="submit" id="submit" name="submit" value="Opret svar">
        </div></td>
      </tr>
    </table>
</form>

den skriver:

Column count doesn't match value count at row 1

når jeg trykker på "submit"
Avatar billede nielle Nybegynder
28. september 2005 - 19:29 #1
Prøv med dette:

if (isset($_POST['submit']))
{
    include 'db.php';
    $svar = htmlspecialchars(addslashes($_POST['svar']));

    // Disse to linjer ser forkerte ud...
    $id = $_GET['id'];
    $id = $spg_id;

    $sql = "INSERT INTO spg_svar (spg_id, svar) VALUES ('$svar, $spg_id')";
    echo "DEBUG: " . $sql . "<br>";
    mysql_query() or die(mysql_error());
    echo "<div align=\"center\" class=\"tekst_linkThin\">Svarene blev oprettet</div>";
}
Avatar billede nielle Nybegynder
28. september 2005 - 19:30 #2
I øvrigt bør du give din submit-knap et andet navn end "submit". Det er bare at bede om problemer i andre browsere at gøre dette.
Avatar billede heden Nybegynder
28. september 2005 - 19:38 #3
ja det er også de to linjer kan jeg se..

DEBUG: INSERT INTO spg_svar (spg_id, svar) VALUES ('svar nr 1., ')

Warning: Wrong parameter count for mysql_query() in D:\inetpub\vhosts\wi2.ots.dk\subdomains\casper1\httpdocs\spg\admin\opret_svar.php on line 97


Men det er fordi jeg skal bruge det id som der er valgt længere oppe i select boxen.
det skal nemlig sættes ind i det felt som hedder "svar_id"
Avatar billede nielle Nybegynder
28. september 2005 - 19:41 #4
Det id som har været brugt længere oppe i select'en er ikke længere tistede når du submitter.

I øvrigt skal din kode vist være:

VALUES ('$svar', $spg_id)";

- i stedet for:

VALUES ('$svar, $spg_id')";
Avatar billede heden Nybegynder
28. september 2005 - 19:43 #5
har du en løsning på det med id'et? for det er vigtigt jeg får det med når jeg ligger det op.
Avatar billede nielle Nybegynder
28. september 2005 - 19:45 #6
Hvis du skal have id'et videre med nåt du submitter formen så skal det inkluderes i denne. Dette gøres normalt ved at tilføje et hidden-felt i formen:

<input type="hidden" name="id" value="<?=$id?>">
Avatar billede heden Nybegynder
28. september 2005 - 20:03 #7
lige nu ser det sådan her ud..

<?
if (isset($_POST['op']))
{
    include 'db.php';
    $svar = htmlspecialchars(addslashes($_POST['svar']));
    $spg_id = $_POST['spg_id'];
    $sql = "INSERT INTO spg_svar (svar, spg_id) VALUES ('$svar', '$spg_id')" or die(mysql_error());
    echo "<div align=\"center\" class=\"tekst_linkThin\">Svaret blev oprettet</div>";
}
?>
<form action="opret_svar.php" method="post" name="nyhed" enctype="multipart/form-data">
  <table width="90%"  border="0" align="center" cellpadding="0" cellspacing="0">
      <tr>
        <td width="22%" class="style2">Svar muligheder: </td>
        <td width="57%"><div align="center" class="style2"></div></td>
        <td width="21%"><span class="style2">Det korrekte svar: </span></td>
      </tr>
      <tr>
        <td class="style2">Svar:</td>
        <td><input name="svar" type="text" id="svar" size="50">
        </td>
        <td><div align="center">
          <input type="radio" name="korrekten" value="korrekten">
            </div></td>
      </tr>
      <tr>
        <td colspan="3"><div align="center"><input type="hidden" name="spg_id" value="<?=$id?>"> </div></td>
      </tr>
      <tr>
        <td colspan="3"><div align="center">
          <input type="submit" id="op" name="op" value="Opret svar">
        </div></td>
      </tr>
    </table>
</form>

men det vil ik virke. den fortæller fint den har lagt det op. men har intet lagt op hehe.
Avatar billede nielle Nybegynder
28. september 2005 - 20:07 #8
<?
if (isset($_POST['op']))
{
    include 'db.php';
    $svar = htmlspecialchars(addslashes($_POST['svar']));
    $spg_id = $_POST['spg_id'];
    $sql = "INSERT INTO spg_svar (svar, spg_id) VALUES ('$svar', '$spg_id')";
    mysql_query($sql) or die(mysql_error());
    echo "<div align=\"center\" class=\"tekst_linkThin\">Svaret blev oprettet</div>";
}
?>
Avatar billede heden Nybegynder
28. september 2005 - 20:13 #9
ja nu ligger den fint op.. men den tager ik id'et som er valgt i select boxen :'(
Avatar billede nielle Nybegynder
28. september 2005 - 20:17 #10
Hvorfor har du egentlig placeret din <select> uden for din form?
Avatar billede heden Nybegynder
28. september 2005 - 20:19 #11
fordi formen er kommet senere :) .. skal jeg sætte den ind i ?
Avatar billede nielle Nybegynder
28. september 2005 - 20:28 #12
Det ville da være meget naturligt at gøre det på den måde - og så at fjerne onChange-koden.
Avatar billede heden Nybegynder
28. september 2005 - 20:50 #13
nu ser den sådan herud:

<?
if (isset($_POST['op']))
{
    include 'db.php';
    $svar = htmlspecialchars(addslashes($_POST['svar']));
    $spg_id = $_POST['spg_id'];
    $sql = "INSERT INTO spg_svar (svar, spg_id) VALUES ('$svar', '$spg_id')";
    mysql_query($sql) or die(mysql_error());
    echo "<div align=\"center\" class=\"tekst_linkThin\">Svaret blev oprettet</div>";
}
?>
<form action="opret_svar.php" method="post" name="nyhed" enctype="multipart/form-data">
  <table width="90%"  border="0" align="center" cellpadding="0" cellspacing="0">
      <tr>
        <td width="22%" class="style2">&nbsp;</td>
        <td width="57%"><div align="center" class="style2">v&aelig;lge sp&oslash;rgsm&aring;l: </div></td>
        <td width="21%">&nbsp;</td>
      </tr>
      <tr>
        <td class="style2">&nbsp;</td>
        <td>        <div align="center"><?php
    include "db.php";
    $spg = array();
    $spgquery = mysql_query("SELECT * FROM spg_spg") or die (mysql_error()); ?>
      <select id="spgselector" name="spg">
          <? while($row = mysql_fetch_assoc($spgquery)) {
$id = $row['id'];
$spg = $row['spg'];
$sSelected = "";
if( intval($_GET['spg']) == $id ) $sSelected = "SELECTED";
print "<option value=\"".$id."\" ".$sSelected.">".$spg."</option>";
            }    ?>
      </select></div></td>
        <td><div align="center"></div></td>
      </tr>
      <tr>
        <td><div align="left"><span class="style2">Svar muligheder: </span></div></td>
        <td>&nbsp;</td>
        <td><div align="center"><span class="style2">Det korrekte svar:</span>
        </div></td>
      </tr>
      <tr>
        <td><div align="left"><span class="style2">Svar:</span>        </div></td>
        <td><input name="svar" type="text" id="svar" size="50"></td>
        <td><input type="radio" name="korrekten" value="korrekten"></td>
      </tr>
      <tr>
        <td colspan="3"><div align="center">
          <input type="hidden" name="spg_id" value="<?=$id?>">
        </div></td>
      </tr>
      <tr>
        <td colspan="3"><div align="center">
          <input type="submit" id="op" name="op" value="Opret svar">
        </div></td>
      </tr>
    </table>
</form>

men ligger stadig ikke det ønskede id op.. men hvis det ik kan komme til at virke må jeg lave en side der henter alle id'erne og spørgsmålene og sætter dem i en række ned at en side, så kan man klikke på det spørgsmål for at gå ind og skrive følgende svar ind, for så følger id'et med ind
Avatar billede nielle Nybegynder
28. september 2005 - 21:15 #14
Prøv denne version:

<form action="<?= $_SERVER['PHP_SELF'] ?>" method="post">
    <table width="90%"  border="0" align="center" cellpadding="0" cellspacing="0">
        <tr>
            <td width="22%" class="style2">&nbsp;</td>
            <td width="57%"><div align="center" class="style2">v&aelig;lge sp&oslash;rgsm&aring;l: </div></td>
            <td width="21%">&nbsp;</td>
        </tr>
        <tr>
            <td class="style2">&nbsp;</td>
            <td><div align="center">
<?
include "db.php";
$spg = array();
$spgquery = mysql_query("SELECT * FROM spg_spg") or die (mysql_error());
?>
                <select id="spgselector" name="spg">
<?
while ($row = mysql_fetch_assoc($spgquery))
{
    $id = $row['id'];
    $spg = $row['spg'];
    $sSelected = (intval($_GET['spg']) == $id) ? " SELECTED" : "";
    print "                <option value=\"" . $id . "\"" . $sSelected . ">" . $spg . "</option>";
}?>
                </select></div></td>
            <td><div align="center"></div></td>
        </tr>
        <tr>
            <td><div align="left"><span class="style2">Svar muligheder: </span></div></td>
            <td>&nbsp;</td>
            <td><div align="center"><span class="style2">Det korrekte svar:</span></div></td>
        </tr>
        <tr>
            <td><div align="left"><span class="style2">Svar:</span></div></td>
            <td><input name="svar" type="text" id="svar" size="50"></td>
            <td><input type="radio" name="korrekten" value="korrekten"></td>
        </tr>
        <tr>
            <td colspan="3"><div align="center"><input type="hidden" name="spg_id" value="<?=$id?>"></div></td>
        </tr>
        <tr>
            <td colspan="3"><div align="center"><input type="submit" id="op" name="op" value="Opret svar"></div></td>
        </tr>
    </table>
</form>

<?
if (isset($_POST['op']))
{
    include 'db.php';

    $spg_id = $_POST['spg'];
    $svar = htmlspecialchars(addslashes($_POST['svar']));
   
    $sql = "INSERT INTO spg_svar (svar, spg_id) VALUES ('$svar', '$spg_id')";
    mysql_query($sql) or die(mysql_error());

    echo "<div align=\"center\" class=\"tekst_linkThin\">Svaret blev oprettet</div>";
}
?>
Avatar billede heden Nybegynder
28. september 2005 - 21:51 #15
det virker ja :D.. smider du et svar
Avatar billede nielle Nybegynder
28. september 2005 - 21:53 #16
Svar :^)
Avatar billede heden Nybegynder
28. september 2005 - 22:02 #17
jeg opretter lige en udvidelse af dette spørgsmål om lidt, hvis du skulle have lyst ;)
Avatar billede heden Nybegynder
28. september 2005 - 22:02 #18
-lukket-
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