Upload in bd

Aici prezentati probleme, intrebari, sau orice subiecte legate de scripturi si tutoriale de pe site.
Avatar utilizator
trif
Mesaje: 500

Upload in bd

am luat scriptul php Upload de pe sitele d-voastra dar ceea ce vreau eu este urmatoarea: ca dupa ce imi pune in folderul care trebuie (asa cum face) doresc ca si in baza de date sa se puna numele pozei pt ca vreau ca sa fac inregistrari pe site in care sa scriu datele pers si cate o poza la fiecare in parte si fiecare membru sa aibe poza lui up cu acest script! sper ca ati inteles, ce trebuie schimbat si adaugat la acest script de up al vostru si sa inregistreze si in bd. multumesc, cu stima trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

claUdiu Mesaje: 313
Eu folosesc codul de mai jos: (Acesta este scriptul de pe site, partea cu rezultatul)

Cod: Selectaţi tot

<?php


$user='xfilex'; //User MySql
$parola='xfilex'; //Parola MySql
$db='xfilex'; //Db MySqbl

$conn = mysql_connect("localhost", "$user", "$parola")
    or die("Unable to connect to MySQL");
$selectdb = mysql_select_db(''.$db.'');
//Aici avem variabila trimisa din form
     $poza=''. $_FILES['fisiere']['name']. '';
    

    // Se verifica daca "magic_quotes_gpc()" nu este setat ON
    // Daca nu e ON, se filtreaza variabilele cu addslashes()
    if(!get_magic_quotes_gpc()) {
        $fisier = addslashes($fisier);
        
    }

    // Acum se adauga mai in siguranta aceste date in MySQL
    $sql = "INSERT INTO `tabela` (poza) VALUES ('$poza')"; //Modifica aici

    // Se executa interogarea, daca returneaza FALSE afisaza cauza erorii, altfel, afiseaza confirmarea
    if (!mysql_query($sql)) {
        echo 'Eroare : '. mysql_errno(). ' - '. mysql_error();
    }
    else {
        echo ' ';
    }

$uploadpath = "d/"; //Folderul in care uploadeaza


// Aici este setata marimea maxima, in KiloBytes, care este permisa (dar marime maxima depinde si de setarile serverului)
$max_size = '9999999';

// Aici puteti schimba tipul, extensia fisierelor permise pt. upload
$allowtype = array('bmp', 'flv', 'gif', 'jpg', 'jpeg', 'mp3', 'pdf', 'png', 'rar', 'zip', 'torrent');

if(isset($_POST['submit'])) {
  if (isset ($_FILES['fisiere'])) {
   $uploadpath = $uploadpath . basename( $_FILES['fisiere']['name']);
   $type = end(explode(".", strtolower($_FILES['fisiere']['name'])));

   // Daca fisierul are extensia permisa
   if (in_array($type, $allowtype)) {
   // Verifica daca fisierul are marimea permisa
   if ($_FILES['fisiere']['size']<=$max_size*1000) {
     if(move_uploaded_file($_FILES['fisiere']['tmp_name'], $uploadpath)) {

      echo "Fisierul:<b> ". basename( $_FILES['fisiere']['name']). "</b> a fost incarcat cu succes:";
      echo "<br />Tipul fisieului:<b> ". $_FILES['fisiere']['type'] ."</b>";
      echo "<br />Marime  (<i>in Bytes</i>): <b>". $_FILES['fisiere']['size'] ."</b><br /><br />";
     echo 'Link de descarcare :<br> <input type="text" name="thetext" size="60" value="www.siteul-tau.do/'.$uploadpath.'/'.$fisier.'">';
     }
     else {
      echo "<b>A aparut o eroare la urcarea fisierului pe server, <br /> posibil ca marimea fisierului sa depaseasca permisiunile setate de server.</b>";
     }
   }
   else { echo 'Fisierul <b>'. $_FILES['fisiere']['name']. '</b> depaseste marimea permisa de maxim <i><b>'. $max_size. 'KB</b></i>'; }
   }
   else { echo 'Fisierul <b>'. $_FILES['fisiere']['name']. '</b> nu are tipul de extensie permis'; }
  }
}
?>
Il poti modifica sa faca ce vrei. El deja face ce ai zis tu, dar ii mai tre cateva modificari;) Daca ai probleme posteaza:)
Se spune ca...."omul tot invata in viata". Dar...Totusi...Trebie sa ne oprim undeva, nu?

MarPlo Mesaje: 4343
Pt. ce vrei, daca adaugi poza intr-un tabel separat pt. poze, cum e in modelul postat de "claUdiu", trebuie ca acel tabel sa aibe si o coloana cu id-ul sau numele utilizatorului, ca sa il asociezi cu poza. Acel id sau nume poate fi deja stocat intr-o sesiune, de ex.: $_SESSION['user'] inainte de a face upload.
Iar la insert in bd poti face asa:

Cod: Selectaţi tot

$user = $_SESSION['user'];
$sql = "INSERT INTO `tabela` (user, poza) VALUES ('$user', '$poza')";
Sau poti cu UPDATE, daca ai un tabel cu utilizatorii, in care ai si coloana `poza` si face upload mai tarziu. Cam asa

Cod: Selectaţi tot

$user = $_SESSION['user'];
$sql = "UPDATE `tabela` SET `poza`='$poza' WHERE `user`='$user'";
- Trebuie adaptat la denumirile variabilelor si coloanelor din script.

trif Mesaje: 500
am o rugaminte, daca ma puteti sa leg aceste 2 script-uri:
primul este de adugare:

Cod: Selectaţi tot

<?php
   if(isset($_POST['submit'])) 
   {
     $id=$_POST['id'];
	 $familie=$_POST['familie'];
	 $tata=$_POST['tata'];
	 $mama=$_POST['mama'];
	 $membrii=$_POST['membrii'];
	 $detalii=$_POST['detalii'];
	 $poza=$_POST['poza'];
	 $baieti=$_POST['baieti'];
	 $fete=$_POST['fete'];
     if(strlen($familie)<1)
     {
       print "Nu este nici un membru!";
     }
     else
     {
       $addemail="Insert into membrii_bisericii(id, familie, tata, mama, membrii, detalii, poza, baieti, fete) values('$id', '$familie', '$tata', '$mama', '$membrii', '$detalii', '$poza', '$baieti', '$fete')";
       mysql_query($addemail) or die("NU se poate adauga!");
       print "Membru adaugat!  <a href='adaugare_familie.php'>Inapoi la adaugare!</a>";
     }
   }   
   else 
   {
      print "<form action='adaugare_familie.php' method='post'>";
      print "ID:<br>";
      print "<input type='text' name='id' size='30'><br>";
	  print "Familie:<br>";
      print "<input type='text' name='familie' size='30'><br>";
	  print "Tata:<br>";
      print "<input type='text' name='tata' size='30'><br>";
	  print "Mama:<br>";
      print "<input type='text' name='mama' size='30'><br>";
	  print "Membrii:<br>";
      print "<input type='text' name='membrii' size='30'><br>";
	  print "Baieti:<br>";
      print "<input type='text' name='baieti' size='30'><br>";
	  print "Fete:<br>";
      print "<input type='text' name='fete' size='30'><br>";
	  print "Poza:<br>";
      print "<input type='text' name='poza' size='30'><br>";
	  print "Detalii:<br>";
      print "<textarea name='detalii' cols='45' rows='3' id='detalii'></textarea><br>";
      print "<input type='submit' name='submit' value='Adauga familie'></form>";
   }
?>
al doilea este up.

Cod: Selectaţi tot

<?php 
$uploadpath = "imagini/";
$max_size = 2000000;
$allowtype = array('bmp', 'gif', 'jpg', 'jpeg','png');

if(isset($_POST['submit'])) {
  if (isset ($_FILES['fisiere'])) {
    $uploadpath = $uploadpath . basename( $_FILES['fisiere']['name']);
	$type = end(explode(".", strtolower($_FILES['fisiere']['name'])));
    if (in_array($type, $allowtype)) {
	  if ($_FILES['fisiere']['size']<=$max_size*1000) {
        if(move_uploaded_file($_FILES['fisiere']['tmp_name'], $uploadpath)) { 
          echo "Fisierul:<b> ". basename( $_FILES['fisiere']['name']). "</b> a fost incarcat cu succes:"; 
          echo "<br />Tipul fisieului:<b> ". $_FILES['fisiere']['type'] ."</b>"; 
          echo "<br />Marime  (<i>in Bytes</i>): <b>". $_FILES['fisiere']['size'] ."</b><br /><br />";
		  echo 'Link catre fisierul incarcat: <b>http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['REQUEST_URI']).'/'.$uploadpath.'</b>';
        }
        else { 
          echo "<b>A aparut o eroare la urcarea fisierului pe server, <br /> posibil ca marimea fisierului sa depaseasca permisiunile setate de server.</b>"; 
        }
	  }
	  else { echo 'Fisierul <b>'. $_FILES['fisiere']['name']. '</b> depaseste marimea permisa de maxim <i><b>'. $max_size. 'KB</b></i>'; }
    }
	else { echo 'Fisierul <b>'. $_FILES['fisiere']['name']. '</b> nu are tipul de extensie permis'; }
  }
}
?> 

<div style="width:333px; text-align:center;">
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" enctype="multipart/form-data"> 

Upload Fisier: 
<input type="file" name="fisiere" /> <br />
<input type="submit" name='submit' value="Upload" /> 
</form>
am tot incercat sa le imbin si sa le fac un script dar nici o sansa numai erori peste erori. multumesc, cu stima trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

MarPlo Mesaje: 4343
Incearca urmatorul cod, combinat din ce ai postat. E ne testat, vezi daca merege si mai modifici daca da vreo eroare. Nici elemente de siguranta pt. mysql si upload nu sunt facute, asta ar fi complicat codul; le face fiecare ca sa stie ce cod are si unde sa modifice in caz de nevoie.

Cod: Selectaţi tot


<?php
       if(isset($_POST['submit']))
       {
	    $uploadpath = "imagini/";        // Directorul unde incarca pozele

        $id=$_POST['id'];
        $familie=$_POST['familie'];
        $tata=$_POST['tata'];
        $mama=$_POST['mama'];
        $membrii=$_POST['membrii'];
        $detalii=$_POST['detalii'];
        $poza=$uploadpath. basename( $_FILES['poza']['name']);
        $baieti=$_POST['baieti'];
        $fete=$_POST['fete'];
         if(strlen($familie)<1)
         {
           print "Nu este nici un membru!";
         }
         else
         {
		 if(move_uploaded_file($_FILES['poza']['tmp_name'], $poza)) {
              echo "Fisierul:<b> ". basename( $_FILES['poza']['name']). "</b> a fost incarcat cu succes:";
		  }
		  
           $addemail="Insert into membrii_bisericii(id, familie, tata, mama, membrii, detalii, poza, baieti, fete) values('$id', '$familie', '$tata', '$mama', '$membrii', '$detalii', '$poza', '$baieti', '$fete')";
           mysql_query($addemail) or die("NU se poate adauga!");
           print "Membru adaugat!  <a href='adaugare_familie.php'>Inapoi la adaugare!</a>";
         }
       }   
       else
       {
          print "<form action='adaugare_familie.php' method='post' enctype='multipart/form-data'>";
          print "ID:<br>";
          print "<input type='text' name='id' size='30'><br>";
         print "Familie:<br>";
          print "<input type='text' name='familie' size='30'><br>";
         print "Tata:<br>";
          print "<input type='text' name='tata' size='30'><br>";
         print "Mama:<br>";
          print "<input type='text' name='mama' size='30'><br>";
         print "Membrii:<br>";
          print "<input type='text' name='membrii' size='30'><br>";
         print "Baieti:<br>";
          print "<input type='text' name='baieti' size='30'><br>";
         print "Fete:<br>";
          print "<input type='text' name='fete' size='30'><br>";
         print "Poza:<br>";
          print "<input type='file' name='poza'><br>";
         print "Detalii:<br>";
          print "<textarea name='detalii' cols='45' rows='3' id='detalii'></textarea><br>";
          print "<input type='submit' name='submit' value='Adauga familie'></form>";
       }
    ?>

trif Mesaje: 500
merge si mersi, dar este o mica problema si acesta este: dupa ce le pun in bd imi scrie imagini/fara_poza.jpg dar mi e imi trebuie fara_poza.jpg doar numele pentru ca in script-ul care preia imaginea am acest cod <img src="https://marplo.net/sitefinal/imagini/'.$rand['poza'].'"> care la care ii trebuie doar numele nu si imagini/...; ce trebuie sa modific la cod ca sa mearga? si mai este ceva cum pun sa fie o marime anume ca sa nu fie 800x600 ci 450x200 ceva de genu? ms mult, cu stima trif!
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

MarPlo Mesaje: 4343
Sterge $uploadpath. de la $poza=
Iar unde ai if(move_uploaded_file($_FILES['poza']['tmp_name'], $poza)) , inlocuieste cu:
f(move_uploaded_file($_FILES['poza']['tmp_name'], $uploadpath.$poza))

Despre cum sa fie o marime anume, e mai complicat, pt. dimeniuni ar putea fi folosita functia "getimagesize()" (vezi in manual, aici http://php.net/manual/en/function.getimagesize.php , sau poti cauta pe net mai multe despre ea). Cu aceasta preiei dimensiunile pozei si apoi verifici cu "if()-uri" daca e in limitele care vrei.
Iar marimea in kilobytes o poti afla cu: $_FILES['poza']['size']

trif Mesaje: 500
mersi merge! cu stima trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

trif Mesaje: 500
am facut upload si merge pe calc meu dar l-am pus pe net ceea ce am facut si imi da aceste erorii
Warning: move_uploaded_file(http://www.bisericabiruinta.ro/imagini/ ... e-0381.jpg) [function.move-uploaded-file]: failed to open stream: HTTP wrapper does not support writeable connections in /home/biserica/public_html/adaugare_familie.php on line 380

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpXxxOH6' to 'http://www.bisericabiruinta.ro/imagini/ ... e-0381.jpg' in /home/biserica/public_html/adaugare_familie.php on line 380
ce sa fac ca nu stiu?
la linia 380 cum zice acolo este if(move_uploaded_file($_FILES['poza']['tmp_name'], $uploadpath.$poza)) {
uite tot codul:

Cod: Selectaţi tot

 <?php
       if(isset($_POST['submit']))
       {
       $uploadpath = "http://www.bisericabiruinta.ro/imagini/familii/";        // Directorul unde incarca pozele

        $id=$_POST['id'];
        $familie=$_POST['familie'];
        $tata=$_POST['tata'];
        $mama=$_POST['mama'];
        $membrii=$_POST['membrii'];
        $detalii=$_POST['detalii'];
        $poza=$_FILES['poza']['name'];
        $baieti=$_POST['baieti'];
        $fete=$_POST['fete'];
         if(strlen($familie)<1)
         {
           print "Nu este nici un membru!";
         }
         else
         {
       if(move_uploaded_file($_FILES['poza']['tmp_name'], $uploadpath.$poza)) {
              echo "Fisierul:<b> ". basename( $_FILES['poza']['name']). "</b> a fost incarcat cu succes.";
        }
        
           $addemail="Insert into membrii_bisericii(id, familie, tata, mama, membrii, detalii, poza, baieti, fete) values('$id', '$familie', '$tata', '$mama', '$membrii', '$detalii', '$poza', '$baieti', '$fete')";
           mysql_query($addemail) or die("NU se poate adauga!");
           print "<br>Membru adaugat!  <a href='adaugare_familie.php'>Inapoi la adaugare!</a>";
         }
       }   
       else
       {
          print "<form action='adaugare_familie.php' method='post' enctype='multipart/form-data'>";
          print "ID:<br>";
          print "<input type='text' name='id' size='30'><br>";
         print "Familie:<br>";
          print "<input type='text' name='familie' size='30'><br>";
         print "Tata:<br>";
          print "<input type='text' name='tata' size='30'><br>";
         print "Mama:<br>";
          print "<input type='text' name='mama' size='30'><br>";
         print "Membrii:<br>";
          print "<input type='text' name='membrii' size='30'><br>";
         print "Baieti:<br>";
          print "<input type='text' name='baieti' size='30'><br>";
         print "Fete:<br>";
          print "<input type='text' name='fete' size='30'><br>";
         print "Poza:<br>";
          print "<input type='file' name='poza'><br>";
         print "Detalii:<br>";
          print "<textarea name='detalii' cols='45' rows='3' id='detalii'></textarea><br>";
          print "<input type='submit' name='submit' value='Adauga familie'></form>";
       }
    ?>
cu stima trif.
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

MarPlo Mesaje: 4343
Sa folosesti cale relativa spre directorul de upload, raportat la unde e scriptul (ex. 'imagini/'), si nu calea absoluta cu "http://...adrresa_url".
Iar acel director sa aibe permisiuni CHMOD 0777, de scriere in el.

trif Mesaje: 500
si cum ii dau la directorele "imagini/famili/" acele permisiuni CHMOD 0777? cu stima trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

MarPlo Mesaje: 4343
Din programul de FTP prin care pui fisierele pe server, dai click dreapta pe acel director de pe server si alegi "Properties" (sau ce denumire o avea pt. proprietati), apoi bifezi casutele cu permisiuni din fereastra care apare. Vezi ce e legat de CHMOD. Sau daca e vreo casuta cu un numar gen 0755 sau altul, il scrii 0777.

Subiecte similare