<?php
$query = mysql_qyery("SELECT kolom1,kolom2 FROM tabel");
?>
Hierboven zie je een simpele query. Deze kan je helemaal uitbouwen met WHERE, ORDER BY, JOIN, etc. Daarvoor moet je even zoeken bij http://www.mysql.com.
Vervolgens moet je de resultaten laten zien. Alleen het plaatje dan:
Ik ga ervan uit dat je alleen de bestandsnaam in de database opgeslagen hebt. Na je query (waarin je dus de bestandsnaam ophaalt) krijg je zoiets:
<?php
while($result = mysql_fetch_row($query))
{
echo "<img src=\"$result[x]\">";
// $result[x] >> de x moet een getal worden, overeenkomstig aan de kolom in de tabel min één, dus bij de vierde kolom moet het een drie zijn
}
?>
De andere waarden, tekst ofzo, kan je door middel van een formulier laten zien, of in een tabel. Of iets anders... :D
Elwin
?
Onbekende gebruiker
01-04-2004 06:25
Hoi Elwin,
Bedankt voor je spoedige reactie!!
De eerste uitleg van je PHP was me al bekend, echter het 2e opent weer enkele ogen, ik wist niet dat dat zo makkelijk kon.
Echter denk ik dat ik iets te summier ben geweest in mijn vraagstelling.
Ik weet niet of het mogelijk is wat ik wil maken, daarom vraag ik het hier even.
Het gedeelte van de tekst van en naar de database schrijven is het probleem niet, dit lukt al (hiephoi).
Wat het einddoel is wat ik wil maken, is dat vanaf de C schijf een lijst met bestanden (.jpg) geprojecteerd wordt (dmv een Option Value form), en dat als ik 1 bestand (.jpg) aanklik deze dan op een bepaalde plaats van het scherm wordt geprojecteerd (img src) en dat hierbij de informatie geplaatst kan worden (productnaam, product_id, omschrijving, prijs en filenaam)
Dit alles dient dan (doormiddel van een submit button) te worden weggeschreven in de MySQL, en de foto dient dan in een bepaalde grote (400x300) op de server gezet te worden.
Ik weet het, voor een pas beginnend PHP-freakje een beetje hoog gegrepen misschien, maar wederom als bovenstaande ik verwacht niet dat iemand een script voor me gaat schrijven, ik wil het graag allemaal zelf ontdekken.
Al ben ik nog niet met alle commands van PHP bekend.
Grtz, GrinX
p.s. Dit is de info van de MySQL
CREATE TABLE products (
id tinyint(5) NOT NULL auto_increment,
prod_name varchar(20) NOT NULL default '',
prod_id tinyint(1) NOT NULL default '0',
discription varchar(255) NOT NULL default '',
price tinyint(5) NOT NULL default '0',
picfile varchar(10) NOT NULL default '',
PRIMARY KEY (id)
) TYPE=MyISAM;
Door middel van de prod_id wil ik aangeven om welk product het gaat (b.v. 1=ketting 2=vaas enzovoria )
Wat het einddoel is wat ik wil maken, is dat vanaf de C schijf een lijst met bestanden (.jpg) geprojecteerd
Hmmm.. Dus jij wilt een webserver op de computer van de gebruiker laten kijken? Kom dan maar eerst door de Vuurmuur heen.
Ik denk dat je het net ietsje anders zegt dan dat je bedoeld. Je kan een formulier maken (HTML) en daarin kan je een veld meenemen voor een bestand: (<input type="file">. Door middel van dit veld kan je op je computer (en dat mag dan een C zijn, maar ook een andere letter) een bestand selecteren.
Door de PHP code die je aanroept bij het submitten van je formulier (waarin je ook gelijk een productomschrijving ed. kan plaatsen) wordt het bestand in een map geplaatst, of als je moeilijk wilt doen, dan wordt het in een BLOB-veld in MySQL (of een andere DB) gedumpt.
Ergens vaag geloof ik dat er een mogelijkheid is voor PHP om een foto te vergroten/verkleinen voordat die wordt opgeslagen. Maar misschien doe je er beter aan om dat te doen vóór het uploaden. Scheelt (in geval van verkleinen) ook weer wat dataverkeer en ook processorkracht/geheugen van de webserver.
Kijk, dat is nou bruikbare hulp!
BLOB is voor mij nieuw, en ga ik zeker nog ergens testen, maar ik denk dat ik het voorlopig ga houden bij de 1e link.
Ik zal een dezer dagen proberen het script voor mijn bestemming te maken, en het vervolgens hier te posten.
Succes er mee! En als je vragen hebt, kom dan gerust terug.. :D
Elwin
?
Onbekende gebruiker
01-04-2004 21:15
Reken maar!!
Toppie service!
Grtz, GrinX
?
Onbekende gebruiker
02-04-2004 11:31
Hoppa, daar istie weer...
Ik heb het volgende geprobeerd (is testfase, dus let aub niet op de structuur)
----HTML BESTAND-----
<html>
<head><title>Upload Advert Info</title></head>
<body bgcolor="black">
<img src="plaatje.jpg" align="right">
<font color="white">
<br><br><br><br><br>
<form enctype="multipart/form-data" action="upload.php" method="post">
<p><input type="hidden" name="MAX_FILE_SIZE" value="51200" />
Selecteer de afbeelding welke bij de advertentie komt te staan: <br> <input name="userfile" type="file"><br />
<br><br>
Om welk product gaat het:<br>
<input type="radio" name="art_id" value="0" > Ketting <br>
<input type="radio" name="art_id" value="1" > Armband <br>
<input type="radio" name="art_id" value="2" > Ring <br>
<input type="radio" name="art_id" value="3" > Sculptuur <br>
<br><br>
Geef de naam van het product:<br>
<input type="tekst" name="art_name" size="25" maxlength="25"><br>
<br><br>
Geef een korte omschrijving van het product:<br>
<input type="tekst" name="art_discription" size="150" maxlength="150"><br>
<br><br>
Wat kost het product:<br>
€<input type="tekst" name="art_price" size="4">
<br>
<br>
<input type="submit" value="Verzenden">
<input type="reset" value="Wissen">
</p>
</form>
</body>
</font>
</html>
-----PHP BESTAND-----
<?
include("condb.php");
mysql_select_db('products');
$sql = "INSERT INTO products SET id = '', prod_name = '$art_name', prod_id = '$art_id', discription = '$art_discription', price = '$art_price', picfile = '$userfile'";
$res=mysql_query($sql);
if ($res)
{
echo "Toegevoegd";
}
?>
Gruwelijk zoals het werkt, alleen voegt hij de picfile en de price niet toe aan de database...
De database is dezelfde als wat ik hierboven heb gemaakt, alleen heb ik de tinyint aangepast naar int.
Wat doet deze PHP-Noob weer verkeerd?
Oké, even je query bekijken:
<?php
$sql = "INSERT INTO products SET id = '', prod_name = '$art_name', prod_id = '$art_id', discription = '$art_discription', price = '$art_price', picfile = '$userfile'";
?>
Je kolom id is auto_increment, die hoef je hier dus niet in te vullen. Voor de rest zeg je als variabele $formulierveld (art_name, art_id, etc). Aangezien dit een POST waarde is (komt uit het formulier) moet je deze variabelen anders aanroepen: $_POST['formulierveld']. Dit heeft te maken met supergolbals: http://nl2.php.net/variables.predefined
Je query moet dus even iets anders. De beste manier is zo:
<?
$sql = "INSERT INTO products SET prod_name = '"$_POST['art_name']"', prod_id = '"$_POST['art_id']"', discription = '"$_POST['art_discription']"', price = '"$_POST['art_price']"', picfile = '"$_POST['userfile']"'";
?>
Een snellere manier vind ik overigens deze:
<?
$sql = "INSERT INTO products SET prod_name = '$_POST[art_name]', prod_id = '$_POST[art_id]', discription = '$_POST[art_discription]', price = '$_POST[art_price]', picfile = '$_POST[userfile]'";
?>
Succes verder!
Elwin
[Edit: Foutje]
?
Onbekende gebruiker
02-04-2004 21:26
Heej Elwin,
En wederom sta ik met mijn mond vol tanden ;)
Het begint ergens op te lijken, echter de picfile zet hij nog steeds niet in de database.
Wat me overigens wel opvalt, is dat de MySQL ongeveer 2 minuten doet, voor dit beetje info toe te voegen aan de query, doe ik iets fout, of is die database zo traag ??
Bij de eerste manier welke je aangaf (had ik zelf ook al geprobeerd) gaf hij steeds parse error aan, bij de 2e manier schijnt alles te werken (op het toevoegen van de picfile)
ligt an de DB, de query is goed
zo lang je niet opeens een paar milioen rijen hoeft toe te voegen hoort het geen 2 minuten te duren (zelf getest :P)
tijdje geleden een db opgezet met ~3.000.000 rijen en het in de database zetten duurde ~8 minuten (ongeveer 600mb aan data)
dus er is volgens mij iets mis met die server