Avatar billede glofp Nybegynder
30. maj 2011 - 18:12 Der er 3 kommentarer og
1 løsning

Update crt. Insert

Hej!
Jeg har et, for mig, spøjst problem med en opdatering af en MySqlDatabase.

(NB  -  jeg benytter Win7, PHP 5 (?), og MySql 5.1.141 og Apache)
Jeg har oprettet en form, og et PHP script til, at overføre et (ell. flere) image/s til en fil i et bibliotek, og derefter "putte" navnet ind i et felt i en MySql.

Det er lykkedes mig, via cut/paste, at oprette såvel form som php.script til, at INDSÆTTE mit image (også 2)i såvel bibliotek som MySql, men når jeg forsøget at UPDATE en bestående tabel med henvisnisning til et id (Where sætning) sker der ikke en sk**, og dog billedet indsættes i biblioteket, men intet i databasen og ingen fejlmeddelelser.
Hvad sker der.
Jeg indsætter uddrag af min PHP kode herunder idet, jeg kan oplyse at bibliotek til img er "uploads", og tabel til fremtididg UPDATE er "users":

Håber meget én af jer dygtige mennesker kan hjælpe.

************KODE****************
-
-
-
-

if ( $size > MAX_SIZE * 1024 )
 
echo '<h1>You have exceeded the size limit!</h1>' ;
$errors = 1 ;
}
//giver et unikt navn, f., eks. UNIX timestamp
$image1_name = time (). '.' . $extension ;
//Det nye navn indeholder nu dir. hvor img. er gemt (usergallery/)
$newname1 = "usergallery/" . $image1_name ;
                    //Fil nr. 2
{
$image2 = $_FILES [ 'image2' ][ 'name' ];
if ( $image2 !="" )
{
$filename = stripslashes ( $_FILES [ 'image2' ][ 'name' ]);
$extension = getExtension ( $filename );
$extension = strtolower ( $extension );
if (( $extension != "jpg" ) && ( $extension != "jpeg" ) && ( $extension != "png" ) && ( $extension != "gif" ))
{
echo '<h1>Unknown extension!</h1>' ;
$errors = 1 ;
}
else
{
$size = filesize ( $_FILES [ 'image2' ][ 'tmp_name' ]);
if ( $size > MAX_SIZE * 1024 )
{
echo '<h1>You have exceeded the size limit!</h1>' ;
$errors = 1 ;
}
$image2_name = time (). '.' . $extension ;
$newname2 = "usergallery/" . $image2_name ;
  $query = "INSERT INTO img (id, pict1, pict2)  VALUES ('$_SESSION[user_id]' , '$newname1', '$newname2')";

  mysql_query($query);

$copied = copy ( $_FILES [ 'image1' ][ 'tmp_name' ], $newname1 );
$copied = copy ( $_FILES [ 'image2' ][ 'tmp_name' ], $newname2 );

if (! $copied )
{
echo '<h1>Copy unsuccessfull!</h1>' ;
-
-
-
-
30. maj 2011 - 19:01 #1
Du siger, at du med koden uden problemer kan INDSÆTTE i mysql tabellen img, men når du prøver at UPDATE 'sker der ikke en sk**'.  Men det udsnit af koden du viser indeholder ikke nogen UPDATE kode.  Det du vil opnå med UPDATE er sandsynligvis at give et bestående image nye navne, så der må være noget kode i retning af

$query! = "UPDATE img SET pict1 = $x, pict2 = $y WHERE id = $z";
mysql_query($query);

Så vis os også den del af koden.  Så er der chance for at nogen kan hjælpe.
Avatar billede glofp Nybegynder
30. maj 2011 - 19:29 #2
Sorry!

Den eneste ændring jeg foretager til min kode er:

}
$image2_name = time (). '.' . $extension ;
$newname2 = "usergallery/" . $image2_name ;

  $query = "UPDATE img SET ([NAVN I TABELLEN]pict1, [NAVN I TABELLEN]pict2)  VALUES ('$newname1', '$newname2') WHERE '$_SESSION[user_id]' ";";

  mysql_query($query);

$copied = copy ( $_FILES [ 'image1' ][ 'tmp_name' ], $newname1 );
$copied = copy ( $_FILES [ 'image2' ][ 'tmp_name' ], $newname2 );
-----------

Her kommer hele koden, både til min Form og mit Script:
*****FORM*****
<?php session_start();?>
<?php include("database.php"); ?>
<?php
if($_SESSION["logged_in"] == 1)

<html
{
  $userQuery = mysql_query("SELECT id, brugernavn, fornavn FROM users WHERE id='$_SESSION[user_id]'");
  $userArray = mysql_fetch_array($userQuery);
     

  echo "<b>
  </a><h3> </a> </a> </a> </a> </a> </a> </a> </a> 
  Hej " . $userArray["fornavn"] . "!</h3>";
 
}
?>

<form name="newad" method="post" enctype="multipart/form-data" action="up1.php">
<table>
<tr><td>Billede 1<input type="file" name="image1"></td></tr>
<input type="hidden" name="img_id" value="$_SESSION['img_id']" />

<tr><td>Billede 2<input type="file" name="image2"></td></tr>
<input type="hidden" name="img_id" value="$_SESSION['img_id']" />



<tr><td><input name="Submit" type="submit" value="Upload image"></td></tr>
</table>
</form>

</html>

*****SCRIPT*****

<?php session_start (); ?>
<?php include("database.php"); ?>
<?php
if (isset($_REQUEST["id"]))
  {
    $id = $_REQUEST["id"];
    $sql = "SELECT fornavn, efternavn, brugernavn, password, adr, cty, kto, pimage FROM users WHERE id = " . $id . ";";
    $resultat = mysql_query($sql);
    $post = mysql_fetch_array($resultat);
  }
?>


<?php
define ( "MAX_SIZE" , "100000" );
function getExtension ( $str ) {
$i = strrpos ( $str , "." );
if (! $i ) { return "" ; }
$l = strlen ( $str ) - $i ;
$ext = substr ( $str , $i + 1 , $l );
return $ext ;
}
$errors = 0 ;
if(isset( $_POST [ 'Submit' ]))
{
$image1 = $_FILES [ 'image1' ][ 'name' ];
if ( $image1 )

$filename = stripslashes ( $_FILES [ 'image1' ][ 'name' ]);
$extension = getExtension ( $filename );
$extension = strtolower ( $extension );
if (( $extension != "jpg" ) && ( $extension != "jpeg" ) && ( $extension != "png" ) && ( $extension != "gif" ))

echo '<h1>Unknown extension!</h1>' ;
$errors = 1 ;
}
else
{
$size = filesize ( $_FILES [ 'image1' ][ 'tmp_name' ]);
if ( $size > MAX_SIZE * 1024 )
 
echo '<h1>You have exceeded the size limit!</h1>' ;
$errors = 1 ;
}
$image1_name = time (). '.' . $extension ;
$newname1 = "usergallery/" . $image1_name ;

//Fil nr. 2


{
$image2 = $_FILES [ 'image2' ][ 'name' ];
if ( $image2 !="" )
{
$filename = stripslashes ( $_FILES [ 'image2' ][ 'name' ]);
$extension = getExtension ( $filename );
$extension = strtolower ( $extension );
if (( $extension != "jpg" ) && ( $extension != "jpeg" ) && ( $extension != "png" ) && ( $extension != "gif" ))
{
echo '<h1>Unknown extension!</h1>' ;
$errors = 1 ;
}
else
{
$size = filesize ( $_FILES [ 'image2' ][ 'tmp_name' ]);
if ( $size > MAX_SIZE * 1024 )
{
echo '<h1>You have exceeded the size limit!</h1>' ;
$errors = 1 ;
}

$image2_name = time (). '.' . $extension ;
$newname2 = "usergallery/" . $image2_name ;






  $query = "INSERT INTO img (id, pict1, pict2)  VALUES ('$_SESSION[user_id]' , '$newname1', '$newname2')";

  mysql_query($query);



$copied = copy ( $_FILES [ 'image1' ][ 'tmp_name' ], $newname1 );
$copied = copy ( $_FILES [ 'image2' ][ 'tmp_name' ], $newname2 );

if (! $copied )
{
echo '<h1>Copy unsuccessfull!</h1>' ;
$errors = 1 ;
}
if(isset( $_POST [ 'Submit' ]) && ! $errors )
{
echo "<h1>File Uploaded Successfully!</h1>" ;
}
}}}
?>
30. maj 2011 - 20:58 #3
Mysql tabellen det drejer sig om hedder img og har tre kolonner, id, pict1, og pict2, ikke sandt?  For en bestaaende række i tabellen med et bestemt id vil du indsætte et nyt navn for pict1 og et nyt navn for pict2.  Du prøver at bruge en UPDATE syntaks der ligner INSERT syntaksen.  Det er ikke korrekt.  Prøv at ændre denne linie:

  $query = "UPDATE img SET ([NAVN I TABELLEN]pict1, [NAVN I TABELLEN]pict2)  VALUES ('$newname1', '$newname2') WHERE '$_SESSION[user_id]' ";";

til dette:

$query = "UPDATE img SET pict1 = '$newname1', pict2 = '$newname2' WHERE id = '$_SESSION[user_id]';

Her er et link til den korrekte UPDATE syntaks:

http://dev.mysql.com/doc/refman/5.0/en/update.html
Avatar billede glofp Nybegynder
30. maj 2011 - 21:35 #4
TAK!

You saved my day.

Det virkede bare. Jeg bvar af den overbevisning, at det var nok at skrive det på den anden måde, selv om jeg havde set den måde du anbefalede mig, men sådan er der jo desværre så meget.

Som sagt du skal have så mange tak.

200 points er på vej til dig når jeg lige igen finder ud af, hvordan.
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
Computerworld tilbyder specialiserede kurser i database-management

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