[ manix @ 23.01.2007. 21:39 ] @
pokusavam da napravim neku galeriju i bazu za nju...

povezivanje, recordset i insert record sama radio pomocu dw posto nisam bas neki strucnja a i lakse mi bio da to uradi dw umesto da ja kucam...

Problem je sedeci napravio sam formu u kojoj imam unosim 5 podataka(naziv, aparat, slika, datum, status), preko insert record,
u dw, sam povezao polja ali kada potvrdim unos dobijem poruku "Column 'slika' cannot be null "... ok to je uredu i ne treba da bude prazno

To je verovatno problem jer sam ja na kod koji je generisao dw

Code:
<form action="<?php echo $editFormAction; ?>" method="POST" enctype="multipart/form-data" name="form1" id="form1">

dodao
Code:
<form action="<?php  move_uploaded_file($_FILES["slikauneta"]["tmp_name"],"img/" . $_FILES["slikauneta"]['name']);echo $editFormAction; ?>" method="POST" enctype="multipart/form-data" name="form1" id="form1">

da bi upload-ovao sliku.

Takodje me zanima kako da ,umesto putanje sa hdd-a, za sliku stavim putanju na mesto uploada

evo i php-a koji generise dw. Kako da u njemu ispravim gore nevedene greske i da stavim ovu putanju za sliku ...
Code:
<?php
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO unos (naziv, aparat, datum, status) VALUES (%s, %s, %s, %s)",
                       GetSQLValueString($_POST['naziv'], "text"),
                       GetSQLValueString($_POST['aparat'], "text"),
                       GetSQLValueString($_POST['datum'], "date"),
                       GetSQLValueString(isset($_POST['radiobutton']) ? "true" : "", "defined","1","0"));

  mysql_select_db($database_foto, $foto);
  $Result1 = mysql_query($insertSQL, $foto) or die(mysql_error());
}

mysql_select_db($database_foto, $foto);
$query_Recordset1 = "SELECT * FROM unos";
$Recordset1 = mysql_query($query_Recordset1, $foto) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
?>

Mozda je bolje da radim skolskim putem???
Code:
<?php
$slika = $_FILES["slika"]["name"] 
$con = mysql_connect("localhost","foto","****");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }mysql_select_db("my_db", $con);$sql="INSERT INTO person (naziv, aparat, slika...)
VALUES
('$_POST[naziv]','$_POST[apatat]','$_POST[$slika]'........)";if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
echo "Podatci su uneti u bazu";mysql_close($con)
?>
[ flylord @ 23.01.2007. 22:14 ] @
bogati sta ti je ovo?

Code:
<form action="<?php  move_uploaded_file($_FILES["slikauneta"]["tmp_name"],"img/" . $_FILES["slikauneta"]['name']);echo $editFormAction; ?>" method="POST" enctype="multipart/form-data" name="form1" id="form1">


i sta ovo treba da radi? U action se stavlja URL ne php funkcija
[ manix @ 24.01.2007. 19:06 ] @
Citat:
flylord: bogati sta ti je ovo?

Code:
<form action="<?php  move_uploaded_file($_FILES["slikauneta"]["tmp_name"],"img/" . $_FILES["slikauneta"]['name']);echo $editFormAction; ?>" method="POST" enctype="multipart/form-data" name="form1" id="form1">


i sta ovo treba da radi? U action se stavlja URL ne php funkcija
to sam trenutno stavio da ne pravim upload.php koji bi inace dosao u action a on bi zapravo sadrzao ovo sto je trenutno u action
dakle
Code:
<?php  
move_uploaded_file($_FILES["slikauneta"]["tmp_name"],"img/" . $_FILES["slikauneta"]['name']);
?>
inace ovaj kod zapravo prebacuje izabranu sliku ,u formi, u IMG folder na serveru (upload slike)

Takodje, nisam neki strucnjak, zapravo sam pocetnik, ali mislim da apsolutno nisi upravu. U action ne mora staviti samo url moze i funkcija...
Ima ovde ljudi koji nam mogu pojasniti, siguran sam. A uz sve ovo taj isti kod za upload savrseno radi bez obzira sto je u action.
deo "echo $editFormAction", zapravo, sam dw postavlja u action zbog upisavanja podataka u bazu (Insert Record).

Jos uve nisam resio problem.
Pomozite.
[ flylord @ 24.01.2007. 19:28 ] @
Obozavam kad me pocetnici uce necemu.

Bilo gde da si stavio ovaj kod:
Code:
move_uploaded_file($_FILES["slikauneta"]["tmp_name"],"img/" . $_FILES["slikauneta"]['name']);


on bi prebacio tu sliku u taj dir. A ti si ga stavio na najgluplje moguce mesto.


mogao si ovo da uradis i radilo bi:
Code:
<<?php  move_uploaded_file($_FILES["slikauneta"]["tmp_name"],"img/" . $_FILES["slikauneta"]['name']);form action="<?php  echo $editFormAction; ?>" method="POST" enctype="multipart/form-data" name="form1" id="form1">



ako ne verujes, probaj. Ali to i dalje ne znaci da treba to da radis. HTML i php nemaju veze jedno sa drugim, sem sto mogu zajedno da se koriste, i sto se dopunjuju. U action za formu ide URI ne neka php funkcija.

Moras da naucis neke principe kako se radi, ako mislis da ikad ista napravis.

Stavi ovo na pocetku tvoje skripte:

Code:

<?php error_reporting(0); ?>


i videces kakve greske prijavljuje tvoj kod. Pre nego sto bilo sta uploadujes, moras da proveris da li uopste postoji nesto da se uploaduje.

itd itd itd
[ manix @ 24.01.2007. 20:32 ] @
Ok...
Samo polako. Nisam hteo da te ucim... video sam da to radi i pomislo sam da je to ok... i da ce jos neko reci da li je to tako ili ne. Naravno ja nemam pojma koliko ti dobro poznaje PHP a na forumima ima ljudi koji pisu i ono sto neznaju....

Izvini, nisam mislio nista lose :o) E sada, uzeo sam neki tut. i krenuo ovako (skolski)...

konekcija ide u konekcija.php i to radi - necu ubacivati kod...
unos podataka ide u unos.php i u jednoj formi mi je svih 5 polja
upisivanje u bazu ide u upisi.php

Code:
<?PHP 
$con = mysql_connect("localhost","baza","*****");
if (!$con)
  {
  die('Greska u konekciji: ' . mysql_error());
  }
  
  mysql_select_db("foto", $con);
  $sql="INSERT INTO unos (naziv, aparat, slika, datum, status)
VALUES
('$_POST[naziv]','$_POST[aparat]','$_POST[slika]','$_POST[datum]','$_POST[status]')";

if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }

include("unos.php");
?>

ali jedini moj problem je sto u bazi u polju slika dobijam putanju odakle sam uzeo sliku. Meni treba putanja na mesto gde sam prebacio sliku.
Kako da upisem tu putanju u bazu? Verovato da moram da u unos.php definisem neku promenljivu, recimo $novaputanja, pa da nju upisem u bazu ?

Kako to da uradim???
[ manix @ 24.01.2007. 20:41 ] @
flylord
Tek sada sam skontao da si jedan od moderatora foruma... jasno mi je koliko dobro poznajes PHP. A ja tu mlatim nesto... izvini.

Pozdrav
[ flylord @ 24.01.2007. 21:52 ] @
Citat:
manix:
ali jedini moj problem je sto u bazi u polju slika dobijam putanju odakle sam uzeo sliku. Meni treba putanja na mesto gde sam prebacio sliku.
Kako da upisem tu putanju u bazu? Verovato da moram da u unos.php definisem neku promenljivu, recimo $novaputanja, pa da nju upisem u bazu ?

Kako to da uradim???


to je jedan od nacina. A ako je ta putanja uvek ista, mozes da definises putanju kao konstantu, i da, posle kad citas te slike, samo im dodas na pocetak, tu konstantu.
A ime slike imas iz $_FILES niza.
[ manix @ 25.01.2007. 20:52 ] @
hvala na pomoci. ovo radni... zanima me mogu li pre upisa podataka da dobijem vrednost id koji je auto_increment da bi ime upload-ovane slike bilo isto kao i id.
ustvari kako da dobijem id predhodnog upisa pre novog upisa? To je iz razloga da nebi doslo do problema ako upload-ujem 2 razlicite slike sa istim imenom...

I jose jedno pitanje. Koliko je dobro upload-ovati slike u bazu a ne u neki folder na serveru ???

ako moze kod :o)
[ centaur @ 25.01.2007. 21:04 ] @
Za MySQL:http://www.php.net/manual/en/function.mysql-insert-id.php

Ja lično mislim da je bolje u folder,ali bih voleo da čujem i Flylord-ovo mišljenje : )
[ flylord @ 26.01.2007. 17:40 ] @
Bila je jedno davno velika diskusija gde je bolje. Neki tvrde da je bolje u bazu, a neki na fajl sistem.
Ono sto je cinjenica, ako radite sa fajl sistemom, php kod za to je jednostavniji. Ali, morate da imate direktorijume sa write privilegijama za web server. Sto nekad moze da bude malo opasno. I u tom slucaju morate malo vise da pazite na sigurnost.

Ako je u bazi, bekap je jednostavniji Treba samo da dump-ujete bazu


Licno mislim da je bolje na fajl sistem. Najvise zbog jednostavnijeg rada. Mada, to nije nesto mnogo jednostavnije...

A inace, nikad nisam merio niti citao rezultate o merenju performansi jednog i drugog resenja. Tako da... pojma nemam koje je bolje
[ manix @ 27.01.2007. 19:53 ] @
E ljudi hvala vam!!! sve do sada sam, uz vasu pomoc, uspeo da resim osim...

imam radio button aktivno/neaktivno , zapravo su dva, ali nije bitno treba mi vrednost samo jednog jer ako je on cekiran ovaj drugi nije i obrnuto.

1.kako da posle posta dobijem,ako je cekirano vrednost je 1 ili necekirano 0 ?

posle unosa u bazu stavio sam da se ponovo vratim na formu za unos ali ako uradim back onda mi se nakon refres-a ponovo upisu podatci od predhodnog unosa

2 kako da posle upisivanja u bazu pobrisem sve vrednosti koje sam procitao preko $_POST['nesto']
[ manix @ 27.01.2007. 20:10 ] @
Mozda sam dosadan ali... :o(

u ovom kodu sam napravio insert i prover podataka iz forme
Code:
<?PHP 
$sli = $_POST['slika'];
// provera da li je slika uneta ili ce biti nofoto.jpg
if ($sli=="")
    {
    $ime= "nofoto.jpg";
    $slika = "img/". $ime;
    }
    else
    {
    // pronalazenje broja novog unosa Auto_increment
    $SQL = "SHOW TABLE STATUS FROM foto LIKE 'unos'";
    $result = mysql_query($SQL);
    $row = mysql_fetch_assoc($result);
    $nextInsertId = $row['Auto_increment'];
    //ime uploadovane slike
    $slika = "img/". $nextInsertId.".jpg";
    // uploadovanje slike
    move_uploaded_file($_FILES["slika"]["tmp_name"], $slika);
    }
      
  // provera da li postoje prazna polja
  $naz = $_POST['naziv'];
  $apa = $_POST['aparat'];
  $dat = $_POST['datum'];
      if ($naz == "" ){
        $greska="Polje za naziv je prazno";
        include ("greska.php");
        }
        else if ($apa == "" )
        {
        $greska="Polje za aparat je prazno";
        include ("greska.php");
        } 
        else if ($dat == "" )
        {
        $greska="Polje za datum je prazno";
        include ("greska.php"); 
        }
  else
  {
      // prepravka  datuma za unos
      $unetidatum = $_POST['datum'];
      $deo = explode (".",$unetidatum);
      $dan = $deo[0];
      $mesec = $deo[1];
      $godina = $deo[2];
       // kreiranje datuma za upis u bazu
      $datum = $godina."-".$mesec."-".$dan;
      //echo ($datum);
      // konekcija na server
      require_once("konekcija/konekcija.php");
      // predhodni red poziva gotovu konekciju
          //insertovanje podataka
          $sql="INSERT INTO unos (naziv, aparat, slika, datum, status)
          VALUES('$_POST[naziv]','$_POST[aparat]','$slika','$datum','$status')";
                if (!mysql_query($sql,$con))
                {
                die('Greska: ' . mysql_error());
                }  
      include("unos.php");
  }
?>
e zanima me postoji li mogucnost formatiranog unosa datuma, mislim na neko prostije resenje od ovog mog u nastavku

recimo greskom se unese 21.1.20007 gore u skriptu bi dobo 20007-21-1 - to je neispravan datum, u bazi bi bilo 0000-00-00.

ja bi to resio na sledeci nacin:
Code:
 if ($dan < 1 || $dan>31){include("greska.php")}
i tako dalje za sve tri vrednosti...

[ JovanT @ 28.01.2007. 00:59 ] @
Da, na taj način možeš da proveriš da li su ti vrednosti ispravne.

Ja bih ti preporučio da promeniš način na koji se unosi datum. Umesto jednog, bolje stavi tri polja (po jedan za dan, mesec i godinu) jer će tada šanse za grešku biti manje a i možeš da ograničiš korisnike na određen broj znakova (tipa, 4 brojeva za godinu).

Uzgred, za manipulaciju sa datumima u PHP-u, misliš da je lakše da koristiš Unix timestamp nego sadašnje rešenje. Pogledaj funkcije time(), date(), strtotime().