Avatar billede vixmix Nybegynder
02. september 2004 - 14:57 Der er 25 kommentarer og
1 løsning

Hvorfor gemmer den ikke i Mysql ?

Hej eksperter, jeg håber i kan hjælpe mig.

Jeg har følgende sider:

tilmeld en annonche:

tilann.php:

  <?php
require("conn.php");
$message = '';
if(isset($_POST['navn']) && isset($_POST['tekst'])) {
    $tid = date("d/m Y - H:i");
    $_POST['navn'] = addslashes($_POST['navn']);
    $_POST['tekst'] = addslashes($_POST['tekst']);
    $_POST['pris'] = addslashes($_POST['pris']);
    mysql_query("INSERT INTO ftc_ann (navn, upfile, tekst, pris, bruger, tlf, email, adr) VALUES('$_POST[navn]', '$_POST[upfile]', '$_POST[tekst]', '$_POST[pris]','$_POST[bruger]','$_POST[tlf]','$_POST[email]','$_POST[adr]')") or die(mysql_error());
    $message = "<div align='center' style='font: smaller Verdana, Geneva, Arial, Helvetica, sans-serif; color: black;'>Varen blev tilføjet.</div>";
}
?>
        <form action="upann.php" method="post" enctype="multipart/form-data">
          <center>
            <?=$message?>
          </center>
          <div align="center">
            <table border="0" cellspacing="0" cellpadding="0" width="417" height="165" class="tekst_normal">
              <tr>
                <td height="19" colspan="3" class="menu" background="../pic/infomenu.jpg">&nbsp;<font color="#000000">&nbsp;<strong>Tilf&oslash;j
                  en ny Annonche</strong></font></td>
              </tr>
              <tr>
                <td width="96"><b>Brugernavn: </b></td>
                <td colspan="2" width="321">
                  <input type="text" size="16" class="box" name="bruger">
                </td>
              </tr>
              <tr>
                <td width="96"><b>Navn:</b></td>
                <td colspan="2" width="321">
                  <input name="navn" type="text" class="box" id="pris" size="16">
                </td>
              </tr>
              <tr>
                <td width="96"><strong>Pris :</strong></td>
                <td colspan="2" width="321">
                  <input name="pris" type="text" class="box" id="pris" size="16">
                </td>
              </tr>
              <tr>
                <td width="96"><b>Telefon:</b></td>
                <td colspan="2" width="321">
                  <input name="tlf" type="text" class="box" id="pris" size="16">
                </td>
              </tr>
              <tr>
                <td width="96"><b>Email:</b></td>
                <td colspan="2" width="321">
                  <input name="email" type="text" class="box" id="pris" size="16">
                </td>
              </tr>
              <tr>
                <td width="96"><b>Billede :</b></td>
                <td colspan="2" width="321">
                  <input name="upfile" type="file" class="box" id="upfile" size="16">
                </td>
              </tr>
              <tr>
                <td width="96"><b>Adr.</b></td>
                <td colspan="2" width="321">
                  <input name="adr" type="text" class="box" id="pris" size="16">
                </td>
              </tr>
              <tr>
                <td width="96"><b>Tekst:</b></td>
                <td colspan="2" width="321">
                  <textarea name="tekst" cols="36" rows="5" class="box" id="info"></textarea>
                </td>
              </tr>
              <tr>
                <td colspan="3">&nbsp;</td>
              </tr>
            </table>
            <input type="submit" value="Tilf&oslash;j Annonche" class="submit" name="submit">
          </div>
        </form>
        <br>
        <br>
        <table width="100%">
        </table>
        <? mysql_close(); ?>

Upload billede og andet:

upann.php:

<?php
            require("conn.php"); 
            ?>
          <?php

if (isset($_FILES['upfile'])) {

//til brug for info om filtyper
$str1 = $_FILES['upfile']['name'];
$str2 = $_FILES['upfile']['size'];
$str3 = $_FILES['upfile']['type'];

//Filer som kan uploades
$filetyper = array("image/gif", "text/html", "text/plain", "image/jpeg", "image/pjpeg", "image/png", "application/x-zip-compressed", "application/octet-stream");

//stien, hvortil filerne skal placeres   
    $dist = "ann/";

//Tjek om der er en fil, samt om den overholder filtypen som kan uploades
    if (isset($_FILES['upfile']['name']) && $_FILES['upfile']['name'] == "") {
    echo"Ingen fil valgt! <a href=\"$_SERVER[HTTP_REFERER]\">tilbage</a>";
    exit;

}elseif (!in_array($_FILES['upfile']['type'], $filetyper)) {
echo "Ikke tilladt til upload! <a href=\"$_SERVER[HTTP_REFERER]\">tilbage</a>";
exit;
    }

    if (isset($_FILES['upfile']['name']) && $_FILES['upfile']['name'] !="") {

//se http://dk.php.net/manual/en/function.is-uploaded-file.php for "is_uploaded_file"       
        if(is_uploaded_file($_FILES['upfile']['tmp_name'])) {

//Flyt filen fra upload-tmp til et dir. Husk at ændre "$dist" ovenover så det passer med din server :O)
        move_uploaded_file($_FILES['upfile']['tmp_name'], $dist . $_FILES['upfile']['name']);
        }
    }
}

//indsætte i databasen
$filnavn = "http://bocowa.dk/ftc/ann/" . $_FILES['upfile']['name'];
mysql_query("INSERT INTO ftc_ann (navn, upfile, tekst, pris, bruger, tlf, email, adr) VALUES('$_POST[navn]', '$_POST[upfile]', '$_POST[tekst]', '$_POST[pris]','$_POST[bruger]','$_POST[tlf]','$_POST[email]','$_POST[adr]')") or die(mysql_error());
    $HTTP_REFERER = $_SERVER['HTTP_REFERER'];
    echo $_FILES['upfile']['name'];

?>


Problemet er at den fint ligger alle ting op i Mysql DB. Men den der hedder upfile virker ikke, den ligger ikke adr. op i mysql db. ?
(    $filnavn = "http://bocowa.dk/ftc/ann/" . $_FILES['upfile']['name'];          )

håber i kan hjælpe mig !
Avatar billede jakoba Nybegynder
02. september 2004 - 15:16 #1
Lad os starte med at sørge for at vi får fejlmeddelelser (de fortæller jo om hvad der går galt i dit script)

som det første efter  <?php  tilføjer du en ekstra linie:

  error_reporting(E_ALL);          // DEBUG LINIE. nu udskrives alle fejlmeldinger

når det hele virker kan den så fjernes igen.

lad og ogs se præcis hvilken sql-kommado du sender afsted.
isetdet for:

    mysql_query("INSERT INTO ftc_ann (navn, upfile, tekst, pris, bruger, tlf, email, adr) VALUES('$_POST[navn]', '$_POST[upfile]', '$_POST[tekst]', '$_POST[pris]','$_POST[bruger]','$_POST[tlf]','$_POST[email]','$_POST[adr]')") or die(mysql_error());

laver vi 3 linier:

    $sql_kommando = "INSERT INTO ftc_ann (navn, upfile, tekst, pris, bruger, tlf, email, adr) VALUES('$_POST[navn]', '$_POST[upfile]', '$_POST[tekst]', '$_POST[pris]','$_POST[bruger]','$_POST[tlf]','$_POST[email]','$_POST[adr]')";
    echo ">>" .$sql_kommando ."<< <br>";      // DEBUG LINIE hvad er kommandoen egentlig?
    mysql_query( $sql_kommando ) or die(mysql_error());
   
og igen fjernes debug linien når engang det virker.

prøv det. og fortæl her hvad der bliver skrevet.

meevh JakobA
Avatar billede jakoba Nybegynder
02. september 2004 - 15:22 #2
og naturlivis også hvad du får ud af linien:
    echo $_FILES['upfile']['name'];
Avatar billede vixmix Nybegynder
02. september 2004 - 15:24 #3
error_reporting(E_ALL);          // DEBUG LINIE. nu udskrives alle fejlmeldinger

skal det skrive som:

<?php error_reporting(E_ALL);          // DEBUG LINIE. nu udskrives alle fejlmeldinger


eller som:

<?php
  error_reporting(E_ALL);          // DEBUG LINIE. nu udskrives alle fejlmeldinger


lige nedenunder eller udfor `?
Avatar billede vixmix Nybegynder
02. september 2004 - 15:25 #4
og skal jeg lave query om på begge sider?

$sql_kommando = "INSERT INTO ftc_ann (navn, upfile, tekst, pris, bruger, tlf, email, adr) VALUES('$_POST[navn]', '$_POST[upfile]', '$_POST[tekst]', '$_POST[pris]','$_POST[bruger]','$_POST[tlf]','$_POST[email]','$_POST[adr]')";
    echo ">>" .$sql_kommando ."<< <br>";      // DEBUG LINIE hvad er kommandoen egentlig?
    mysql_query( $sql_kommando ) or die(mysql_error());
Avatar billede vixmix Nybegynder
02. september 2004 - 15:27 #5
Det skal forresten siges at den fint nok ligger billedet op på serveren, men den skriver bare ikke stigen i DB
Avatar billede jakoba Nybegynder
02. september 2004 - 15:31 #6
1)  2 linier (( det har også den fprden al så kan du blot skrive // forrest i linien når der ikke er brug for den mere

2)  Jeg selv laver det ALTID på den måde allevegne, så det er nemt at slå debuglinien til og fra. men når det kun er en enkelt query du er interreseret i er det nok at ændre den ene.
Avatar billede vixmix Nybegynder
02. september 2004 - 15:33 #7
okay og det er i upann.php ?
Avatar billede vixmix Nybegynder
02. september 2004 - 15:36 #8
ja så kom fejlen:


Notice: Undefined index: upfile in /customers/bocowa.dk/bocowa.dk/httpd.www/ftc/upann.php on line 55
>>INSERT INTO ftc_ann (navn, upfile, tekst, pris, bruger, tlf, email, adr) VALUES('test', '', 'test', 'test','test','test','test@test.test','test')<<
casper.jpg
Avatar billede jakoba Nybegynder
02. september 2004 - 16:36 #9
så det er værdien '$_POST[upfile]' der går galt.

de andre steder du refererer til det felt går du ingennem $_FILES (og giver den et ekstra level for at få navnet: $_FILES['upfile']['name'] )
så det må du nok også hellere gøre der:

    $sql_kommando = "INSERT INTO ftc_ann (navn, upfile, tekst, pris, bruger, tlf, email, adr) VALUES('$_POST[navn]', '{$_FILES['upfile']['name']}', '$_POST[tekst]', '$_POST[pris]','$_POST[bruger]','$_POST[tlf]','$_POST[email]','$_POST[adr]')";

mvh JakobA
Avatar billede vixmix Nybegynder
02. september 2004 - 16:45 #10
Ja fint.. så langt så godt, nu sætter den navnet på billedet ind i DB. Men den får ikke $filnavn = "http://bocowa.dk/ftc/ann/" . $_FILES['upfile']['name'];  den her med.. dvs. Jeg også skal have "http://bocowa.dk/ftc/ann/" ind i DB. sammen med navnet på billedet foran.
Avatar billede jakoba Nybegynder
02. september 2004 - 16:49 #11
comeon, det ku du da selv hitte ud af:

    $sql_kommando = "INSERT INTO ftc_ann (navn, upfile, tekst, pris, bruger, tlf, email, adr) VALUES('$_POST[navn]', 'http://bocowa.dk/ftc/ann/{$_FILES['upfile']['name']}', '$_POST[tekst]', '$_POST[pris]','$_POST[bruger]','$_POST[tlf]','$_POST[email]','$_POST[adr]')";
Avatar billede vixmix Nybegynder
02. september 2004 - 16:53 #12
jaja .. men det var for ikke gøre det i query'en .. men hvis det er den nemmeste måde så må det gøres sådan.. :)
Avatar billede vixmix Nybegynder
02. september 2004 - 16:56 #13
Men jeg siger tusind tak for hjælpen. smider du et svar?
Avatar billede jakoba Nybegynder
02. september 2004 - 16:59 #14
ok
Avatar billede vixmix Nybegynder
02. september 2004 - 17:25 #15
Jeg vil lige hurtigt høre om du ved hvordan man laver navnet om på billedet ? så det bliver det bliver dato og krypteret "$brugernavn"
Avatar billede jakoba Nybegynder
02. september 2004 - 17:31 #16
Det gør man samtidig med at filen flyttes fra upload mappen til den mappe hvor den skal ligge
        move_uploaded_file($_FILES['upfile']['tmp_name'], $dist . $_FILES['upfile']['name']);

du ændrer anden parameter til hvad du nu ønsker filen skal hedde på serveren.

mvh JakobA
Avatar billede vixmix Nybegynder
02. september 2004 - 17:47 #17
move_uploaded_file($_FILES['upfile']['tmp_name'], $dist . $_FILES['upfile']['$tid']);



sådan ?

kan ikke få det til at virke:

Notice: Undefined index: $tid in /customers/bocowa.dk/bocowa.dk/httpd.www/ftc/upann.php on line 49

Warning: Unable to create 'ann/': Is a directory in /customers/bocowa.dk/bocowa.dk/httpd.www/ftc/upann.php on line 49

Warning: Unable to move '/tmp/phpbEVbF4' to 'ann/' in /customers/bocowa.dk/bocowa.dk/httpd.www/ftc/upann.php on line 49
Avatar billede jakoba Nybegynder
02. september 2004 - 20:29 #18
når en variabel indeholder en streng så ved php det og så behøver du ikke sætte anførselstegn omkring.

under alle omstændigheder skal der aldrig sættes enkelt-anførselstegn omkring et vatiabelnavn du ønsker at få erstattet med variabelens indhold. den udskiftning sker kun når strengen er omkranset af dobbelte anførselstegn.

så enten slet ingen anførselstegn:
  move_uploaded_file($_FILES['upfile']['tmp_name'], $dist . $_FILES['upfile'][$tid]);  // min favorit
eller også:
  move_uploaded_file($_FILES['upfile']['tmp_name'], $dist . $_FILES['upfile']["$tid"]);  // fjollet men lovligt

mvh JakobA
Avatar billede jakoba Nybegynder
02. september 2004 - 20:33 #19
du kan læse om php's regler for strenge her: http://dk.php.net/manual/en/language.types.string.php
Avatar billede vixmix Nybegynder
02. september 2004 - 20:59 #20
den siger nu:


Notice: Undefined index: 0209200420580940 in /customers/bocowa.dk/bocowa.dk/httpd.www/ftc/upann.php on line 49

Warning: Unable to create 'ann/': Is a directory in /customers/bocowa.dk/bocowa.dk/httpd.www/ftc/upann.php on line 49

Warning: Unable to move '/tmp/phpvHKg6F' to 'ann/' in /customers/bocowa.dk/bocowa.dk/httpd.www/ftc/upann.php on line 49


på linjen:


move_uploaded_file($_FILES['upfile']['tmp_name'], $dist . $_FILES['upfile']["$tid"]);
Avatar billede jakoba Nybegynder
02. september 2004 - 21:13 #21
Ups. ja naturligvis. det der klokkeslet findes jo ikke som et indes i dit $_FILES array.

Det det handler om er at anden parameter skal være en streng med det ønskede navn i.
fx:
  move_uploaded_file( $_FILES['upfile']['tmp_name'],
                        $dist . $tid .$_FILES['upfile']['name']
                      );

mvh JakobA
Avatar billede vixmix Nybegynder
02. september 2004 - 21:51 #22
Nu viser den ingen fejl på siden !.. men den ligger ikke navnet op hehe :)

hvis jeg skriver det sådan her:

move_uploaded_file( $_FILES['upfile']['tmp_name'], $dist . $tid .$_FILES['upfile']["$tid"]);

kommer den med denne fejl:

Notice: Undefined index: 0209200421500954 in /customers/bocowa.dk/bocowa.dk/httpd.www/ftc/upann.php on line 49
Avatar billede vixmix Nybegynder
02. september 2004 - 21:54 #23
Men oppe på serveren ligger den fint det op med talene på filen, men den tager ikke .jpg,.gif osv. på .. hvorfor ?
Avatar billede jakoba Nybegynder
02. september 2004 - 23:01 #24
$_FILES
er et tovimentionelt array php laver til dig når der kommer en formular med et eller flere  <input type='file' felter i
        ['upfile']
fortæller det er data fra det felt der hedder upfile du vil adressere

det sidste led er så diverse standardinfo der finde for filer, som fx filens navn
                  ["name"]

det er php der bestemmer hvilke arrayceller der bliver dannet og hvordan de skal adresseres. du kan ikke base selv hitte på en ny adresse og forvente der kommer noget ud af det.
  Så når du skriver  ["$tid"]  svarer det nærmest til at jeg adresserede et brev til  Rådhuspladsen nr 568954, 2000ende sal tilvenstre. Den adresse findes ikke så det duer ikke.

prøv at gå ind på fx  www.script.dk  og læs nogen af deres php tutorials. Du mangler noget ret basal viden om programmering.

mvh JakobA
Avatar billede vixmix Nybegynder
02. september 2004 - 23:20 #25
det har jeg ikke lige frem tid til lige nu .. jeg ved det andet kan lade sig gøre. bare for lang tid siden jeg har sidet med php, og spc. upload...
Avatar billede vixmix Nybegynder
02. september 2004 - 23:22 #26
men siger tak, må se hvad jeg kan få gjort.

-lukket-
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester