minulla siis on ongelma saada update toiminto toimimaan. tarkoitus olisi voida updata mysql tietokannassa olevaa tietoa, eli siis pitaisi paivittaa jonkun henkilon tietoja! tassa taman hetkinen koodini siita se ilmoittaa nain "UPDATE BikeData SET BikeNumber = 5 Query failed: Duplicate entry '5' for key 1" kiitos jo etukateen!!
<?php <html> <head> <title>BikeRent</title> </head> <body> <h1>UPDATE BIKE</h1> <?php $toUpdate=$_POST['toUpdate']; //muodostetaan yhteys tietokantapalvelimeen $yhteys = mysql_connect('localhost','project2','spain2005') or die("Yhdistäminen ei onnistunut!"); //valitaan tietokanta "testi" mysql_selectdb('BikeRent') or die("Tietokantaa ei löytynyt!"); //tähän tulevat tietokantakyselyt! if (!$toUpdate){ //1 Performing SQL query $query = 'SELECT * FROM BikeData'; $result = mysql_query($query) or die('Query failed1: ' . mysql_error()); // Printing results in HTML echo "<form action=UpdateBike2.php method=post>"; echo"<table cellspacing=0 cellpadding=4 border=1>"; echo"<tr>"; echo "<th>Update</th>"; echo "<th>BikeNumber</th>"; echo "<th>Discription</th>"; echo "<th>OwnerName</th>"; echo "<th>OwnerContact</th>"; echo "<th>Price</th>"; echo "<th>Photo</th>"; echo "</tr>"; while ($line = mysql_fetch_array($result, MYSQL_NUM)) { echo "\t<tr>\n"; echo "<td><input type=radio name=toUpdate value=$line[0]> </td>"; for ($i=0; $i<count($line);$i++){ echo "\t\t<td>$line[$i]</td>\n"; } echo "\t</tr>\n"; } echo "</table>\n"; // Free resultset mysql_free_result($result); }else { //1 Performing SQL query $query = "UPDATE BikeData SET BikeNumber = $toUpdate "; $result = mysql_query($query) or die('Query failed2: ' . mysql_error()); } // Closing connection mysql_close($yhteys); ?> <br> <input type=submit name=Send value=Send> <input type=reset name=Reset value=Reset> </form> <a href="index.htm">Back to mainmenu</a> </body> </html> ?>
olisi kiva tietää mitä taulu sisältää ja miten se on luotu
Veikkaan syyksi että koodisi ei toimi kuten olet speksannut, ellet sitten ole speksannut että päivityslomaketta käyttämällä päivitetään kaikkien pyörien tiedot identtisiksi.
UPDATEN perustaa:
UPDATE taulu SET arvot WHERE ehto
Jos jätät WHEREn pois, yrittää SQL päivittää kaikki tietueet. Koska olet tehnyt bikenumberista avainsarakkeen joka ei salli kaksoiskappaleita, kosahtaa kyselysi joko alkuunsa (jos kannasta löytyy jo sama numero) tai ensimmäisen tietueen päivityksen jälkeen.
taulu on luotu phpmyadminilla.. jos ny tuota tarkotit.sivuilla on myos lisays jossa voi lisata pyoria ja niita koskevat tiedot seka poisto jossa voi poistaa pyoria yms. mutta taa update jolla siis vois esim. lisata vaikka tarkempi kuvaus pyorasta tai uusi kuva yms. ei siis toimi alkuunkaan.
mitahan mun pitas laitta tohon ehto lauseeseen? tosiaan kaikkia kohtia pitas pystya muuttaan! paitsi tietysti tota bikenumberia joka tosiaan on avainsarake!
jannu82 kirjoitti:
tosiaan kaikkia kohtia pitas pystya muuttaan! paitsi tietysti tota bikenumberia joka tosiaan on avainsarake!
lauseesi on UPDATE BikeData SET BikeNumber = $toUpdate
ja yrität siis päivittää ainoaa mitä ei voi päivittää?
UPDATE BikeData SET Discription='$arvo1', OwnerName='$arvo2', OwnerContact='$arvo3' where BikeNumber = $toUpdate
kokeile ensin niitä skriptejä siellä myadminin sql-ruudussa. Jos ne toimii siellä --> laita php:n sekaan.
ja vielä sen verran että aikoinaan tuota myadminia kokeilin ja siellä oli mahdollisuus muuttaa jotain kannan arvoja. muutoksen jälkeen myadminin yläosa näytti tapahtuneen UPDATE skriptin pikku ikkunassa. En tiedä onko tämä juttu sitten mahdollista kaikissa myadminin versioissa?
sain ton nyt toimiin
<?php // Connecting, selecting database $link = mysql_connect('localhost', 'project', 'spain2005') or die('Could not connect (sin conexion): ' . mysql_error()); echo 'Connected successfully'; mysql_select_db('BikeRent') or die('Could not select database'); $query = 'SELECT * FROM BikeData'; $result = mysql_query($query) or die('Query failed: ' . mysql_error()); // Printing results in HTML echo "<form action=UpdateBike2.php method=post>"; echo "<table border=1>"; while ($line = mysql_fetch_array($result, MYSQL_NUM)) { echo "\t<tr>\n"; echo "<td><input type=radio name=update value=$line[0]> </td>"; for ($i=0; $i<count($line);$i++){ echo "\t\t<td>$line[$i]</td>\n"; } echo "\t</tr>\n"; } echo "</table>\n"; // Free resultset mysql_free_result($result); // Closing connection mysql_close($link); ?>
kiitoksia neuvoista
Aihe on jo aika vanha, joten et voi enää vastata siihen.