Modificare script-Preluare date si adaugare in baza de date

Aici prezentati probleme, intrebari, sau orice subiecte legate de scripturi si tutoriale de pe site.
bogdanel
Mesaje: 4

Modificare script-Preluare date si adaugare in baza de date

Salut
Am incercat sa adaug mai multe campuri scripturlui oferit de MarPlo, dar nu imi mai merge.
Conectarea si crearea tabelului imi merg, dar preluarea si inserarea in database nu merge.
Cine stie cu ce am gresit in cod sa ma ajute.

Cod: Selectaţi tot

<?php
// Se defineste un Header pt. a utiliza setul de caractere cu format UTF-8
header('Content-type: text/html; charset=utf-8');

$mesaj = '';          // Variabila folosita pt. mesajul ce va fi afisat pt. utilizator

// Se verifica daca sunt primite datele de la formular
if (isset($_POST['nume']) && isset($_POST['email']) && isset($_POST['studii'])) {
  // Se filtreaza datele pt. eliminare posibile spatii exterioare si tag-uri
  $_POST = array_map("trim", $_POST);
  $_POST = array_map("strip_tags", $_POST);

  // Se verifica daca "magic_quotes_gpc()" este setat ON
  // Daca e ON, se aplica stripslashes() pentru a nu se adauga de 2 ori '\' cand va fi aplicat "mysql_real_escape_string()"
  if(get_magic_quotes_gpc()) { $_POST = array_map("stripslashes", $_POST); }

  // Se verifica daca au fost completate corect toate campurile
  // Daca au fost completate le preia in variabile, in caz contrar seteaza o variabila tip Array cu mesaj de eroare

  // Verifica daca Numele are cel putin 3 caractere si maxim 40
  if(strlen($_POST['nume'])>2 && strlen($_POST['nume'])<41) $nume = $_POST['nume'];
  else $eroare[] = 'Caseta cu Nume si Prenume trebuie sa contina intre 3 si 40 caractere';

  // Verifica daca adresa de e-mail scrisa corespunde formatului unei adrese de e-mail
  if(preg_match('/^([a-zA-Z0-9]+[a-zA-Z0-9._%-]*@([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,4})$/', $_POST['email'])) $email = $_POST['email'];
  else $eroare[] = 'Completati corect adresa de e-mail';

  // Verifica daca a fost selectata o valoare pt. 'studii'
  if(strlen($_POST['studii'])>2) $studii = $_POST['studii'];
  else $eroare[] = 'Selectati "Ultimile Studii"';

  // Verifica daca a fost bifat buton pt. 'stare civila'
  if(isset($_POST['stare_c']) && strlen($_POST['stare_c'])>2) $stare_c = $_POST['stare_c'];
  else $eroare[] = 'Selectati butonul corespunzator pentru "Stare civila"';

  // Daca nu exista nici un mesaj de eroare, filreaza datele cu mysql_real_escape_string() si le adauga in baza de date
  // Altfel, in cazul vreunei erori, adauga in variabila $mesaj
  if (!isset($eroare)) {
    include('conn.php');         // Include fisierul pt. conectare-selectare baza de dat

    // Se aplica functia de filtrare mysql_real_escape_string()
    $nume = mysql_real_escape_string($nume);
    $email = mysql_real_escape_string($email);
    
    
    // Acum se adauga mai in siguranta aceste date in MySQL
     $sql = "INSERT INTO `membri` ('nume','nrinmat','adresa','tel','email','cat','body','marca','anf','masa','nrloc','vit','rez','cul','exp') 
    VALUES ( '$nume','$nrinmat','$adresa','$tel','$email','$cat','$body','$marca','$anf','$masa','$nrloc','$vit','$rez','$cul','$exp' )";
    if (mysql_query($sql, $conn)) {
      $mesaj = '<font color="blue">Datele au fost adaugate</font>';
      $nume=''; $nrinmat=''; $adresa=''; $tel=''; $email='';   $marca=''; 
      $masa=''; $nrloc=''; $vit=''; $rez=''; $cul=''; $exp='';
    }
    else $mesaj = '<font color="red">Datele nu au putut fi adaugate '. mysql_error(). '</font>';
    
    mysql_close($conn);
  }
  else $mesaj = '<font color="red">'. implode('<br />', $eroare). '</font>';
}

echo $mesaj;
?>

<form action="" method="post">
 Nume si Prenume: &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <input type="text" name="nume" id="nume" value="<?php if(isset($nume)) echo $nume; ?>" /><br />
 <br>
 Numar de inmatriculare dorit:<input type="text" name="nrinmat" id="nrinmat" value="<?php if(isset($nrinmat)) echo $nrinmat; ?>" /><br />
 Adresa proprietar: <input type="text" name="adresa" id="adresa" value="<?php if(isset($adresa)) echo $adresa; ?>" /><br />
 Numar de telefon: <input type="text" name="tel" id="tel" value="<?php if(isset($tel)) echo $tel; ?>" /><br />
 Adresa E-mail: <input type="text" name="email" id="email" value="<?php if(isset($email)) echo $email; ?>" /><br />
 Categorie autovehicul: <select name="cat" id="cat">
  <option value="">Alege aici</option>
  <option value="a">A-Moped+subcategorii</option>
  <option value="b">B-Autoturisme+subcategorii</option>
  <option value="c">C-Camioane+subcategorii</option>
  <option value="d">D-Transport calatori+subcategorii</option>
  <option value="tr">TR-Tractor+subcategorii</option>
 </select><br />
 Caroserie autovehicul: <select name="body" id="body">
  <option value="">Alege aici</option>
  <option value="berlina">Berlina</option>
  <option value="break">Break</option>
  <option value="coupe">Coupe</option>
  <option value="cabriolet">Cabriolet</option>
  <option value="limuzina">Limuzina</option> 
  <option value="roadster">Roadster</option>
  <option value="spider">Spider</option>
  <option value="pick">Pick-up</option>
 </select><br />
  Marca: <input type="text" name="marca" id="marca" value="<?php if(isset($marca)) echo $marca; ?>" /><br />
  An fabricatie: <select name="anf" id="anf">
 
  <option value="">Alege</option>
            
                  <option value="2012" >   2012 </option>
                  
                  <option value="2011" >  2011 </option>

     Masa totala admisa: <input type="text" name="masa" id="masa" value="<?php if(isset($masa)) echo $masa; ?>" /><br />
     Nr. locuri: <input type="text" name="nrloc" id="nrloc" value="<?php if(isset($nrloc)) echo $nrloc; ?>" /><br />
     Viteza maxima: <input type="text" name="vit" id="vit" value="<?php if(isset($vit)) echo $vit; ?>" /><br />
     Capacitate rezervor: <input type="text" name="rez" id="rez" value="<?php if(isset($rez)) echo $rez; ?>" /><br />
     Culoarea : <input type="text" name="cul" id="cul"value="<?php if(isset($cul)) echo $cul; ?>" /><br />
     Data la care expira ITP: <input type="text" name="exp" id="exp" value="<?php if(isset($exp)) echo $exp; ?>" /><br />
 <input type="submit" name="submit" id="submit" value="Trimite" />
</form>

MarPlo
- Din ce m-ma uitat putin pe codul de sus, e gresit la comanda Insert. Adaugi variabile care nu au fost definite inainte de adauarea lor in $sql, de exemplu: $tel, $marca.
Daca adaugi campuri noi in formular, trebuie facute mai multe modificari,
Corespunzator campurilor noi adaugate, trebuie adaugate si coloane in tabel MySQL la crearea lui. Trebuie modificate si comenzile Insert, Select, ca sa contina noile campuri. Plus alte modificari la verifcarea datelor primite prin POST si afisarea celor selectate.

- Ca indicatie, orice variabila adaugata in SQL, trebuie creata inainte de acea linie de cod. Daca sunt cu date din formular, trebuie definite cu $_POST['nume_camp'] pentru fiecare camp din formular.

bogdanel
Ok,am rezolvat problema variabilelor acum imi apare o eroare dupa ce dau clic pe trimiterea datelor:

Cod: Selectaţi tot

Datele nu au putut fi adaugate You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''nume','nrinmat','adresa','tel','email','cat','body','marca','anf','masa','nrloc' at line 1
Fisierul adauga.php

Cod: Selectaţi tot

<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
// Se defineste un Header pt. a utiliza setul de caractere cu format UTF-8
header('Content-type: text/html; charset=utf-8');

$mesaj = '';          // Variabila folosita pt. mesajul ce va fi afisat pt. utilizator

// Se verifica daca sunt primite datele de la formular
if (isset($_POST['nume']) && isset($_POST['email']) && isset($_POST['nrinmat']) && isset($_POST['adresa'])
    && isset($_POST['tel'])  && isset($_POST['cat'])  && isset($_POST['body'])   && isset($_POST['marca']) 
    && isset($_POST['anf'])  && isset($_POST['masa'])  && isset($_POST['nrloc'])   && isset($_POST['vit'])
    && isset($_POST['rez'])  && isset($_POST['cul'])  && isset($_POST['exp'])      ) {
  // Se filtreaza datele pt. eliminare posibile spatii exterioare si tag-uri
  $_POST = array_map("trim", $_POST);
  $_POST = array_map("strip_tags", $_POST);

  // Se verifica daca "magic_quotes_gpc()" este setat ON
  // Daca e ON, se aplica stripslashes() pentru a nu se adauga de 2 ori '\' cand va fi aplicat "mysql_real_escape_string()"
  if(get_magic_quotes_gpc()) { $_POST = array_map("stripslashes", $_POST); }

  // Se verifica daca au fost completate corect toate campurile
  // Daca au fost completate le preia in variabile, in caz contrar seteaza o variabila tip Array cu mesaj de eroare

  // Verifica daca Numele are cel putin 3 caractere si maxim 40
  if(strlen($_POST['nume'])>2 && strlen($_POST['nume'])<41) $nume = $_POST['nume'];
  else $eroare[] = 'Caseta cu Nume si Prenume trebuie sa contina intre 3 si 40 caractere';

  // Verifica daca adresa de e-mail scrisa corespunde formatului unei adrese de e-mail
  if(preg_match('/^([a-zA-Z0-9]+[a-zA-Z0-9._%-]*@([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,4})$/', $_POST['email'])) $email = $_POST['email'];
  else $eroare[] = 'Completati corect adresa de e-mail';

  // Daca nu exista nici un mesaj de eroare, filreaza datele cu mysql_real_escape_string() si le adauga in baza de date
  // Altfel, in cazul vreunei erori, adauga in variabila $mesaj
  if (!isset($eroare)) {
    include('conn.php');         // Include fisierul pt. conectare-selectare baza de dat

    // Se aplica functia de filtrare mysql_real_escape_string()
    $nume = mysql_real_escape_string($nume);
    $email = mysql_real_escape_string($email);
    $nrinmat = $_POST['nrinmat']; $adresa = $_POST['adresa'];
    $tel = $_POST['tel']; $cat = $_POST['cat'];
    $body = $_POST['body']; $marca = $_POST['marca'];
    $anf = $_POST['anf']; $masa = $_POST['masa'];
    $nrloc = $_POST['nrloc']; $vit = $_POST['vit'];
    $rez = $_POST['rez']; $cul = $_POST['cul'];
    $exp = $_POST['exp'];

    // Acum se adauga mai in siguranta aceste date in MySQL
     $sql = "INSERT INTO `membri` ('nume','nrinmat','adresa','tel','email','cat','body','marca','anf','masa','nrloc','vit','rez','cul','exp') 
    VALUES ( '$nume','$nrinmat','$adresa','$tel','$email','$cat','$body','$marca','$anf','$masa','$nrloc','$vit','$rez','$cul','$exp' )";
    if (mysql_query($sql, $conn)) {
      $mesaj = '<font color="blue">Datele au fost adaugate</font>';
      $nume=''; $nrinmat=''; $adresa=''; $tel=''; $email='';   $marca=''; 
      $masa=''; $nrloc=''; $vit=''; $rez=''; $cul=''; $exp='';
    }
    else $mesaj = '<font color="red">Datele nu au putut fi adaugate '. mysql_error(). '</font>';
    
    mysql_close($conn);
  }
  else $mesaj = '<font color="red">'. implode('<br />', $eroare). '</font>';
}

echo $mesaj;
?>

<form action="" method="post">
 Nume si Prenume: &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <input type="text" name="nume" id="nume" value="<?php if(isset($nume)) echo $nume; ?>" /><br />
 <br>
 Numar de inmatriculare dorit:<input type="text" name="nrinmat" id="nrinmat" value="<?php if(isset($nrinmat)) echo $nrinmat; ?>" /><br />
 Adresa proprietar: <input type="text" name="adresa" id="adresa" value="<?php if(isset($adresa)) echo $adresa; ?>" /><br />
 Numar de telefon: <input type="text" name="tel" id="tel" value="<?php if(isset($tel)) echo $tel; ?>" /><br />
 Adresa E-mail: <input type="text" name="email" id="email" value="<?php if(isset($email)) echo $email; ?>" /><br />
 Categorie autovehicul: <select name="cat" id="cat">
  <option value="">Alege aici</option>
  <option value="a">A-Moped+subcategorii</option>
  <option value="b">B-Autoturisme+subcategorii</option>
  <option value="c">C-Camioane+subcategorii</option>
  <option value="d">D-Transport calatori+subcategorii</option>
  <option value="tr">TR-Tractor+subcategorii</option>
 </select><br />
 Caroserie autovehicul: <select name="body" id="body">
  <option value="">Alege aici</option>
  <option value="berlina">Berlina</option>
  <option value="break">Break</option>
  <option value="coupe">Coupe</option>
  <option value="cabriolet">Cabriolet</option>
  <option value="limuzina">Limuzina</option> 
  <option value="roadster">Roadster</option>
  <option value="spider">Spider</option>
  <option value="pick">Pick-up</option>
 </select><br />
  Marca: <input type="text" name="marca" id="marca" value="<?php if(isset($marca)) echo $marca; ?>" /><br />
  An fabricatie: <select name="anf" id="anf">
 
  <option value="">Alege</option>
            
                  <option value="2012" > 2012 </option>
                  
                  <option value="2011" > 2011 </option>
                  
                  </select><br />
     Masa totala admisa: <input type="text" name="masa" id="masa" value="<?php if(isset($masa)) echo $masa; ?>" /><br />
     Nr. locuri: <input type="text" name="nrloc" id="nrloc" value="<?php if(isset($nrloc)) echo $nrloc; ?>" /><br />
     Viteza maxima: <input type="text" name="vit" id="vit" value="<?php if(isset($vit)) echo $vit; ?>" /><br />
     Capacitate rezervor: <input type="text" name="rez" id="rez" value="<?php if(isset($rez)) echo $rez; ?>" /><br />
     Culoarea : <input type="text" name="cul" id="cul"value="<?php if(isset($cul)) echo $cul; ?>" /><br />
     Data la care expira ITP: <input type="text" name="exp" id="exp" value="<?php if(isset($exp)) echo $exp; ?>" /><br />
 <input type="submit" name="submit" id="submit" value="Trimite" />
</form>
PS: fisierele conn.php si make_table.php(cu modificarile aduse de catre mine adica inserearea campurilor mele) ruleaza perfect,probleme fiind in adauga.php

MarPlo
Numele de coloane, ca si cel de tabel, trebuie adaugate intre acest apostrof `...` (la butonul de langa tasta 1), sau fara (daca numele e dintr-un singur cuvant), nu intre ghlimele simple. Doar valorile de tip sir /text care vrei sa fie inserate se adauga intre ghilimele.
Cam asa:

Cod: Selectaţi tot

$sql = "INSERT INTO `nume_tabel` (`coloana_1`, `coloana_2`) VALUES ('$val1', '$val2')";
 

Subiecte similare