Avatar billede salmanr Nybegynder
05. august 2004 - 16:31 Der er 18 kommentarer

Fejl i update af db!

her er koden:

<body>
<b>Gammel Data!</b>
<?
  //Db'en kontaktes!
  include("db.php");

  $result = mysql_query("SELECT * FROM users order by total_points desc");
  ?>
  <table border="1" cellspacing="3" cellpadding="3">
  <?
    echo "<tr><td><b>Dríver</b><td><b>Team</b><td><b>Poles</b><td><b>Completed Races</b><td><b>Total Points</b></tr>";
      while ($myrow = mysql_fetch_array($result))
      {
      echo "<tr><td>";
      echo $myrow["driver"];
      echo "</td>";
      echo "<td>";
      echo $myrow["team"];
      echo "</td>";
      echo "<td>";
      echo $myrow["poles"];
      echo "</td>";
      echo "<td>";
      echo $myrow["completed_races"];
      echo "</td>";
      echo "<td>";
      echo $myrow["total_points"];
      echo "</td>";
      }
  echo "</table>"; 
?>
<?
  $driver = $_POST['driver'];
?> 
<b>NY Data!</b>
<form name="input" method="post" action="data_change.php">
  <table width="100%" border="0" cellspacing="0" cellpadding="4">
    <tr>
      <td width="24%" align="left" valign="top">Poles!</td>
      <td width="76%"><input name="poles" type="text" id="poles"></td>
    </tr>
    <tr>
      <td align="left" valign="top">Completed Races</td>
      <td><input name="completed_races" type="text" id="completed_races"></td>
    </tr>
    <tr>
      <td align="left" valign="top">Total Points</td>
      <td><input name="total_points" type="text" id="total_points"></td>
    </tr>
      <tr>
      <td align="left" valign="top">&nbsp;</td>
      <td><input type="submit" name="Submit" value="Send"></td>
    </tr>
  </table>
</form>
<?
  //Lav variabler fra formen på siden.
  $poles = $_POST['poles'];
  $completed_races = $_POST['completed_races'];
  $total_points = $_POST['total_points'];
 
  $sql = mysql_query("UPDATE users SET poles='$poles' WHERE userid='$driver'");
     
?> 
 
</body>

Den opdaterer bare ikke hjemmesiden med den nye $poles, hvis jeg skriver et tal i stedet for $driver i update linjen virker det. Har testet om variablen $driver bliver sat til et tal, og det gør den. Hvad gør jeg forkert?

//SalmanR
Avatar billede michael_stim Ekspert
05. august 2004 - 16:37 #1
$sql = mysql_query("UPDATE users SET poles='$poles' WHERE userid=$driver");

Pröv at körr denne.
Avatar billede salmanr Nybegynder
05. august 2004 - 16:40 #2
Sker heller ikke noget.
Avatar billede michael_stim Ekspert
05. august 2004 - 16:42 #3
echo $sql;
Pröv at udskrive stringen og se hvad der står.
Avatar billede salmanr Nybegynder
05. august 2004 - 16:43 #4
Den skriver 1
Avatar billede michael_stim Ekspert
05. august 2004 - 16:43 #5
$sql = mysql_query("UPDATE users SET poles='$poles' WHERE userid='$driver'") or die(mysql_query());

Se om stringen er OK med denne.
Avatar billede salmanr Nybegynder
05. august 2004 - 16:45 #6
desværre sker heller ikke noget.
Avatar billede michael_stim Ekspert
05. august 2004 - 16:48 #7
Er der ikke noget der hedder int($driver), der sikrer at det er en int?
Avatar billede salmanr Nybegynder
05. august 2004 - 16:49 #8
ved ikke hvad du mener skal jeg laver $driver om til en integer før det virker?
Avatar billede michael_stim Ekspert
05. august 2004 - 16:56 #9
Virker det med et hårdkodet tal, så burde denne her altså også virke:
$sql = mysql_query("UPDATE users SET poles='$poles' WHERE userid=$driver") or die(mysql_query());

Hvor får du $_POST['driver']; fra?
Avatar billede salmanr Nybegynder
05. august 2004 - 16:57 #10
Den får fra denne side:

<body>
<?
  //Først kontakt til db'en!
  include("db.php");
  $sql="SELECT userid, driver FROM users";
$result=mysql_query($sql);

$options="";

while ($row=mysql_fetch_array($result)) {

    $id=$row["userid"];
    $driver=$row["driver"];
    $options.="<OPTION VALUE=\"$id\">".$driver;
}
?>

<div align="center">
<form name="driver" action="data_change.php" method="POST">
<SELECT NAME=driver>
<OPTION VALUE=0>DRIVERS!
<?=$options?>
</SELECT>
<br><input type="submit" value="Vælg!"><br>
</div>
</body>
</html>
Avatar billede michael_stim Ekspert
05. august 2004 - 17:04 #11
<?
if(isset($_POST['Submit'])){
  //Lav variabler fra formen på siden.
  $poles = $_POST['poles'];
  $completed_races = $_POST['completed_races'];
  $total_points = $_POST['total_points'];
 
  $sql = mysql_query("UPDATE users SET poles='$poles' WHERE userid=$driver") or die(mysql_query());
}     
?> 
Ved ikke om du har denne, men der skal vel ske noget når du trykker på submit.
Avatar billede salmanr Nybegynder
05. august 2004 - 17:07 #12
samme resultat.
Avatar billede michael_stim Ekspert
05. august 2004 - 17:09 #13
Pröv at se om den ikke opdaterer i databasen.
Avatar billede salmanr Nybegynder
05. august 2004 - 17:10 #14
gør den ikke, den opdater kun hvis jeg smider et tal ind på $driver's plads.
Avatar billede michael_stim Ekspert
05. august 2004 - 17:16 #15
$sql = mysql_query("UPDATE users SET poles='$poles' WHERE userid=int($driver)") or die(mysql_query());

Se om den köber denne, ellers ved jeg ikke hvad der er galt.
Avatar billede salmanr Nybegynder
05. august 2004 - 17:17 #16
desværre, du skal have tak though jeg må gribe det anderledes an.
Avatar billede michael_stim Ekspert
05. august 2004 - 17:19 #17
Er poles også et tal? så pröv denne:
$sql = mysql_query("UPDATE users SET poles=$poles WHERE userid=$driver") or die(mysql_query());
Avatar billede salmanr Nybegynder
05. august 2004 - 17:21 #18
heller ikke
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