Intressant idee, är det möjligt? :) (PHP/SQL)

Permalänk
Medlem

Intressant idee, är det möjligt? :) (PHP/SQL)

Hallå!

Har en ganska svår idee men den kanske går att genomföra

Säg att man har en div på 400x400px den innehåller en bild

Nu ska man kunna ändra den bilden via en inloggningsida där man laddar upp en ny till själva divven, den nya bilden måste följa ett precis mått för att accepteras

Är väll någon form av väldigt enkel backendlösning med SQL/PHP skulle jag gissa på, men har verkligen INGEN aning hur man ska angripa problemet

Tankar och svar uppskattas fråga på, kanske beskrev lite luddigt

/ flashen

Visa signatur

▩ Monitor: ASUS Swift 27" @ 1440p/165Hz ▩ CPU: Ryzen 7700X ▩ Cooling: Corsair H170i ELITE 420mm ▩ GPU: MSI 3080 Ti SUPRIM X ▩ Memory: Corsair 32GB DDR5 Vengeance ▩ Motherboard: ASUS Crosshair X670E Hero ▩ M.2: Samsung 980 Pro ▩ PSU: Corsair HX1200 ▩ Chassi: Corsair 7000X ▩ Geekbench 6: 2903 ▩ Time Spy: 19 340

📷 Mina fotografier
👍 SweClike - Synligare färg på dina likes

Permalänk
Inaktiv

Du vill alltså kunna ladda upp en bild som sedan visas på startsidan?

Permalänk
Medlem
Skrivet av anon150287:

Du vill alltså kunna ladda upp en bild som sedan visas på startsidan?

Precis, och när jag laddar upp den ska den ersätta den resterande

Jag vill ha en varning om den överstiger ett visst antal pixlar i höjd och bredd eller har fel filnamn (sökvägen måste ju stämma hela tiden) (Går kanske att göra med JS?)

Antar att det är en del SQL kod och man måste sätta upp ett table där bilden ska sparas

Visa signatur

▩ Monitor: ASUS Swift 27" @ 1440p/165Hz ▩ CPU: Ryzen 7700X ▩ Cooling: Corsair H170i ELITE 420mm ▩ GPU: MSI 3080 Ti SUPRIM X ▩ Memory: Corsair 32GB DDR5 Vengeance ▩ Motherboard: ASUS Crosshair X670E Hero ▩ M.2: Samsung 980 Pro ▩ PSU: Corsair HX1200 ▩ Chassi: Corsair 7000X ▩ Geekbench 6: 2903 ▩ Time Spy: 19 340

📷 Mina fotografier
👍 SweClike - Synligare färg på dina likes

Permalänk
Medlem

Mycket möjligt med uteslutande php och låter som ett perfekt nybörjarprojekt efter att du satt igång med grunderna.
Sedan kan du lägga på SQL och bygga ett system som tillåter samma sak som tidigare men även sparar de äldre bilderna så en person med tillgång kan välja en äldre version av bilden.

Visa signatur

Cat funeral! Cat funeral!
>>> 112383 <<<

Permalänk
Medlem
Skrivet av flashen:

Precis, och när jag laddar upp den ska den ersätta den resterande

Jag vill ha en varning om den överstiger ett visst antal pixlar i höjd och bredd eller har fel filnamn (sökvägen måste ju stämma hela tiden) (Går kanske att göra med JS?)

Antar att det är en del SQL kod och man måste sätta upp ett table där bilden ska sparas

Du kan ju bara ändra namn på filen till vad du nu vill att den ska heta. Och om den bara ska ersättas rakt av räcker PHP, det behövs ingen SQL(om du nu inte vill kunna välja bild bland äldre bilder, då blir det nog smidigast med en databas).

Kolla här så ser du hur pass enkelt det är att ladda upp en bild: http://www.tizag.com/phpT/fileupload.php

EDIT: Lite sen ser jag.

Visa signatur

Citera eller nämn gärna mig (@ToJa92) om du svarar på något jag skrivit.
Uppskattar du eller blir hjälpt av ett inlägg jag skrivit är jag tacksam om du gillar det.

Permalänk
Inaktiv

EDIT: Lite sen

Du behöver inte använda MySQL om du inte vill. De två lösningarna jag ser som enklast är:

1. Du sparar bilden direkt på servern och länkar till den i CSSen. Aldrig gjort det själv men tror det ska finnas en input type i HTML där du kan välja filer. Sedan skickas det till servern som en vanlig $_POST. Du kan sedan mäta den i PHP med getimagesize(), är den inte 400x400 skriver du ut ett felmeddelande. Passar den så sparar du bara över den förgående filen.

2. Om du nu vill använda MySQL (eller valfri databas såklart) gör exakt som ovan fast istället kör du en base64_encode på filen och sparar den i databasen (det enda som behövs är en tabell med en kolumn av typen TEXT). Du kan sedan spara CSS filen som tex. "stylesheet.php" och skriva ut bilden såhär:

<?php header('Content-type: text/css'); ?> body { background: url('data:image/png;base64,<?php echo($base64); ?>');

Där $base64 är bilden (i base64) som du hämtar ur databasen och förutsatt att bilden är en PNG bild.

Andra metoden är mycket mer omständlig men kan vara en rolig grej om du vill lära dig eller testa det.

Permalänk
Medlem

Tack för alla svar!

Kan inte koppla mig till MySQL servern, har skickat mail till webbhotellet (har rätt på alla uppgifter)

Men under tiden har jag fixat så att det går att ladda upp en bild med PHP till en mapp och det går att skriva över den.

Hur kan man lägga till så att det kommer upp en varning om man försöker ladda upp en bild som inte har ett specifikt namn och storlek? Är det JS man ska använda då länkat till "submit"?

<form action="./upload.php" method="post" enctype="multipart/form-data"> <p> <label for="file">Select a file:</label> <input type="file" name="userfile" id="file"> <br /> <button>Upload File</button> <p> </form>

Visa signatur

▩ Monitor: ASUS Swift 27" @ 1440p/165Hz ▩ CPU: Ryzen 7700X ▩ Cooling: Corsair H170i ELITE 420mm ▩ GPU: MSI 3080 Ti SUPRIM X ▩ Memory: Corsair 32GB DDR5 Vengeance ▩ Motherboard: ASUS Crosshair X670E Hero ▩ M.2: Samsung 980 Pro ▩ PSU: Corsair HX1200 ▩ Chassi: Corsair 7000X ▩ Geekbench 6: 2903 ▩ Time Spy: 19 340

📷 Mina fotografier
👍 SweClike - Synligare färg på dina likes

Permalänk
Medlem
Skrivet av flashen:

Tack för alla svar!

Kan inte koppla mig till MySQL servern, har skickat mail till webbhotellet (har rätt på alla uppgifter)

Men under tiden har jag fixat så att det går att ladda upp en bild med PHP till en mapp och det går att skriva över den.

Hur kan man lägga till så att det kommer upp en varning om man försöker ladda upp en bild som inte har ett specifikt namn och storlek? Är det JS man ska använda då länkat till "submit"?

<form action="./upload.php" method="post" enctype="multipart/form-data"> <p> <label for="file">Select a file:</label> <input type="file" name="userfile" id="file"> <br /> <button>Upload File</button> <p> </form>

Kolla namn och storlek i PHP, så kan du skriva ut ett felmeddelande där. Om besökaren inte har javascript kan man ju ladda upp vad man vill.

Funktion att kolla på: http://php.net/manual/en/function.getimagesize.php

Minns jag rätt sparas filnamnet i en array så där blir det inte så svårt att kolla.

Visa signatur

Citera eller nämn gärna mig (@ToJa92) om du svarar på något jag skrivit.
Uppskattar du eller blir hjälpt av ett inlägg jag skrivit är jag tacksam om du gillar det.

Permalänk
Medlem
Skrivet av ToJa92:

Kolla namn och storlek i PHP, så kan du skriva ut ett felmeddelande där. Om besökaren inte har javascript kan man ju ladda upp vad man vill.

Funktion att kolla på: http://php.net/manual/en/function.getimagesize.php

Minns jag rätt sparas filnamnet i en array så där blir det inte så svårt att kolla.

Tackar

Nu har jag bara kvar att filnamnet måste stämma överens precis med det man laddar upp. Till exempel "test.png" går igenom men "test2.png" går inte

Antar att man ska regexa lite ^^

Aja så här långt all good

//Check max PX list($width, $height) = getimagesize($_FILES['userfile']['tmp_name']); if ($width > 216 || $height > 236) { echo "Maximum width and height exceeded."; exit(); }

Visa signatur

▩ Monitor: ASUS Swift 27" @ 1440p/165Hz ▩ CPU: Ryzen 7700X ▩ Cooling: Corsair H170i ELITE 420mm ▩ GPU: MSI 3080 Ti SUPRIM X ▩ Memory: Corsair 32GB DDR5 Vengeance ▩ Motherboard: ASUS Crosshair X670E Hero ▩ M.2: Samsung 980 Pro ▩ PSU: Corsair HX1200 ▩ Chassi: Corsair 7000X ▩ Geekbench 6: 2903 ▩ Time Spy: 19 340

📷 Mina fotografier
👍 SweClike - Synligare färg på dina likes

Permalänk
Medlem
Skrivet av flashen:

Tackar

Nu har jag bara kvar att filnamnet måste stämma överens precis med det man laddar upp. Till exempel "test.png" går igenom men "test2.png" går inte

Antar att man ska regexa lite ^^

Du kan göra en endswith-funktion

function endswith($string, $end) { return (substr($string, 0-strlen($end)) === $end); }

Används som:

if ( endswith($file, '.png') ) ... // png

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Skrivet av Teknocide:

Du kan göra en endswith-funktion

function endswith($string, $end) { return (substr($string, 0-strlen($end)) === $end); }

Används som:

if ( endswith($file, '.png') ) ... // png

Jo det förstår jag och har redan fixat så att man bara kan laddar upp enbart .png .gif

Tänker mer på filnamnet före: "test".png

Visa signatur

▩ Monitor: ASUS Swift 27" @ 1440p/165Hz ▩ CPU: Ryzen 7700X ▩ Cooling: Corsair H170i ELITE 420mm ▩ GPU: MSI 3080 Ti SUPRIM X ▩ Memory: Corsair 32GB DDR5 Vengeance ▩ Motherboard: ASUS Crosshair X670E Hero ▩ M.2: Samsung 980 Pro ▩ PSU: Corsair HX1200 ▩ Chassi: Corsair 7000X ▩ Geekbench 6: 2903 ▩ Time Spy: 19 340

📷 Mina fotografier
👍 SweClike - Synligare färg på dina likes

Permalänk
Medlem

Varför ska du testa det?

Visa signatur

Kom-pa-TI-bilitet

Permalänk

Är det inte smidigare att bara döpa om filen om namnet är fel?

Permalänk
Medlem

iofs ni har rätt

Har fått de mesta att fungera nu, tack för all hjälp!

Visa signatur

▩ Monitor: ASUS Swift 27" @ 1440p/165Hz ▩ CPU: Ryzen 7700X ▩ Cooling: Corsair H170i ELITE 420mm ▩ GPU: MSI 3080 Ti SUPRIM X ▩ Memory: Corsair 32GB DDR5 Vengeance ▩ Motherboard: ASUS Crosshair X670E Hero ▩ M.2: Samsung 980 Pro ▩ PSU: Corsair HX1200 ▩ Chassi: Corsair 7000X ▩ Geekbench 6: 2903 ▩ Time Spy: 19 340

📷 Mina fotografier
👍 SweClike - Synligare färg på dina likes