Denna delen av 99 uppdateras inte längre utan har arkiverats inför framtiden som ett museum.
Här kan du läsa mer om varför.
Mac-nyheter hittar du på Macradion.com och forumet hittar du via Applebubblan.

CocoaMySQL och bilder

Tråden skapades och har fått 16 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Sundsvall
  • 2007-03-12 00:06

Hej!

Jag har nyligen börjat använda cocoamysql och har stött på ett problem.
Det är nämligen så att jag vill lägga in bildfiler i en tabell, men programmet avslutas plötsligt
så fort jag väljer en bild från en mapp.

Vet något hur man löser det?

  • Medlem
  • Lund
  • 2007-03-12 09:55

Kan MySQL hantera BLOB? Visste inte att man kunde lägga in binära objekt i MySQL. Tyvärr kan jag inte besvara din fråga.

Varför vill du plocka in bildfiler i databasen?

Personligen ser jag till att referera till bilderna (i filsystemet) istället för att lägga dem i databasen. För om du lägger dem i databasen, så kommer den bli stor och seg, samt om databasen kraschar så försvinner bilderna också.

  • Medlem
  • Sundsvall
  • 2007-03-12 15:04

Jaha, menar du att jag kan välja datatypen text och skriva in sökvägen till varje bild i denna fält?

Var är det jag ska utgå ifrån isf filsystemet, jag vet inte var cocoamysql sparar alla databaser så
jag kan ange rätt sökväg.

Alltså... är det bara jag som inte greppar... eller... hmm.
Alltså, som jag förstått det så är CocoaMySQL bara ett GUI till en MySQL databas. Själva programmet du använder kopplar alltså upp sig mot en MySQL-databas som du väljer. Så appen sparar inte några databaser någonstans. Du interagerar med en databas genom detta program.

  • Medlem
  • Sundsvall
  • 2007-03-12 17:21

Du har nog rätt Daniel, men jag vet fortfarande inte hur sökvägen kan se ut även om jag jag vet nu att databasen inte sparas någonstans..

Det finns inget generellt svar utan det beror på vad du använder databasen till. Vad vill du använda databasen till?

  • Medlem
  • Sundsvall
  • 2007-03-12 20:44

Databasen använder jag till en sida med en <select> lista där användare ska kunna välja ett datum och bilder visas för det datumet.

Databaser sparas visst någonstans (hade varit jobbigt vid omstarter annars), på min linuxburk ligger de under /var/lib/mysql. Däremot så är det så att du inte behöver veta det, iom att scriptet inte utgår från databasen när den använder sökvägarna, utan scriptet i sig. Mao, om du har bildfilerna i undermappen bilder så kan tabellen se ut såhär:

2007-01-02   bilder/bild1.jpg
2007-01-13   bilder/bild2.jpg
2007-01-07   bilder/bild3.jpg
2007-01-01   bilder/bild4.jpg
  • Medlem
  • Sundsvall
  • 2007-03-13 17:11

så när jag anropar, m.h.a php, kolumnen som innehåller sökvägen till en bild, kommer då denna bild att visas?

ska iofs testa snart..

Nej. Då skrivs bara sökvägen ut. En lösning kan vara något i stil med det här:

<img src="<?php echo $row["bild-url"]; ?>" alt="En bild" />
  • Medlem
  • Sundsvall
  • 2007-03-13 21:28

Marcus, jag förstår inte riktigt var du menar att den koden du skrev ska vara. Hoppas du kan titta på detta lite, för mitt lilla formulär i html sidan ser ut så här:

<div> 
<form action="show_thubms.php" target="thumbs">

<select name="bild_val">

 <option selected="selected">Välj datum</option>

 <option value="datum_1">2006-12-24</option>

</select>


<input type="submit" name="visa" value="Visa bilderna" />

</form>

och php-scriptet som är en annan fil ser ut så här:

<?php

if(isset($_POST["visa"]) && isset($_POST["bild_val"])){ //om knappen send är tryckt, fortsätt köra scriptet
  $connect = mysql_connect( "localhost", "web", "");  //skapar en länk till mysql servern
  mysql_select_db("bilder",$connect"); //talar om för mysql servern vilken databas den ska ansluta till
	$query = "SELECT date FROM bilder WHERE date=$_POST['datum_1']"; //väljer att hämta alla poster från tabellen bilder i databasen
	$result = mysql_query($query, $connect); //utför förfrågan och sparar resultatet ien variabel
	
	  //visning av databasens innehåll i en tabell
	while($row=mysql_fetch_row($result)){//hämtar datat från databasen
		
	print $row["bilder"]."<br>\n";	
		
	}
	mysql_close($connect); //avslutar kopplingen

 
}else{

include("bilder.html");  //inkluderar html sidan som innehållet formuläret
}
?>

Så var är det du menar att din kod skulle passa in här?

Mitt exempel var bara för att visa att om du använder metoden där du anger sökväg till bilden istället för att databasen innehåller bilden som du först var inne på så kommer MySQL att returnera sökvägen till bilden som en textsträng och inte själva bilden. Du måste fortfarande explicit ange i ditt skript att det är en bild. Det är inget som MySQL gör åt dig.

  • Medlem
  • Sundsvall
  • 2007-03-13 23:15

Va det här programmet gör mig irriterad!
antingen är det jag som inte vet hur man gör eller så är det programmet som är knasigt.
Med användaren root gick inte att skapa några databaser, kunde jag det en stund ja då kunde jag inte göra senare för då hade alla rättigheter som att skapa en tabell, radera eller lägga till en rad.
ok, jag skapar en ny användare då tänkte jag, så jag skapade en som heter web på localhost utan något lösen och det fungerade fint en stund, skapade en databs med ett par tabeller kopplade en php fil mot en av tabeller och allt gick fint.
Efter en stund när jag skulle lägga till en ny tabell eller en ny kolumn i en tabell då fick jag inte det eftersom jag har inte rättigheter som CREATE och ALTER t.ex.

ok, då ändrar jag på rättigheter från tools och edit user tänkte jag, men de rättigheterna togs bort igen lika fort.

Kan någon tala om för mig vad är det som händer och hur man löser det,så är jag mycket tacksam?

  • Medlem
  • Sundsvall
  • 2007-03-13 23:24

Ok Marcus, då får jag leta mera info om hur man gör det. Tack för ditt svar!

Kan någon moderator flytta den här tråden till "Utveckling" eller liknande? Den har ingenting med Mac OS X Server att göra.

Banaz:

Du har två alternativ för din bildapplikation:
1. Spara bilderna i MySQL-databasen.
2. Spara sökvägar (referenser) till bilderna

Beroende på vilken av lösningarna du väljer kommer dina script och din HTML att se olika ut.

Enklast är utan tvekan lösning nummer 2. Då kan du bara slänga in alla bilder i en mapp (eller ännu bättre i strukturerade mappar) på webbservern. Sedan sparar du mappnamnet och bildnamnet och skriver ut det i din HTML-kod. Så här:
<img src="http://minserver.se/2006-12-24/bild1.jpg">

Om du väljer lösning 1 måste du få ditt PHP-script att skicka tillbaka binärdatan som kommer ut från databasen och övertyga webbläsaren om att det är en bild den får så att den vet vad den ska göra med den. Ett bra tips är isf att titta på PHP-funktionen header().

Här finns intressant information:
http://www.php.net/ och http://www.mysql.com/

  • Medlem
  • Sundsvall
  • 2007-03-14 00:10

Tack Hendrix, då bra du förklarar .

1
Bevaka tråden