17. august 2009 - 14:45Der er
26 kommentarer og 1 løsning
Medtag flere felter i billedeuploader
Hej jeg har i et stykke tid førsøgt at få min billedeuploader til at tag flere felter med ned i databasen feks. en tekst til billedet, en webadresse til billedet samt brugerens id som fremkommer via et hiddenfild (id. Billedenavnet bliver godt nok oploadet til databasen og billedet til en mappe og det virker godt nok men problemet er at den hverken tager billedetekst , webadresse eller brugerns id med i databasen. min kode ser sådan ud....
<table width="100%" border="0" cellspacing="0" cellpadding="2"> <tr> <td> <label> <?php if (isset($_FILES['filnavn'])) {print "Fil der er blevet overført:{$_FILES['filnavn']['name']}<p>\n";
$query = "INSERT INTO dagenstilbud SET billede='".$_FILES['filnavn']['name']."'"; $Result1 = mysql_query($query, $cms) or die(mysql_error());
Jeg er klar over at problemet er i INSERT TO delen men har prøvet en masse ting og kan ikke få det til at virke, håber der er en som kan hjælpe mig smil smil. Felterne i databasen er. "id" som autoincrement "billede" til billedenavnet "tekst" til brugerens egen tekt til billedet "webadresse" "mainid" til brugerens id fra medlems tabelen.
$query="INSERT INTO dagenstilbud (id,tekst,webadresse,billede) VALUES ("$tekst,$webadr,$id,$_FILES['filnavn']['name']")" $Result1 = mysql_query($query, $cms) or die(mysql_error());
$tempfile = $_FILES['filnavn']['tmp_name']; $destination = "dagenstilbud/{$_FILES['filnavn']['name']}"; copy($tempfile, $destination); } men får følgende fejlmeddelse.
Parse error: syntax error, unexpected T_VARIABLE in /hsphere/local/home/dinno/handelslogen.dk/subforhandler/uploaddagenstilbud.php on line 119
Hvorfor har du sat "" omkring din values liste: ("$tekst,$webadr,$id,$_FILES['filnavn']['name']") den bør efter min mening se således ud:
($tekst,$webadr,$id,$_FILES['filnavn']['name'])
En anden til der undre mig, hvorfor gemmer du billederne i databasen, hvorfor ikke bare gemme dem på din server i en mappe og ligge et link ind i din database, det er den metode jeg bruger på goodbeer.dk, og der er over 34000 billeder. Jeg har ikke selv prøvet at bruge databasen til billeder, da jeg er blevet advaret imod at gøre det, da det kan gøre databasen langsom, hvis den indeholder for store mængder binær data. Tænk lige over at hvis du bare gemmer et link i din tabel, hvor hurtigt det er at hente linket ud og indsætte billedet via linket på den side hvor det skal vises, du slipper dermed også for at skulle gendanne billedet, inden at det skal vises.
Jeg har tidligere i dette forum skrevet lidt om hvordan jeg styre uploads af billeder. Skriv endelig hvis du har mere brug for hjælp.
<?php if (isset($_FILES['filnavn'])) {print "Fil der er blevet overført:{$_FILES['filnavn']['name']}<p>\n"; Hej igen det er prisværdig at der er nogen der vil bruge deres tid på at hjælpe os som ikke helt forstår de, det må gragivligt være lidt tungt ind i mellem smil smil.... Hele stykket ser nu sådan her ud og den bliver ved med at fortælle mig at jeg har et problem med en unexpected T_VARIABLE og ifølge det linje nr. den angiver skulle det være i dette stykke her
$query= "INSERT INTO dagenstilbud (id,tekst,webadresse,billede) VALUES="($tekst,$webadr,$id,$_FILES['filnavn']['name'])"";
For en god ordens skyld for du lige hele koden ...
HOV DER GIK ET ELLER ANDET GALT PRØVER LIGE IGEN.. Hej igen det er prisværdig at der er nogen der vil bruge deres tid på at hjælpe os som ikke helt forstår de, det må gragivligt være lidt tungt ind i mellem smil smil.... Hele stykket ser nu sådan her ud og den bliver ved med at fortælle mig at jeg har et problem med en unexpected T_VARIABLE og ifølge det linje nr. den angiver skulle det være i dette stykke her.
$query= "INSERT INTO dagenstilbud (id,tekst,webadresse,billede) VALUES="($tekst,$webadr,$id,$_FILES['filnavn']['name'])"";
For en god ordens skyld for du lige hele koden .
<?php if (isset($_FILES['filnavn'])) {print "Fil der er blevet overført:{$_FILES['filnavn']['name']}<p>\n";
Hov lige omkring hvor jeg ligger mit billede, jeg mener bestemt også at billedet bliver lagt i en mappe "dagenstilbud" og billedenavnet i databasen i tabelen som ligeledes heder "dagenstilbud" mvh dinno
Det har du da ret i, jeg kikkede bare ikke ordenligt efter.
Når du uploade alle billederne til en mappe på din server / webhotel, så bør du navngive filerne automatisk med et nr. som f.eks. hvis du tager billeder med et digital kamera, for ikke af få konflikt mellem dine billeder.
Så skal du jo bare søge efter det nyeste billede (det med højest ID) og give dit nye billede et filnavn der er et nr. højere, f.eks. pic1.jpg, pic2.jpg osv.
Sådan kand du finde id nr. på det nyeste billede:
$sql="SELECT id FROM dagenstilbud ORDER BY id DESC LIMIT 0,1"; $result = mysql_query($sql,$conn) or die(mysql_error()); $arr = mysql_fetch_array($result); $id=$arr['id'];
filnavn et kan du så danne på denne her måde: $filename='pic'.$id+1.'.'.$ext;
hvor $ext skal indeholde f.eks. "jpg", "png", "gif" alt efter dit filformat.
Du skal ikke indsætte $id i din VALUE streng, når id er sat til auto increment, men et tomt felt f.eks.: ('',$tekst,$webadr,osv.)
rækkefølgen på felterne i INTO og VALUES listen SKAL være den samme.
Det der går galt for dig, er at du afslutter din SQL streng med " efter VALUES= Prøv at indsætte denne der linie: $query= "INSERT INTO dagenstilbud (id,tekst,webadresse,billede) VALUES=('',$tekst,$webadr,$_FILES['filnavn']['name'])";
Du bør dog udskifte $_FILES['filnavn']['name'] med et filnavn som du er sikker på ikke findes i forvejen. Der er også andre ting du skal tænke på: Hvilke filformater vil du tillade og max fil størrelse.
$query= "INSERT INTO dagenstilbud (,tekst,webadresse,) VALUES=('',$tekst,$webadr,$_FILES['filnavn']['name'])";
men får beskeden
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /hsphere/local/home/dinno/handelslogen.dk/subforhandler/uploaddagenstilbud.php on line 114
linje 114 er den ovenoverskrevende kode..
ps. jeg har et hidden fild kaldet id som fanger brugerens id fra tabellen medlemmer og det skulle gerne lægges i mainid feltet i database tabellen "dagenstilbud"
du kunne hvis du vil bruge din tid på det, gå ind og opret en fiktiv bruger under FORHANDLER så ville det måske være nemmere at gennemsku hvor jeg vil hend... men tag venlist højde for at sitet langt fra er færdigt og derfor mangeltfuldt mvh dinno
I den første () skriver du (,tekst,webadresse,) det gør at mangler to felt navne I den sidste () har du fire felter med inputs, det skal der også være i den første. Du mangler id og filnavn.
Hej, Jeg er nød til at løbe snart, men lige en sidste kommentar: Hvor kommer $_FILES['billede'] fra ? tidligere brugte du $_FILES['filnavn'] hvis du ikke skriver id feltet i den første parentes, så behøver du det heller ikke i den anden parentes.
Jeg kan ikke helt følge hvad du bruger felterne til, men formoder at: id: billedets unikke id tekst: Beskrivelse af billedet billedet: filnavn webadr: er det mappen for billedet ligger ?
ha ha jeg roder sikkert lidt rund i det men hmmm jeg har sikkert misforstået et eller andet men id skulle gerne være brugerens idnummer fra tabelen medlemmer i databasen og bliver hentet via et hidden fild med MM_Username. tekst er en valgfri tekst som brugeren kan tilføje billedet og som går i kolonnen tekst i databasetabelen billede:filnavn skulle gerne være selve billedenavnet som kommer fra filefeltet i uoloaderen og går i kolonnen billede i tabellen dagenstilbud
En god måde at opbygge en database på er at give alle tabeller et unikt id felt af typen int med auto_increment sat til. De andre tabeller som der skal refereres til skal så have et felt i tabellen f.eks. userid som så er en kopi af id feltet fra user tabellen.
Det kan godt være at du ikke synes at du til alle tabeller har brug for et id, men tro mig på et eller andet tidspunkt så får du brug for denne nøgle til din tabel. Det er den nemmeste måde at finde frem til en helt bestemt række i tabellen.
Jeg synes du skulle læse lidt om hvordan man skruer PHP og MySql sammen samt forsøge med nogle sql kommandoer i din phpMyAdmin, der kan du jo afprøve de sql kommandoer du har tænkt dig at skrive, uden at skulle uploade en ny side til din server for hvert nyt forsøg.
Hvis jeg skal komme med et forslag til noget litteratur om emnet så kan jeg varmt anbefale forlaget sitepoint.com de har en rigtig god bog med titlen: Build Your Own Database Driven Web Site Using PHP & MySQL. Den har jeg lært rigtigt meget af.
hej lars.. alle mine tabeller har skam id med auto_increment sat til. og i stedet for userid har jeg et feldt som heder mainid hvor jeg ønsker en kopi af brugerens id fra medlemstabellen. Jeg arbejder i dreamweaver c3 som jeg finder ganske pragtfuldt om end det har sine begrænsninger smil så lidt kodening skal der til ind i mellem jeg kan sagtens sommensætte formularer bla. indmeldelses formular updates formular mm og hendte udtræk fra databellen mm. men kunne ikke lige finde ud af hvordan jeg sammensatte et filfild med andre indtastningsfeldter der i blandt et hiddenfild som jeg har kaldt id og som hendter brugerens id fra medlemstabellen i data basen...
men lars kan du ikke lige sende et svar for din forløbrige hjælp jeg har godt nok ikke fået det til at virke endnu da jeg stadig for den fejlmeddelse, men din hjælp har sat nogle ting på plads for mig ss teddy
jeg kan også lige give dig et overblik over hvordan den pågældende tabel i databasen ser ud... tabellen hedder "dagenstilbud" felterne i tabellen er som følgende. (id) sat til auto_increment. (billede) hvor billede navnet fra fildfeldtet skal stå (tekst) til en tekst som brugeren skriver i et tekstfelt i formularen til billedet (webadresse) som brugeren også tilføjer i formularen (dato) som er sat til timestamp (mainid) til brugerens id fra fra medlemstabellen som bliver hendtet via et hiddenfilt til formularen med funktionen MM_Username... håber det giver lidt mening... teddy
Jeg vil skam stadigvæk gerne hjælpe dig, jeg synes bare at det kører lidt i ring og jeg ved ikke helt hvordan jeg skal forklare det bedre end jeg har forsøgt end til nu.
Du kunne evt. emaile hele formularen til mig, så kan jeg kikke på den en aften.
Min email kan du finde på goodbeer.dk
Min holdning til dreamweaver og andre design værktøjer er at de er ganske gode til at komme i gang med, men på et tidspunkt så bliver en alm. editor med syntaks fremhævning faktisk at foretrække, når der blandes html,php,mysql,css og javascript sammen. Selv bruger jeg TSW Webcoder og en lokal php/mysql server på min pc til test. (det koster ingen ting sammenlignet med Dreamweaver) Jeg kan på dit site se at du bruger tabeller i stor stil til at opbygge dine sider, du burde bruge boks-modellen med style sheets i stedet for, i hvert fald til det overliggende som sidehoved, menu, sideindhold og hvilke andre blokke du kan dele siden op i. disse bokse kan du jo placere frit i forhold til siden og hinanden, og dermed nemmere styre sidens layout.
Jo du har helt ret ang wysiwyg editore så som dreamweaver mm ved siden af dreamweaver bruger jeg også zend, men når man endnu ikke er helt så ferm til kodeskrivning så er det såmen et god alternativ... og det er rigtigt at mit site er bygget op i tabeller jeg har brugt diver i stedet for men gik tilbage til tabeller... jeg siger mange tak og vil gerne benytte mig af at maile min formular til dig... mvh teddy
hej lars (min bedste ven smil smil) nej ømm kan det være fordi jeg mangler variabler for de sidste at jeg nu får denne fejl?
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /hsphere/local/home/dinno/handelslogen.dk/subforhandler/uploaddagenstilbud.php on line (113 Linje 13 er den kodestreng jeg har kopiert dir fra ovenover...
og nu spøger jeg sikkert dumt ss men variablerne represter de indtastningsfelterne eller kolonderne i database tabellen? mvh teddy
Okay nu har jeg snart ikke flere hår på hovedet he he det er delme frustrerende MEN har du lyst til lige at starte forfra? Så har jeg her en filuploader som virker og overføre billedet til mappen dagenstilbud og lige ledes overføre filnavnet til kolonden billede i tabellen dagenstilbud i databasen. Jeg har her lavet en variabel $tekst=$_POST['tekst'];
Kan og sidst men ikke mindst Har du lyst til at forklare mig pædagoisk hvordan jeg tilføjer indputfeltet "tekst" fra formularen. jeg ligger lige hele koden her.. håber du stadig er tålmodig smil mvh dinno
<?php if (isset($_FILES['filnavn'])) {print "Fil der er blevet overført: {$_FILES['filnavn']['name']}<p>\n"; $tekst=$_POST['tekst'];
$query = "INSERT INTO dagenstilbud SET billede= '".$_FILES['filnavn']['name']."'";
$Result1 = mysql_query($query, $cms) or die(mysql_error());
Hej lars, så kom den store dag hvor jeg fik det til at virke GRIN smil jeg har været en lille/stor klovn.. jeg mente at variablerne prensterede felterne i databasen men det er selvfølgelig indputsfelterne ss samt billedefilen satte jeg også ind som en variabel så nu ser det sådan her ud...
<?php if (isset($_FILES['filnavn'])) {print "Fil der er blevet overført: {$_FILES['filnavn']['name']}<p>\n"; $tekst=$_POST['tekst']; $webadr=$_POST['webadresse']; $userid=$_POST['userid']; $filnavn=$_FILES['filnavn']['name']; $query = "INSERT INTO dagenstilbud (billede, tekst, webadresse, mainid) VALUES ('$filnavn','$tekst','$webadr','$userid')";
$Result1 = mysql_query($query, $cms) or die(mysql_error());
Der var lige en ting jeg kom i tanke om, som du nok bør huske på: sql kan ikke lide at der kommer tegn som ' og " mm. i dine variable, så du bør til alle tekst felter tilføje denne her kommando:
$tekst=addslashes($_POST['tekst']); // den indsætter \ foran ' og "
og når du så henter teksten ud igen af tabellen skal du bruge denne her:
$tekst=stripslashes($SqlArr['tekst']); // så slettes \'erne igen.
Mvh. Lars
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.