problema inserare de 2 ori aeleasi date[rezolvat]
Moderatori: Zamolxe, Moderatori
problema inserare de 2 ori aeleasi date[rezolvat]
Buna. Am si eu o problema de inserare in mysql. Am creat tabelele cu urmatorul cod (din export phpmyadmin):
CREATE TABLE IF NOT EXISTS `producatori` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nume_producator` varchar(50) DEFAULT NULL,
`producator_ap` varchar(1000) DEFAULT NULL,
`producator_roboti` varchar(1000) DEFAULT NULL,
`adresa_web` varchar(500) DEFAULT NULL,
`observatii` varchar(1000) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=14 ;
de cate ori nu specific id-ul (si din php si direct din musql) sau trec 0 (zero), imi insereaza de 2 ori aceleasi campuri., incerc de ceva tim sa imi dau seama care e problema. Stie cineva sa-mi zica si mie? va rog!
CREATE TABLE IF NOT EXISTS `producatori` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nume_producator` varchar(50) DEFAULT NULL,
`producator_ap` varchar(1000) DEFAULT NULL,
`producator_roboti` varchar(1000) DEFAULT NULL,
`adresa_web` varchar(500) DEFAULT NULL,
`observatii` varchar(1000) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=14 ;
de cate ori nu specific id-ul (si din php si direct din musql) sau trec 0 (zero), imi insereaza de 2 ori aceleasi campuri., incerc de ceva tim sa imi dau seama care e problema. Stie cineva sa-mi zica si mie? va rog!
Ultima oară modificat Vin Iul 03, 2009 7:51 pm de către ndianaz, modificat de 2 ori în total.
aratane si partea de cod cum faci tu insert in acea tabela, de acolo ai buba in cod , undeva la insert
sau din codul php iti dublezi instructiunea sql
asa ar trebui sa iti arate o instructiune insert in tabela ta, la coloana id nu mai e necesar sa ii atribui o valoare deoarece se autoincrementeaza
sau din codul php iti dublezi instructiunea sql
asa ar trebui sa iti arate o instructiune insert in tabela ta, la coloana id nu mai e necesar sa ii atribui o valoare deoarece se autoincrementeaza
Cod: Selectaţi tot
INSERT INTO `producatori` (
`nume_producator` ,
`producator_ap` ,
`producator_roboti` ,
`adresa_web` ,
`observatii`
)
VALUES (
'variabila_nume_producator',
'variabila_producator_ap',
'variabila_producator_roboti',
'variabila_adresa_web,
'variabila_observatii'
);Oamenii normali nu stiu ca totul e posibil. David Rousset
Nu am vreo insusire speciala, ci sunt numai un pasionat curios. Albert Einstein
Nu am vreo insusire speciala, ci sunt numai un pasionat curios. Albert Einstein
lorand1, din mysql insertia o fac asa cum ai scris si tu, daca specific id-ul imi insereaza o singura line, daca nu-l specific imi insereaza 2 linii identice, dar cu id diferit. In php codul arata astfel:
$id = $_POST['id'];
$name = $_POST['nume_producator'];
$prod_ap= $_POST['producator_ap'];
$prod_roboti = $_POST['producator_roboti'];
$web = $_POST['adresa_web'];
$observes = $_POST['observatii'];
$query = "INSERT INTO producatori (id, nume_producator, producator_ap, producator_roboti, adresa_web, observatii)
VALUES ('$id','$name', '$prod_ap', '$prod_roboti', '$web','$observes')";
cu valorile specifice de tip input dintr-o pagina html
$id = $_POST['id'];
$name = $_POST['nume_producator'];
$prod_ap= $_POST['producator_ap'];
$prod_roboti = $_POST['producator_roboti'];
$web = $_POST['adresa_web'];
$observes = $_POST['observatii'];
$query = "INSERT INTO producatori (id, nume_producator, producator_ap, producator_roboti, adresa_web, observatii)
VALUES ('$id','$name', '$prod_ap', '$prod_roboti', '$web','$observes')";
cu valorile specifice de tip input dintr-o pagina html
incearca acuma asa, ar trebui sa iti functioneze
Cod: Selectaţi tot
$id = $_POST['id'];
$name = $_POST['nume_producator'];
$prod_ap= $_POST['producator_ap'];
$prod_roboti = $_POST['producator_roboti'];
$web = $_POST['adresa_web'];
$observes = $_POST['observatii'];
$query = "INSERT INTO `producatori` (
`nume_producator`,
`producator_ap`,
`producator_roboti`,
`adresa_web`,
`observatii`
)
VALUES (
'$name',
'$prod_ap',
'$prod_roboti',
'$web',
'$observes'
)";Oamenii normali nu stiu ca totul e posibil. David Rousset
Nu am vreo insusire speciala, ci sunt numai un pasionat curios. Albert Einstein
Nu am vreo insusire speciala, ci sunt numai un pasionat curios. Albert Einstein
-
preda.vlad
- Average Member
- Mesaje: 192
- Membru din: Vin Mar 20, 2009 4:56 pm
- Contact:
Userul isi specifica singur idul ? Asta ar trebui generat automat pentru fiecare intrare prin autoincrement la coloana id.
Eu as lasa atat :
Mie mi-e lene sa scriu si coloanele la insert into
Si ... inserarea de 2 ori e posibil sa o faca pentru ca userul da click de 2 ori pe submit, si cum nu poate sa pune acelasi id de 2 ori => autoincrement.
Asta se rezolva cu verificarea pe care am facut-o mai sus.
Sper sa ajute cat de cat ce am scris aici
Bafta
Eu as lasa atat :
Cod: Selectaţi tot
$name = $_POST['nume_producator'];
$prod_ap= $_POST['producator_ap'];
$prod_roboti = $_POST['producator_roboti'];
$web = $_POST['adresa_web'];
$observes = $_POST['observatii'];
$query = mysql_query(SELECT 1 FROM producatori WHERE nume_producator = '$name' AND producator_ap ='$prod_ap' AND producator_roboti='$prod_roboti' AND adresa_web='$web' observatii='$observes' ) or die (mysql_error());
if (mysql_num_rows($query) == 0)
{
$query = mysql_query("INSERT INTO producatori VALUES ('','$name', '$prod_ap', '$prod_roboti', '$web','$observes')") or die mysql_error();
}
Mie mi-e lene sa scriu si coloanele la insert into
Asta se rezolva cu verificarea pe care am facut-o mai sus.
Sper sa ajute cat de cat ce am scris aici
Bafta
Am intarziat putin cu raspunsul pentru ca am incercat ambele coduri;
lorand1-scriptul acela face exact ce-a facut si al meu, nu-i nici o diferenta, merci oricum;
vlad, la asta nu ma gandisem, ideea e buna, problema e ca acum nu functioneaza deloc, incerc sa-i gasesc "buba", dar inca nu reusesc.
Am vrut ca userul sa-si poate alege locatia in tabel, daca e libera, in caz ca doreste, deoarece in momentul in care stergi o linie, mysql-ul continua numaratoarea sarind peste linia aceea, plus ca pe mine ma ajuta mult, deoarece grasesc mereu
si trebuie sa sterg si ar insemna ca tabelul meu sa aiba id-urile foarte distantate. Am vazut ca 0 in locul id-ului functioneaza ca lipsa id-ului, plus ca vreau sa folosesc si if pentru prezenta sau lipsa id-ului.
sper ca ai inteles ceva din ce scrisei
lorand1-scriptul acela face exact ce-a facut si al meu, nu-i nici o diferenta, merci oricum;
vlad, la asta nu ma gandisem, ideea e buna, problema e ca acum nu functioneaza deloc, incerc sa-i gasesc "buba", dar inca nu reusesc.
Am vrut ca userul sa-si poate alege locatia in tabel, daca e libera, in caz ca doreste, deoarece in momentul in care stergi o linie, mysql-ul continua numaratoarea sarind peste linia aceea, plus ca pe mine ma ajuta mult, deoarece grasesc mereu
sper ca ai inteles ceva din ce scrisei
Ia cauta tu in script poate mai ai pe o linie cate iti scapa din vedere inca odata unde iti executa $query;
este posibil sa il mai execute si sa nu iti dai seama, ai folosit la o afisare ceva ? sau faci apel la acea functie din alta parte.
Vezi scriptul de la cap la coada inca o data si vezi sa nu iti fi scapat ceva.
Bafta
este posibil sa il mai execute si sa nu iti dai seama, ai folosit la o afisare ceva ? sau faci apel la acea functie din alta parte.
Vezi scriptul de la cap la coada inca o data si vezi sa nu iti fi scapat ceva.
Bafta
Acesta este tot scriptul:
<?php
$db = "ap_si_roboti";
$host = "localhost";
$user = "root";
$pass = "diana";
$link = mysql_connect($host, $user, $pass);
if ($link == null) {
print "EROARE la conexiune<br/>".mysql_error();
die();
}
else {
print "Conexiunea a reusit<br/>";
if (mysql_select_db($db, $link)) {
print "Selectia bazei de date ".$db. " a reusit<br/>";
}
else {
print "EROARE de selectie<br/>".mysql_error();
die();
}
}
$name = $_POST['nume_producator'];
$prod_ap= $_POST['producator_ap'];
$prod_roboti = $_POST['producator_roboti'];
$web = $_POST['adresa_web'];
$observes = $_POST['observatii'];
$query = mysql_query(SELECT * FROM producatori WHERE nume_producator = '$name' AND producator_ap ='$prod_ap' AND producator_roboti='$prod_roboti' AND adresa_web='$web' observatii='$observes' ) or die (mysql_error());
if (mysql_num_rows($query) == 0)
{
$query = mysql_query("INSERT INTO producatori ( nume_producator, producator_ap, producator_roboti, adresa_web, observatii) VALUES ('$name', '$prod_ap', '$prod_roboti', '$web','$observes')") or die mysql_error();
}
mysql_query($query);
mysql_close();
?>
nu-mi dau seama care e problema

<?php
$db = "ap_si_roboti";
$host = "localhost";
$user = "root";
$pass = "diana";
$link = mysql_connect($host, $user, $pass);
if ($link == null) {
print "EROARE la conexiune<br/>".mysql_error();
die();
}
else {
print "Conexiunea a reusit<br/>";
if (mysql_select_db($db, $link)) {
print "Selectia bazei de date ".$db. " a reusit<br/>";
}
else {
print "EROARE de selectie<br/>".mysql_error();
die();
}
}
$name = $_POST['nume_producator'];
$prod_ap= $_POST['producator_ap'];
$prod_roboti = $_POST['producator_roboti'];
$web = $_POST['adresa_web'];
$observes = $_POST['observatii'];
$query = mysql_query(SELECT * FROM producatori WHERE nume_producator = '$name' AND producator_ap ='$prod_ap' AND producator_roboti='$prod_roboti' AND adresa_web='$web' observatii='$observes' ) or die (mysql_error());
if (mysql_num_rows($query) == 0)
{
$query = mysql_query("INSERT INTO producatori ( nume_producator, producator_ap, producator_roboti, adresa_web, observatii) VALUES ('$name', '$prod_ap', '$prod_roboti', '$web','$observes')") or die mysql_error();
}
mysql_query($query);
mysql_close();
?>
nu-mi dau seama care e problema
Sigur nu executi bucata aia de cod si la GET si la POST? Care e verificarea pe
care o folosesti ca sa executi codul de insert? Ar trebui sa fie ceva de genul:
care o folosesti ca sa executi codul de insert? Ar trebui sa fie ceva de genul:
Cod: Selectaţi tot
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// do insert
// redirect
exit;
}
?>
<!-- afiseaza formular -->
I'm under construction | http://igstan.ro
Amenthes, sper ca intelesei bine ce-ai vrut sa spui (sunt la inceput rau de tot in programare); acela e tot scriptul php, nu mai am nimic in plus, daca pagina ar merge mi-ar afisa "EROARE la conexiune" sau "Conexiunea a reusit" si daca selectia a reusit sau nu, in programul initial afisam si daca insertia a reusit sau nu, si numarul de randuri introduse. Problema e ca pagina nu merge deloc, si chiar nu-mi dau seama de ce. 

Trebuie sa mai ai ceva in plus. Daca nu, e voodoo programming. Nu ai un
fisier HTML cu un formular (FORM), care FORM are un atribut ACTION in care
e adresa catre scriptul de l-ai postat mai sus? Poti sa postezi si partea aceea?
LATER EDIT.
Sper sa nu te deranjeze, dar daca ai spus ca esti la inceput cu PHP-ul, m-am
gandit sa iti rescriu scriptul intr-un mod care mi se pare mie mai organizat.
Scriptul nu e ideal. Se poate si mai bine, dar nu am vrut sa fie prea greu.
Nu il postez aici, l-am pus la adresa asta:
http://gist.github.com/140094
Sper sa te ajute putin, iar daca nu intelegi, poti sa ma intrebi. A, da. Cand il
citesti, citeste-l de jos in sus, nu de sus in jos.
fisier HTML cu un formular (FORM), care FORM are un atribut ACTION in care
e adresa catre scriptul de l-ai postat mai sus? Poti sa postezi si partea aceea?
LATER EDIT.
Sper sa nu te deranjeze, dar daca ai spus ca esti la inceput cu PHP-ul, m-am
gandit sa iti rescriu scriptul intr-un mod care mi se pare mie mai organizat.
Scriptul nu e ideal. Se poate si mai bine, dar nu am vrut sa fie prea greu.
Nu il postez aici, l-am pus la adresa asta:
http://gist.github.com/140094
Sper sa te ajute putin, iar daca nu intelegi, poti sa ma intrebi. A, da. Cand il
citesti, citeste-l de jos in sus, nu de sus in jos.
I'm under construction | http://igstan.ro
iti introduce de doua ori pentru ca iti executi query-ul de doua ori
odata cand il atribui aici:
$query = mysql_query("INSERT INTO producatori ( nume_producator, producator_ap, producator_roboti, adresa_web, observatii) VALUES ('$name', '$prod_ap', '$prod_roboti', '$web','$observes')") or die mysql_error();
si apoi cu
penultima linie
mysql_query($query);
la atribuirea de mai sus trebuia sa ai asa:
$query = "INSERT INTO producatori ( nume_producator, producator_ap, producator_roboti, adresa_web, observatii) VALUES ('$name', '$prod_ap', '$prod_roboti', '$web','$observes')";
si abia apoi il poti executa cu:
mysql_query($query);
Sper ca ai inteles.
PS : la atribuire $query = mysql_query..... $query primeste o functie si ca urmare se executa
@ Amenthes, frumos scriptul, am aruncat si eu o privire
Bafta
odata cand il atribui aici:
$query = mysql_query("INSERT INTO producatori ( nume_producator, producator_ap, producator_roboti, adresa_web, observatii) VALUES ('$name', '$prod_ap', '$prod_roboti', '$web','$observes')") or die mysql_error();
si apoi cu
penultima linie
mysql_query($query);
la atribuirea de mai sus trebuia sa ai asa:
$query = "INSERT INTO producatori ( nume_producator, producator_ap, producator_roboti, adresa_web, observatii) VALUES ('$name', '$prod_ap', '$prod_roboti', '$web','$observes')";
si abia apoi il poti executa cu:
mysql_query($query);
Sper ca ai inteles.
PS : la atribuire $query = mysql_query..... $query primeste o functie si ca urmare se executa
@ Amenthes, frumos scriptul, am aruncat si eu o privire
Bafta
Cine este conectat
Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 7 vizitatori
