2 submit tlacidla
2 submit tlacidla
Ahojte ...
mam skript kte mam 2 submit tlacidla a ak stlacim na ne tak mi udaje odosiela do databazi
ak stlacim na submit1 odosle mi napr 222 a ak na submit2 napr 333
no ale problem je v tom ze ak mam 2 submit tlacidla tak mi odosle 2 krat ten isty udaj ... no a keby som mal 3 tak 3 krat a tak dalej
je nejaky sposob aby som tomu zabranil a odosielalo mi udaj len raz???
Dakujem za pomoc
mam skript kte mam 2 submit tlacidla a ak stlacim na ne tak mi udaje odosiela do databazi
ak stlacim na submit1 odosle mi napr 222 a ak na submit2 napr 333
no ale problem je v tom ze ak mam 2 submit tlacidla tak mi odosle 2 krat ten isty udaj ... no a keby som mal 3 tak 3 krat a tak dalej
je nejaky sposob aby som tomu zabranil a odosielalo mi udaj len raz???
Dakujem za pomoc
-
awtt
Medium Professional
- Príspevky: 1234
- Registrovaný: 01 nov 2006, 19:37
- Bydlisko: San Francisco
- Kontaktovať používateľa:
Kód: Vybrať všetko
<input type="submit" value="submit1" name="submit1">
<input type="submit" value="submit2" name="submit2">
<?php
if($_POST['submit1'])
....
else if ($_POST['submit2'])
...
?>
Kód: Vybrať všetko
$tip[1] = "<form>";
.
.
.
$tip[1] .= "<input type=\"submit\" name=\"submit1\" value=\"Výsledok\" >";
.
.
.
.
$tip[2] .= "<input type=\"submit\" name=\"submit2\" value=\"Výsledok\" >";
.
------------------
if($submit1 && $suma && $a) {
mysql_query("INSERT INTO tipovanie
(meno, zapas, datum, suma, vyhral , kurz, vyhra ) VALUES('$session->username','$zapas[1]','$datum[1]', '$suma', '1', '$kurz1[1]', '$nasobenie1' ) ")
or die(mysql_error()); }
if($submit2 && $suma && $a) {
mysql_query("INSERT INTO tipovanie
(meno, zapas, datum, suma, vyhral , kurz, vyhra ) VALUES('$session->username','$zapas[2]','$datum[2]', '$suma', '1', '$kurz1[2]', '$nasobenie2' ) ")
or die(mysql_error());
}
// tu je to ked dam odoslat submit1 alebo submit2
.
.
.
.
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
vladis napísal:tak tu to je v prilohe ako to zobrazi
je nám jedno ako to vypadá, treba zdroják nech vidíme chybuchrono napísal:Mohol si poslať, aký html kód ti to vlastne vygeneruje (lebo to, čo máš by malo fungovať normálne, ak tam teda nespôsobuje nejaký problém to, že tam potrebuješ povolené register_globals).
Kód: Vybrať všetko
<?
include("include/session.php");
?>
<?
mysql_connect("xxx", "xxx", "xxx") or die(mysql_error());
mysql_select_db("xxx") or die(mysql_error());
// Get all the data from the "example" table
$result = mysql_query("SELECT * FROM users2")
or die(mysql_error());
$zapas[1]="FBC LAMY vs. FBC Loosers" ; $datum[1]="11.8 2009" ; $kurz1[1]=1.32 ; $kurzx[1]=5.45 ; $kurz2[1]=3.40 ;
$zapas[2]="FBC LAMKY vs. FBC Loosers2" ; $datum[2]="12.8 2009" ; $kurz1[2]=1.64 ; $kurzx[2]=3.28 ; $kurz2[2]=2.15 ;
$tip[1] = "<form>";
$tip[1] .="Zadajte hodnoty:<br>";
$tip[1] .= "$zapas[1]";
$tip[1] .= "$datum[1]";
$tip[1] .= "<input name=\"suma\" type=\"text\" maxlength=\"3\" minlength=\"1\">";
$tip[1] .= "<input name=\"a\" type=\"radio\">".$kurz1[1];
$tip[1] .= "<input name=\"b\" type=\"radio\" >".$kurzx[1];
$tip[1] .= "<input name=\"c\" type=\"radio\" >".$kurz2[1];
$tip[1] .= "<input type=\"submit\" name=\"submit1\" value=\"Výsledok\" >";
$tip[1] .= "</form>";
$tip[2] = "<form>";
$tip[2] .="Zadajte hodnoty:<br>";
$tip[2] .= "$zapas[2]";
$tip[2] .= "$datum[2]";
$tip[2] .= "<input name=\"suma\" type=\"text\" maxlength=\"3\" minlength=\"1\">";
$tip[2] .= "<input name=\"a\" type=\"radio\">".$kurz1[2];
$tip[2] .= "<input name=\"b\" type=\"radio\" >".$kurzx[2];
$tip[2] .= "<input name=\"c\" type=\"radio\" >".$kurz2[2];
$tip[2] .= "<input type=\"submit\" name=\"submit2\" value=\"Výsledok\" >";
$tip[2] .= "</form>";
for($i=1;$i<3;$i++){
$ID_tip = mysql_query("SELECT ID_tip FROM tipovanie ") or die(mysql_error());
$result = mysql_query("SELECT * FROM tipovanie where meno like '$session->username' and zapas like '$zapas[$i]' LIMIT 1") or die(mysql_error());
if(mysql_num_rows($result) == 1){
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
printf(" %s %s %s %s %s", $row["datum"], $row["zapas"], $row["suma"], $row["kurz"], $row["vyhra"]);
}
mysql_free_result($result);}
else{
mysql_num_rows($result) == 0;
echo "$tip[$i]";
}
$meno[1]=$session->username;
$nasobenie1=$kurz1[1] * $suma;
$nasobenie2=$kurz1[2] * $suma;
if($submit1 && $suma && $a) {
mysql_query("INSERT INTO tipovanie
(meno, zapas, datum, suma, vyhral , kurz, vyhra ) VALUES('$session->username','$zapas[1]','$datum[1]', '$suma', '1', '$kurz1[1]', '$nasobenie1' ) ")
or die(mysql_error()); }
if($submit2 && $suma && $a) {
mysql_query("INSERT INTO tipovanie
(meno, zapas, datum, suma, vyhral , kurz, vyhra ) VALUES('$session->username','$zapas[2]','$datum[2]', '$suma', '1', '$kurz1[2]', '$nasobenie2' ) ")
or die(mysql_error());
}
elseif ($b && $suma) {
$nasobeniex=$kurzx[$i] * $suma;
echo "$nasobeniex";
mysql_query("INSERT INTO tipovanie
(meno,zapas, datum, suma, vyhral , kurz ) VALUES('$session->username','$zapas[1] xor $zapas[2]','$datum[$i]', '$suma', 'x', '$kurzx[$i]' '$nasobenie1') ")
or die(mysql_error());
}
elseif ($c && $suma) {
$nasobenie2=$kurz2[$i] * $suma;
echo "<div > $nasobenie2 </div>";
mysql_query("INSERT INTO tipovanie
(meno, suma, vyhral , kurz ) VALUES('$session->username','$zapas[$i]','$datum[$i]', '$suma', '2', '$kurz2[$i]' '$nasobenie1') ")
or die(mysql_error());
}
elseif ($a xor $b xor $c xor $suma){
echo "<div style='color:#00FF00'><br>Musíte vyplnit sumu a zykrtnú polí`eko</div>" ;
}
else{
echo "" ;
}
}
?>
nema byt ale ma byt
v tvojom pripade sa pytas ci je nastavena premenna submit. v tom druhom pripade sa pytas ci je nastavena premenna submit, ktora ti bola poslana
Kód: Vybrať všetko
if($submit1 && $suma && $a) { ... Kód: Vybrať všetko
if($_POST['submit1'] && $suma && $a) { ... tak toto if($_POST['submit1'] && $suma && $a) { ... ked dam tak to nejde vobec
.. a som skratil kod tak asi to budem robit zlozitejsie
...
... ale nejaku fintu na to ze ked mi odosle data do databazy ... tak aby ich neodoslalo este raz je???
lebo ked stlacim na Vysledok tak mi odosle udaje ale keby som dal ze obnovit stranku tak mi to bude odosielat tolko krat kolko stlacim na obnovit stranku
.. a som skratil kod tak asi to budem robit zlozitejsie
... ale nejaku fintu na to ze ked mi odosle data do databazy ... tak aby ich neodoslalo este raz je???
lebo ked stlacim na Vysledok tak mi odosle udaje ale keby som dal ze obnovit stranku tak mi to bude odosielat tolko krat kolko stlacim na obnovit stranku
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Urcite sa prejde aj ta prva podmienka:
Ppretoze dalej mas uz len if... elseif....elseif...else tj. z toho sa vykona len jedno.
Kód: Vybrať všetko
if($submit1 && $suma && $a) {
mysql_query("INSERT INTO tipovanie
(meno, zapas, datum, suma, vyhral , kurz, vyhra ) VALUES('$session->username','$zapas[1]','$datum[1]', '$suma', '1', '$kurz1[1]', '$nasobenie1' ) ")
or die(mysql_error()); } no ono to fakt odosiela 2krat
tu si mozte vyskusat ... stlacis iba na jedno a ked das obnovit stranku tak ti nabehne aj druhe
http://medvede.wz.cz/LOGIN/Login%20System%20v.2.0/2.php
prihlasenie:
http://medvede.wz.cz/LOGIN/Login%20Syst ... 0/main.php
meno:vladis
heslo: vladis
ono to hned uz odosle aj ten druhy riadok
2.php
1.php
404.php
tu si mozte vyskusat ... stlacis iba na jedno a ked das obnovit stranku tak ti nabehne aj druhe
http://medvede.wz.cz/LOGIN/Login%20System%20v.2.0/2.php
prihlasenie:
http://medvede.wz.cz/LOGIN/Login%20Syst ... 0/main.php
meno:vladis
heslo: vladis
ono to hned uz odosle aj ten druhy riadok
2.php
Kód: Vybrať všetko
<?
$zapas[2]="FBC LAMKY vs. FBC Loosers2" ; $datum[2]="12.8 2009" ; $kurz1[2]=1.64 ; $kurzx[2]=3.28 ; $kurz2[2]=2.15 ;
$zapas[1]="FBC LAMY vs. FBC Loosers" ; $datum[1]="11.8 2009" ; $kurz1[1]=1.32 ; $kurzx[1]=5.45 ; $kurz2[1]=3.40 ;
$result = mysql_query("SELECT * FROM tipovanie where meno like '$session->username' and zapas like '$zapas[1]' LIMIT 1") or die(mysql_error());
$result2 = mysql_query("SELECT * FROM tipovanie where meno like '$session->username' and zapas like '$zapas[2]' LIMIT 1") or die(mysql_error());
if(mysql_num_rows($result) == 1):
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
printf(" %s %s %s %s %s", $row["datum"], $row["zapas"], $row["suma"], $row["kurz"], $row["vyhra"]);
}
mysql_free_result($result);
else:
mysql_num_rows($result) == 0;
include("404.php");
endif;
if(mysql_num_rows($result2) == 1):
while ($row = mysql_fetch_array($result2, MYSQL_ASSOC)) {
printf(" %s %s %s %s %s", $row["datum"], $row["zapas"], $row["suma"], $row["kurz"], $row["vyhra"]);
}
mysql_free_result($result2);
else:
mysql_num_rows($result2) == 0;
include("1.php");
endif;
}
}
?>
Kód: Vybrať všetko
<?
mysql_connect...
// Get all the data from the "example" table
$result = mysql_query("SELECT * FROM users2")
or die(mysql_error());
$zapas[2]="FBC LAMKY vs. FBC Loosers2" ; $datum[2]="12.8 2009" ; $kurz1[2]=1.64 ; $kurzx[2]=3.28 ; $kurz2[2]=2.15 ;
$tip[2] = "<form>";
$tip[2] .="Zadajte hodnoty:<br>";
$tip[2] .= "$zapas[2]";
$tip[2] .= "$datum[2]";
$tip[2] .= "<input name=\"suma\" type=\"text\" maxlength=\"3\" minlength=\"1\">";
$tip[2] .= "<input name=\"a\" type=\"radio\">".$kurz1[2];
$tip[2] .= "<input name=\"b\" type=\"radio\" >".$kurzx[2];
$tip[2] .= "<input name=\"c\" type=\"radio\" >".$kurz2[2];
$tip[2] .= "<input type=\"submit\" name=\"submit2\" value=\"Výsledok\" >";
$tip[2] .= "</form>";
$result2 = mysql_query("SELECT * FROM tipovanie where meno like '$session->username' and zapas like '$zapas[2]' LIMIT 1") or die(mysql_error());
if(mysql_num_rows($result2) == 1){
while ($row = mysql_fetch_array($result2, MYSQL_ASSOC)) {
printf(" %s %s %s %s %s", $row["datum"], $row["zapas"], $row["suma"], $row["kurz"], $row["vyhra"]);
}
mysql_free_result($result2);}
else{
mysql_num_rows($result2) == 0;
echo "$tip[2]";
}
$nasobenie1=$kurz1[1] * $suma;
$nasobenie2=$kurz1[2] * $suma;
$nasobeniex1=$kurzx[1] * $suma;
$nasobeniex2=$kurzx[2] * $suma;
$nasobenie21=$kurz2[1] * $suma;
$nasobenie22=$kurz2[2] * $suma;
if($suma && $a) {
mysql_query("INSERT INTO tipovanie
(meno, zapas, datum, suma, vyhral , kurz, vyhra ) VALUES('$session->username','$zapas[2]','$datum[2]', '$suma', '1', '$kurz1[2]', '$nasobenie2' ) ")
or die(mysql_error()); }
elseif($suma && $b) {
mysql_query("INSERT INTO tipovanie
(meno, zapas, datum, suma, vyhral , kurz, vyhra ) VALUES('$session->username','$zapas[2]','$datum[2]', '$suma', 'x', '$kurzx[2]', '$nasobeniex2' ) ")
or die(mysql_error()); }
elseif($suma && $c) {
mysql_query("INSERT INTO tipovanie
(meno, zapas, datum, suma, vyhral , kurz, vyhra ) VALUES('$session->username','$zapas[2]','$datum[2]', '$suma', '2', '$kurz2[2]', '$nasobenie22' ) ")
or die(mysql_error()); }
elseif ($a xor $b xor $c xor $suma){
echo "<div style='color:#00FF00'><br>Musíte vyplnit sumu a zykrtnú polí`eko</div>" ;
}
else{
echo "" ;
}
?>Kód: Vybrať všetko
<?
mysql_connect...
// Get all the data from the "example" table
$result = mysql_query("SELECT * FROM users2")
or die(mysql_error());
$zapas[1]="FBC LAMY vs. FBC Loosers" ; $datum[1]="11.8 2009" ; $kurz1[1]=1.32 ; $kurzx[1]=5.45 ; $kurz2[1]=3.40 ;
$tip[1] = "<form>";
$tip[1] .="Zadajte hodnoty:<br>";
$tip[1] .= "$zapas[1]";
$tip[1] .= "$datum[1]";
$tip[1] .= "<input name=\"suma\" type=\"text\" maxlength=\"3\" minlength=\"1\">";
$tip[1] .= "<input name=\"a\" type=\"radio\">".$kurz1[1];
$tip[1] .= "<input name=\"b\" type=\"radio\" >".$kurzx[1];
$tip[1] .= "<input name=\"c\" type=\"radio\" >".$kurz2[1];
$tip[1] .= "<input type=\"submit\" name=\"submit1\" value=\"Výsledok\" >";
$tip[1] .= "</form>";
$result = mysql_query("SELECT * FROM tipovanie where meno like '$session->username' and zapas like '$zapas[1]' LIMIT 1") or die(mysql_error());
if(mysql_num_rows($result) == 1){
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
printf(" %s %s %s %s %s", $row["datum"], $row["zapas"], $row["suma"], $row["kurz"], $row["vyhra"]);
}
mysql_free_result($result);}
else{
mysql_num_rows($result) == 0;
echo "$tip[1]";
}
$nasobenie1=$kurz1[1] * $suma;
$nasobenie2=$kurz1[2] * $suma;
$nasobeniex1=$kurzx[1] * $suma;
$nasobeniex2=$kurzx[2] * $suma;
$nasobenie21=$kurz2[1] * $suma;
$nasobenie22=$kurz2[2] * $suma;
if($suma && $a) {
mysql_query("INSERT INTO tipovanie
(meno, zapas, datum, suma, vyhral , kurz, vyhra ) VALUES('$session->username','$zapas[1]','$datum[1]', '$suma', '1', '$kurz1[1]', '$nasobenie1' ) ")
or die(mysql_error()); }
elseif($suma && $b) {
mysql_query("INSERT INTO tipovanie
(meno, zapas, datum, suma, vyhral , kurz, vyhra ) VALUES('$session->username','$zapas[1]','$datum[1]', '$suma', 'x', '$kurzx[1]', '$nasobeniex1' ) ")
or die(mysql_error()); }
elseif($suma && $c) {
mysql_query("INSERT INTO tipovanie
(meno, zapas, datum, suma, vyhral , kurz, vyhra ) VALUES('$session->username','$zapas[1]','$datum[1]', '$suma', '2', '$kurz2[1]', '$nasobenie21' ) ")
or die(mysql_error()); }
elseif ($a xor $b xor $c xor $suma){
echo "<div style='color:#00FF00'><br>Musíte vyplnit sumu a zykrtnú polí`eko</div>" ;
}
else{
echo "" ;
}
?>
Odošle sa len jedno, ten skript to tam pridá dva krát.
Máš tam viac problémov (ak odhliadnem od toho, že to vyžaduje short_tags, register_globals a nijako to nie je ošetrené proti posielaniu upravených údajov). Oba formy obsahujú rovnako pomenované elementy, jediný rozdiel je to odosielacie tlačidlo. Niektoré podmienky testujú len to, či je nastavená $suma a $a/$b/$c. Ak potvrdíš ktorýkoľvek riadok, tak tie podmienky môžu byť splnené a bude splnená aj tá podmienka, v ktorej testuješ konkrétny formulár.
Čiže, celé to prerob tak, aby si tam testoval to, čo tam testovalo všetko, čo sa tam testovať má (kľudne môžem upraviť ten formulár tak, aby boli zvolené všetky možnosti a ten tvoj skript si s tým neporadí) a aby sa to testovalo rozumným spôsobom (to xor ti funguje len náhodou).
PS: Ideálne by bolo, keby to bolo robené tak, aby to bolo programované pre php4 alebo php5 (a nie pre php3, ako to je teraz).
PPS: Netuším, prečo je každý riadok iný form. Nestačí len jeden?
Máš tam viac problémov (ak odhliadnem od toho, že to vyžaduje short_tags, register_globals a nijako to nie je ošetrené proti posielaniu upravených údajov). Oba formy obsahujú rovnako pomenované elementy, jediný rozdiel je to odosielacie tlačidlo. Niektoré podmienky testujú len to, či je nastavená $suma a $a/$b/$c. Ak potvrdíš ktorýkoľvek riadok, tak tie podmienky môžu byť splnené a bude splnená aj tá podmienka, v ktorej testuješ konkrétny formulár.
Čiže, celé to prerob tak, aby si tam testoval to, čo tam testovalo všetko, čo sa tam testovať má (kľudne môžem upraviť ten formulár tak, aby boli zvolené všetky možnosti a ten tvoj skript si s tým neporadí) a aby sa to testovalo rozumným spôsobom (to xor ti funguje len náhodou).
PS: Ideálne by bolo, keby to bolo robené tak, aby to bolo programované pre php4 alebo php5 (a nie pre php3, ako to je teraz).
PPS: Netuším, prečo je každý riadok iný form. Nestačí len jeden?