Hej hej wF'are!
Var ett tag sedan jag skrev här men jag hoppas att ni, som alltid annars, kan hjälpa mig.
Jag har ett nyhets/artikelscript där man kan ladda upp en bild, skriva en text och en rubrik. Problemet ligger i bilduppladdningen.
Scriptet jag använder är hämtat och jag har ändrat lite på det själv. Men iaf, det är så att när man laddar upp bilden så ändras namnet till det man skrev i rubriken. Jag vill ha så att "uppladdningsnamnet" eller namnet som bilden har lokalt på min dator är detsamma som efter att man skickat upp den, det ska alltså inte ändras. Hur gör man detta?
Och så lite kod...
<?PHP
mysql_connect("leheh", "trodde", "du"); /*Kontaktar databasen*/
mysql_select_db ("va"); /*Väljer databas */
$bildnamn = $_POST['namn'];
$pic = "bilder/".$bildnamn.".jpg";
$query = "INSERT INTO t_article (header, pic, text, av, date) values ('$_POST[namn]', '$pic', '$_POST[text]', '$_POST[av]', now())";
if (mysql_query($query)){
$image = $_FILES['bild'];
$size = getimagesize($image['tmp_name']);
$width = $size[0];
$height = $size[1];
if($width > 400 or $height > 600){
echo "Bilden är för stor! Max storleken är 400x600 pixlar.<br />";
echo "Bilden du laddade upp är <b>";
echo $width;
echo "</b>x<b>";
echo $height;
echo "</b><br />";
}
else {
move_uploaded_file($image['tmp_name'], $pic);
echo "Artikeln har laddats upp!<br>";
echo "<br /><a href='view_article.php'>kolla bilder</a>";
}
header('location: ladda_upp.php');
}
else{
print(mysql_error());
}
mysql_close();
?>
Men du bör nog vänta med att spara till databasen tills du konstaterat att bilden har rätt storlek, annars sparar du en uppgift om en bild som aldrig blivit lagrad på servern.
Och varför kopiera över $_FILES['bild'] till $image?
Detta tar bara en massa extra av servern, utan att tillföra skriptet någon som helst förenkling.
Tack du!! Det blev mkt bra!
Nu till mitt andra problem...
Från början heter ju input'en för header namn och den för bilden heter bild. Men nu vill jag byta namn på dessa till header resp. pic. Men när jag byter namn på dessa två, både i koden för formuläret och i koden för uppladdning funkar inte detta...
Här nedan kan ni jämföra kod som fungerar med kod som inte fungerar.
Fungerande:
$bildnamn = $_POST['namn'];
$pic = "bilder/".$_FILES['bild']['name'];
$query = "INSERT INTO t_article (header, pic, text, av, date) values ('$_POST[namn]', '$pic', '$_POST[text]', '$_POST[av]', now())";
if (mysql_query($query)){
$size = getimagesize($_FILES['bild']['tmp_name']);
$width = $size[0];
$height = $size[1];
if($width > 400 or $height > 600){
echo "Bilden är för stor! Max storleken är 400x600 pixlar.<br />";
echo "Bilden du laddade upp är <b>";
echo $width;
echo "</b>x<b>";
echo $height;
echo "</b><br />";
}
else {
move_uploaded_file($_FILES['bild']['tmp_name'], $pic);
echo "Artikeln har laddats upp!<br>";
echo "<br /><a href='view_article.php'>kolla bilder</a>";
}
header('location: ladda_upp.php');
}
else{
print(mysql_error());
}
mysql_close();
Ej fungerande:
$bildnamn = $_POST['header'];
$pic = "bilder/".$_FILES['pic']['name'];
$query = "INSERT INTO t_article (header, pic, text, av, date) values ('$_POST[header]', '$pic', '$_POST[text]', '$_POST[av]', now())";
if (mysql_query($query)){
$size = getimagesize($_FILES['pic']['tmp_name']);
$width = $size[0];
$height = $size[1];
if($width > 400 or $height > 600){
echo "Bilden är för stor! Max storleken är 400x600 pixlar.<br />";
echo "Bilden du laddade upp är <b>";
echo $width;
echo "</b>x<b>";
echo $height;
echo "</b><br />";
}
else {
move_uploaded_file($_FILES['pic']['tmp_name'], $pic);
echo "Artikeln har laddats upp!<br>";
echo "<br /><a href='view_article.php'>kolla bilder</a>";
}
header('location: ladda_upp.php');
}
else{
print(mysql_error());
}
mysql_close();
Ja min SQL-fråga fungerar. Men om jag byter namn på inputarna till något annat så funkar inte dessa två... Dock alla andra.
Varför är du tveksam om SQL-frågan?
Eftersom du har <input type="file" name="bild" />, så finns endast en $_FILES['bild'].
Ska du arbeta med $_FILES['pic'] så får du ändra till <input type="file" name="pic" />.
Antagligen är det inget fel på den, utan snarare på mina php-kunskaper, men jag tycker att det ser felaktigt ut när du har $_POST[header] (ex.) i SQL-frågan, utan att ha apostrofer runt fältnamnet header i post-arrayen.
Eftersom du har <input type="file" name="bild" />, så finns endast en $_FILES['bild'].
Ska du arbeta med $_FILES['pic'] så får du ändra till <input type="file" name="pic" />.
Ja men det är det jag menar. Att om jag även byter namn på min input till "pic" och även i den andra php-koden så fungerar det inte. Det fungerar bara om det står bild.
Vet ej, det där med värden gick helt plötsligt att ändra. Kan ju kanske vara att jag inte hade ändrat på precis alla ställen tidigare. Men nu funkar det klockrent!
Matte (!) du nämde tidigare att jag skulle vänta med att skicka till databasen innan jag kollat att bilden är av rätt storlek... Efter lite eftertanke kom jag på att det är ganska viktigt ju
SKulle du kunna hjälpa mig lite på hur jag ska ändra? Försökte ändra om lite i if-satserna men fick det inte att fungera.