Kan ikke lige gennemskue hvordan jeg gør det, man kan vel bare sige den skal indsætte i billedeX hvor X så skal have en stigende værdi pergang at det køres igennem.
start med en tæller, der er 0 i linjen echo "$file_name | filen er uploadet :-)<br>"; har du jo filnavn - lige herefter indsætter du læg en til tæller sql-kald med $file_name og billede(tæller)
hvis den enkelte id har billede1 - billede9 i en record (dårligt design), så skal du i stedet opbygge en sql-sætning, og til sidst (hvis der er data i) så udføre den.
For jeg tænker sådan her: if($copy){ echo "$file_name | filen er uploadet :-)!<br>"; $sql="UPDATE menu SET (billede1='$file_name') WHERE id=2"; }else{ echo "$file_name | kunne ikke uploades!<br>"; } }
den opdatere dog ikke rigtig noget i databasen...
udover det så skulle det gerne laves sådan at billede1 hedder billede2 og billede3 osv. per gang den bliver kørt igennem.
Det her er faktisk det jeg ville, det opdatere databsen: if($copy){ echo "$file_name | filen er uploadet :-)!<br>"; $r = mysql_query("UPDATE menu SET billede1='$file_name' WHERE id='2'"); }else{ echo "$file_name | kunne ikke uploades!<br>"; } }
Nu mangler jeg bare at få lavet en "tæller"? Således at SET billede automatisk stiger med en hvergang. Nogen der kan hjælpe mig med det? :)
if($copy){ for ($i=1; $i<=9; $i++) { echo "$file_name | filen er uploadet :-)!<br>";
$r = mysql_query("UPDATE menu SET billede$i='$file_name' WHERE id='4'");
}}else{ echo "$file_name | kunne ikke uploades!<br>"; } }
Ovenstående indsætter i databasen fra billede1-billede9 med filnavn. Problemet er at den ikke gør det per billede længere, men kun gør det for den første fil der er uploadet. Er der nogen der hjælpe mig med det? Dvs. der står i alle felter filnavn1 hele vejen hen, og den uploader kun 1 fil i stedet for 2.
Prøv at fortælle lidt mere om hvad du skal bruge dit system til, og giv os den kode der går forud for den kode du viser. Vis den kode du bruger til at oploade for eksemfile_namepel tre billeder, og hvordan du fylder værdier i variablerne $copy og $file_name. Og hvad vedrører mysql tabellen menu, hvorfor har du tre 'parallele' felter billed1, billed2, og billed3 med, sandsynligvis, samme slags data, nemlig navnet på et billed?
du er på gale veje if($copy){ echo "$file_name | filen er uploadet :-)<br>"; }else{ echo "$file_name | kunne ikke uploades<br>"; } } det skriver jo allerede alle linjer - så du skal ikke bruge et loop mere - bare få dette til at generere en sql-sætning ved siden af. Jeg kan stadig intet php - men prøv at se på noget i stil med:
$tal=0; $sql="select noget ..." if($copy){ echo "$file_name | filen er uploadet :-)<br>"; $tal=$tal+1; // der skal lige placeres lidt kode mere, så komma og AND er på plads) $sql=$sql."billede".$tal."=".$file_name }else{ echo "$file_name | kunne ikke uploades<br>"; } } if $tal>0(mysql_query($sql." WHERE id='4'");
Jeg har en tabel der således ud: id billede1 billede2 billede3 osv. op til billede9.
Jeg har prøvet at lege med et loop der skal uploade 1-9 billeder, og samtidig indsætte deres navn i min database. Så hvis jeg uploader 3 billeder: a.jpg b.jpg c.jpg
Så skal de begge 3 uploades, og indsættes i min database således: id billede1 billede2 billede 3 2 a.jpg b.jpg c.jpg.
Jeg håber du forstår. Som det er nu kører den hver eneste upload igennem 9 gange, og indsætter navnet 9 gange.. Men da den gør det på den måde er det altid det sidst uploadede billeder der kommer til at stå i alle 9 felter. så der kommer til at stå c.jpg i alle 9 billedefelter.
Der er rimelig mange sider inden. Det starter med en form hvor jeg indtaster nogle andre data'er som bliver skrevet til en database, her vælger jeg også hvor mange billeder jeg skal bruge. På næste side kommer der så fx. 3 upload form hvor jeg vælger min filer. Herefter kommer jeg til min næste side hvor den så gerne skulle uploade filerne til mappen uploads, og skrive filernes navn ind i databasen. Så ledes at jeg på senere tidspunkt kan kalde fx. id = 2 også får jeg alle de navne på de billeder jeg har liggende i uploads der hører til id = 2.
Selve siden der skal uploade billederne og skrive dens navne til databsen ser således ud: <? $host="localhost"; $username="x"; $password="x"; $db_name="x"; $tbl_name="x";
mysql_connect("$host", "$username", "$password")or die("Kan ikke forbinde til serveren "); mysql_select_db("$db_name")or die("Kan ikke forbinde til databasen"); session_start();
Ok, i #13 viser du lidt mere af sammenhængen. Jeg forstår, at du i en kode du ikke viser indfører du hvor mange billeder du vil uploade, for eksempel 7. Det antal placerer du i variabelen $uploadsNeeded, og så starter du en loop:
Hvis jeg har forstået det rigtigt, så indeholder variabelen $copy kun oplysninger om et enkelt billed. Hvis du derfor fortsætter som du gør:
for ($counter=1; $counter<=9; $counter++){ if($copy){...
Så får du, som du har konstateret, det samme billed behandlet ni gange. For at det skal give mening (hvis jeg har forstået det rigtigt) må det blive noget i denne retning:
if($copy) { echo "$file_name | filen er uploadet :-)!<br>"; $r = mysql_query(....den vender jeg tilbage til..); } else { echo "$file_name | kunne ikke uploades!<br>"; } }
Så forstår jeg ikke hvad du skal bruge det til. Noget kunne tyde på, at dine billeder hører sammen i sæt med fra et til ni billeder i hvert sæt. Hvert sæt har en id. Når du starter den kode du viser, så har du allerede dine billedsæt fyldt i en mysql tabel. Er det så således, at du vælger et sæt, for eksempel det med id = 4, og så vil du erstatte billederne i det sæt med nye billeder? I så fald, hvordan ved koden så hvilket sæt du vil erstatte? I den kode du viser skriver du direkte WHERE id='4', men det kan da næppe være hensigtsmæssigt. Så skal du til at forandre koden hver gang du vil erstatte et andet sæt. Du må på et eller andet tidspunkt tidligere i koden have valgt hvilket sæt du vil erstatte, så det valg må du placere i en variabel. Så kunne du starte således:
Mange tak for dit svar :) Jeg er helt med på hvad du skriver, så det kunne ikke være bedre. Godt forklaret!
Jeg har lige siddet og roddet lidt med det du skriver, og det giver mening for mig. Jeg har grebet situationen helt forkert an. Jeg benytte mig nu af din foreslåede tabelstruktur og det giver mening.
Her er følgende kode, som uploader og indsætter navne i db som jeg ønsker:
}else{ echo "$file_name | kunne ikke uploades!<br>"; } } ?>
Mit problem er så at $parent = "2"; jo stadig er statisk, det er udmærket godt klar over, det tænkte jeg på at jeg ville løse senere.
Jeg har nu lavet en tabel der hedder menu som indeholder mine andre data og en tabel der hedder billede som har din foreslåede tabelstruktur.
$parent skulle gerne antage samme værdi som det højeste id fra menu tabellen, da den bare kører auto increment. Kan jeg på nogen måde hente det? Dvs. har jeg på siden før indsat noget tekst i tabellen menu og min auto increment er nået til fx. id = 4 så skal $parent have værdien 4. Håber du forstår det, ellers så må du lige bede mig om at uddybe.
Tusinde tak for din tid og svar - det er virkelig brugtbart og lærerigt.
Du har to tabeller, menu og billeder. Du vil fra tid til anden uploade et antal billeder til billeder, og hver gang skal parent være lig med det højeste id i menu. Har jeg forstået det rigtigt?
Det har jeg følgende forslag til som jeg ikke har testet, men som jeg håber vil virke:
Ja du har forstået det helt korrekt. Og det virker helt præcist som det skal nu! Subqueryen gjorde jobbet. Smid et svar, du har virkelig været til stor hjælp!
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.