herdon Skrevet 16. oktober 2012 Del Skrevet 16. oktober 2012 Hei. Jeg har denne koden: <html> <head> <title>Lastet opp fil</title> </head> <body> <?php $temp_fil = $_FILES['filbane']['tmp_name']; $filnavn = "filmfiler/" . $_FILES['filbane']['name']; move_uploaded_file($temp_file, $filnavn) or die ("En feil oppstod, prøv igjen senere. Har du prøvd dette for andre gang og fått denne meldingen, send en e-post til [email protected]"); $tilkobling = mysql_connect("localhost","rvgshost_alt","Alex123rider"); mysql_select_db("rvgshost_database",$tilkobling); $sjekk_antall = mysql_query("SELECT id FROM filmfiler"); $antall_rader = mysql_fetch_arrey($sjekk_antall); $nyId = $antall_rader['id'] + 1; mysql_query("INSERT INTO filmfiler (id, navn, filmfil) VALUES ($nyId,$_POST['navn'],$filnavn)"); echo "Filen er nå lastet opp til nettsiden.<br><br><a href='index.php'>Gå tilbake til forsiden</a>"; ?> </body> </html> Og når jeg kjører den (med inngangsdata), så får jeg denne feilmeldingen: Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/rvgshost/public_html/lastopp.php on line 16 Er sikkert noe ganske enkelt, men dette er til en nettside der mine medelever skal laste opp en filmfil de har laget (siden it's learning ikke vil godta filmfiler). Det er viktig at det funker som det skal innen kort tid. Takker for alle svar. PS: Linje 16 er der denne koden er: VALUES ($nyId,$_POST['navn'],$filnavn)"); Lenke til kommentar
Djn Skrevet 16. oktober 2012 Del Skrevet 16. oktober 2012 Bare av nysgjerrighet, tolererer PHP linjeskift inne i tekst på den måten uten at du slutter linjen med en backslash? Lenke til kommentar
GeirGrusom Skrevet 16. oktober 2012 Del Skrevet 16. oktober 2012 Ser ikke slik ut på feilmeldingen. Vil forøvrig nevne at det er en $_POST variabel dyttet rett inn i et SQL uttrykk uten å escape den først. Lenke til kommentar
Yawa Skrevet 16. oktober 2012 Del Skrevet 16. oktober 2012 Dette burde funke. <?php mysql_query('INSERT INTO filmfiler (id, navn, filmfil) VALUES ('.$nyId.',"'.$_POST['navn'].'","'.$filnavn.'")'); ?> Husk å sikre spørringene mot databasen... Lenke til kommentar
Djn Skrevet 16. oktober 2012 Del Skrevet 16. oktober 2012 Ser ikke slik ut på feilmeldingen. Vil forøvrig nevne at det er en $_POST variabel dyttet rett inn i et SQL uttrykk uten å escape den først. Jeg har tilfeldigvis allerede denne oppe i en annen tab : http://xkcd.com/327/ 2 Lenke til kommentar
herdon Skrevet 17. oktober 2012 Forfatter Del Skrevet 17. oktober 2012 Takk for hjelpen, det funket. Men nå har det kommet et nytt problem på en av de andre nettsidene på nettsiden. Her er koden: <html> <head> <title>Administrer</title> </head> <body> <?php if (isset($_POST['logginn'])) { if ($_POST['brukernavn'] == Ingrid && $_POST['passord'] == skoleErTopp) { echo "<h1>Her er en liste over alle filene som er lastet opp</h1>"; $con = mysql_connect("localhost","rvgshost_alt","Alex123rider"); echo"<p> if (!$con) { die('Kunne ikke koble til, prøv igjen senere. Er dette andre gang du prøver dette, og får feilmeldingen, vennligst send en e-post til [email protected] med feilmeldingen under:<br><br>Feilmelding: ' . mysql_error()); } mysql_select_db("rvgshost_database", $con); $result = mysql_query("SELECT * FROM filmfil"); while($row = mysql_fetch_array($result)) { echo "ID: " . $row['id'] . "<br>Navn: " . $row['navn'] . "Tid lastet opp (servertid): " . $row['tid'] . "<br>Lenke til filmfil: <a href='http://rvgs.host.org/" . $row['filmfil'] . "'>Trykk her</a>"; echo "<br><br>------------<br><br>"; } mysql_close($con); echo "</p> } else { echo "<h1>Beklager, men du har skrevet inn feil brukernavn/passord, vennligst skriv inn riktig</h1>"; echo '<p><form action=""method="post">Brukernavn: <input type="text" name="brukernavn"><br>Passord: <input type="password" name="passord"><br><input type="submit" name="logginn" value="Logg inn"></form></p>'; } } else { ?> <h1>Logg inn her</h1><br><br> <p> <form action=""method="post"> Brukernavn: <input type="text" name="brukernavn"><br> Passord: <input type="password" name="passord"><br> <input type="submit" name="logginn" value="Logg inn"> </form> </p> <?php } ?> <p><a href="index.php">Gå tilbake til forsiden</a></p> </body> </html> Her er feilmeldingen: Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /home/rvgshost/public_html/administrer.php on line 17 Håper noen kan hjelpe her også (det burde ikke være feilmelding der, for denne koden kopierte jeg direkte fra w3schools.com, og bare endret på navnene, slik at de stemmer). PS: Linje 17 er, så vidt jeg har fått telt der denne koden står: mysql_select_db("rvgshost_database", $con); Takker for alle svar. Lenke til kommentar
GeirGrusom Skrevet 17. oktober 2012 Del Skrevet 17. oktober 2012 (endret) Du ser egentlig problemet i Code taggen her: echo prøver å dytte inn PHP kode i en string literal. edit: eller du mangler " på slutten av den ene echo linjen. Endret 17. oktober 2012 av GeirGrusom Lenke til kommentar
herdon Skrevet 17. oktober 2012 Forfatter Del Skrevet 17. oktober 2012 Så visst ikke det Men nå kommer den med en feilmelding jeg ikke forstår kan komme: Parse error: syntax error, unexpected '>' in /home/rvgshost/public_html/administrer.php on line 31 Og det eneste som er på den linjen nå er jo: echo "<h1>"; Lenke til kommentar
GeirGrusom Skrevet 17. oktober 2012 Del Skrevet 17. oktober 2012 Kanskje det er linja under: echo '<p><form action=""method="post">Brukernavn: <input type="text" name="brukernavn"><br>Passord: <input type="password" name="passord"><br><input type="submit" name="logginn" value="Logg inn"></form></p>'; Er det tillatt med ' ' som string literal i PHP? Bytt de om; bruk " i PHP og ' i HTML. Lenke til kommentar
Crowly Skrevet 17. oktober 2012 Del Skrevet 17. oktober 2012 Du kan fint bruke på ' og " i PHP for tekst strenger $text="Heisann"; $text2='Heisann'; Problemet er på linje 11: echo "<p> 28: echo "</p> Du har ikke avsluttet tekst strengen, legg på "; Anbefaler at du bruker en editor med farge koding, f.eks. Notepad++. Da blir det veldig enkelt å oppdage slike feil. Lenke til kommentar
herdon Skrevet 17. oktober 2012 Forfatter Del Skrevet 17. oktober 2012 Du kan fint bruke på ' og " i PHP for tekst strenger $text="Heisann"; $text2='Heisann'; Problemet er på linje 11: echo "<p> 28: echo "</p> Du har ikke avsluttet tekst strengen, legg på "; Anbefaler at du bruker en editor med farge koding, f.eks. Notepad++. Da blir det veldig enkelt å oppdage slike feil. Takk for tipset, bruker nok notepad++ fra nå av. Nå vil siden vises, men jeg får denne advarselen (og innholdet vil selvfølgelig ikke vises): Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/rvgshost/public_html/administrer.php on line 21 Hva må jeg gjøre for å unngå dettte? Lenke til kommentar
Crowly Skrevet 17. oktober 2012 Del Skrevet 17. oktober 2012 Kan ikke se noe feil, men du har ingen kontroll på om databasen faktisk finnes. Endre koden din til følgende: if (mysql_select_db("rvgshost_database", $con)) { $result = mysql_query("SELECT * FROM filmfil"); while($row = mysql_fetch_assoc($result)) { echo "ID: " . $row['id'] . "<br>Navn: " . $row['navn'] . "Tid lastet opp (servertid): " . $row['tid'] . "<br>Lenke til filmfil: <a href='http://rvgs.host.org/" . $row['filmfil'] . "'>Trykk her</a>"; echo "<br><br>------------<br><br>"; } } else echo 'Finner ikke databasen'; mysql_close($con); I stedet for mysql_fetch_array så bruk mysql_fetch_assoc eller mysql_fetch_row. mysql_fetch_array innholder både row og assoc, er ikke nødvendig å ha hvert felt fra select'en dobbelt opp. Siden du bruker $row['id'] så er det mysql_fetch_assoc som er riktig. Lenke til kommentar
herdon Skrevet 18. oktober 2012 Forfatter Del Skrevet 18. oktober 2012 Kan ikke se noe feil, men du har ingen kontroll på om databasen faktisk finnes. Endre koden din til følgende: if (mysql_select_db("rvgshost_database", $con)) { $result = mysql_query("SELECT * FROM filmfil"); while($row = mysql_fetch_assoc($result)) { echo "ID: " . $row['id'] . "<br>Navn: " . $row['navn'] . "Tid lastet opp (servertid): " . $row['tid'] . "<br>Lenke til filmfil: <a href='http://rvgs.host.org/" . $row['filmfil'] . "'>Trykk her</a>"; echo "<br><br>------------<br><br>"; } } else echo 'Finner ikke databasen'; mysql_close($con); I stedet for mysql_fetch_array så bruk mysql_fetch_assoc eller mysql_fetch_row. mysql_fetch_array innholder både row og assoc, er ikke nødvendig å ha hvert felt fra select'en dobbelt opp. Siden du bruker $row['id'] så er det mysql_fetch_assoc som er riktig. Det hjalp desverre ikke, så nå har jeg endret det sånn at filmen lagres som vanlige filer. Det eneste problemet jeg møter på nå er at den ikke finner navnet på den som har lastet opp filen (og en liten bagatell med at den lister opp to filer som ikke er i mappen, og går viistnok til mappen php skal lete i, og index-siden). Her er koden min: <!DOCTYPE html> <html> <head> <title>Administrer</title> </head> <body> <?php if (isset($_POST['logginn'])) { if ($_POST['brukernavn'] == 'Inger' && $_POST['passord'] == 'skoleErTopp') { $antall_filer = 0 ?> <h1>Her er en liste over alle filene som er lastet opp</h1> <?php $mapperef = opendir("filmfiler/"); while (($filmfil = readdir($mapperef)) !== false) { $filmfilbane = $mapperef . $filmfil; $tekstfilnavn = str_replace(".", "", $filmfil); $tekstfilbane = "filminfo/" . $tekstfilnavn; if (file_exists($tekstfilbane)) { $navn = file_get_contents($tekstfilbane); } else { $navn = "Navn ikke funnet"; } echo "Navn: " . $navn . "<br>"; echo "<video width='320' height='240' controls='controls'><source src='filmfiler/" . $filmfil . "'>Din nettleser støtter ikke video-taggen i html5.</video>"; echo "<br>Last ned filmfil: <a href='filmfiler/" . $filmfil . "'>Trykk her</a><br><br>-----------------<br><br>"; $antall_filer = $antall_filer + 1; } closedir($mapperef); echo "Antall filmfiler funnet: " . $antall_filer; } else { echo "Feil brukernavn/passord, logg inn på nytt.<br><br><a href='loggInn.php'>Logg inn på nytt</a>"; } } ?> <p><br><br><a href="index.php">Gå tilbake til forsiden</a></p> </body> </html> Filene er lagret sånn at en filmfil som heter: minfilm.mp4 og ligger i mappen filmfiler, heter infofilen (med navnet på hvem som har lastet opp i):minfilmmp4.txt og ligger i mappen filminfo. Det som blir resultatet er at det står: Navn ikke funnet som er det som skal komme hvis den ikke finner filen. Håper noen finner en løsning nå idag. Lenke til kommentar
herdon Skrevet 18. oktober 2012 Forfatter Del Skrevet 18. oktober 2012 (endret) Har oppdaget at jeg må legge til ".txt", og det fungerer nå (skjønner ikke at jeg glemte det). Endret 18. oktober 2012 av herdon Lenke til kommentar
herdon Skrevet 18. oktober 2012 Forfatter Del Skrevet 18. oktober 2012 Fint hvis noen har en mulighet til å utelate de to "linkene" som skal utelates, uten å måtte sjekke filformatet, for å være sikker på at filmene også listes opp, selv om de ikke er i det filformatet som oppskriften sier at det skal være i. Lenke til kommentar
Crowly Skrevet 18. oktober 2012 Del Skrevet 18. oktober 2012 Det hjalp desverre ikke, Og resultatet ble? Er fremdeles flere ting som kan gjøres for å debugge koden. Litt håpløst å gi opp så fort når du spør om hjelp ... if (mysql_select_db("rvgshost_database", $con)) { $result = mysql_query("SELECT * FROM filmfil"); echo '<pre>'; // start debugging echo var_dump($result); // hvis resources så ok, hvis false så er det ett problem med query'en while($row = mysql_fetch_assoc($result)) { //echo "ID: " . $row['id'] . "Navn: " . $row['navn'] . "Tid lastet opp (servertid): " . $row['tid'] . "Lenke til filmfil: <a href="http://rvgs.host.org/" . $row[" filmfil']="" .="" "'="">Trykk her</a>"; //echo "------------"; print_r($row); // skriv ut innholdet av $row } echo '</pre>'; // slutt debugging } else echo 'Finner ikke databasen'; mysql_close($con); Skal du liste ut filer så ta en titt på glob() funksjonen. Hvis du ikke ønsker å bruke en database, så bør du med en Mod. om å flytte denne tråden til PHP forumet, da dette ikke lenger er database relatert, men ren PHP. Lenke til kommentar
JohndoeMAKT Skrevet 18. oktober 2012 Del Skrevet 18. oktober 2012 PS: Linje 16 er der denne koden er: VALUES ($nyId,$_POST['navn'],$filnavn)"); VALUES ({$nyId}, "{$_POST['navn']}", "{$filnavn}")'; Lenke til kommentar
herdon Skrevet 23. oktober 2012 Forfatter Del Skrevet 23. oktober 2012 Alt fungerer for nettsiden nå. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå