Admin Panel
Ik ben bezig voor een site een database gestuurde Admin panel te maken, maar stuit op een paar vragen.
Ik wil graag bij het ophalen van de info vanuit de database, foto's laten zien waarbij de bestandsnaam in de MySQL staat.
Nu is mijn vraag, hoe krijg ik al die data vanuit een ActionForm in de database, en hoe krijg ik deze data op het scherm geprojecteerd (incl. foto)
Grtz, GrinX
p.s. Ik verwacht niet dat iemand een script gaat schrijven, ik ben al heel blij als iemand me opweg helpt.
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:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?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
}
?>
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
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 )
Quote:
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.
Oké.. laat ik je wat op weg helpen met wat leuke scripts van deze site af:
1] Uploaden van bestanden naar een map op de server: http://www.phphulp.nl/php/scripts/2/96
2] Bestanden naar BLOB in MySQL: http://www.phphulp.nl/forum/showtopic.php?id=473&cat=1
Elwin
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.
Thx Again!
Grtz, GrinX
Elwin
Toppie service!
Grtz, GrinX
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-----
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
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";
}
?>
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?
Grtz, GrinX
Code (php)
1
2
3
2
3
<?php
$sql = "INSERT INTO products SET id = '', prod_name = '$art_name', prod_id = '$art_id', discription = '$art_discription', price = '$art_price', picfile = '$userfile'";
?>
$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:
Code (php)
1
2
3
2
3
<?
$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']"'";
?>
$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:
Code (php)
1
2
3
2
3
<?
$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]'";
?>
$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]
Gewijzigd op 02/04/2004 14:13:00 door Elwin - Fratsloos
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)
What could that be ?
Grtz, GrinX
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
Alleen voegtie de picfile niet toe, misschien zit daar het euvel dat het zo lang duurt??
Grtz GrinX
ps Server = Lycos
gratis van lycos of betaalt van lycos? want ik zit nu op gratis van lycos en bij mij duurt het connecten naar de database 2 a 3 minuten maar dat hoort niet als je betaald lycos hebt*tenminste vind dat niet kunnen:S* maar anders is het lycos
betaald lycos is redelijk snel (ik ken iemand met een account) maar de gratis versie is verschrikkelijk langzaam
Toch kan je voor redelijk goedkoop ergens een accountje nemen waar je zulke problemen niet snel zal hebben... Maar die keuze is voor ieder een eigen.
Elwin
en ik ben blij met lycos zover dat het gratis is en dat ik geen reclame heb maar aan die snelheid van vooral hun db kunnen ze wel wat doen.
Luie hond, download linux, installeer zelf een fatsoenlijke webserver.
Maar goed, zoals Adje zegt: steek een paar centjes in een bakkie van marktplaats en bouw je eigen server.
Elwin
Het gaat trouwens sneller nu, hij zal wel een opwarm tijd hebben ofsow...
Maar nog steeds rest mij de vraag waarom hij de picfile niet in de database zet.
Of moet het zijn dat je deze file renamed als je hem ergens naartoe wilt schrijven ???
Grtz, GrinX