2 submit tlacidla

Programovacie jazyky, rady, poradňa...
vladis
Novice
Novice
Príspevky: 8
Registrovaný: 18 aug 2009, 9:33

2 submit tlacidla

Príspevok od používateľa vladis »

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
awtt
Medium Professional
Medium Professional
Používateľov profilový obrázok
Príspevky: 1234
Registrovaný: 01 nov 2006, 19:37
Bydlisko: San Francisco
Kontaktovať používateľa:

Príspevok od používateľa awtt »

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'])
...
?>
ale neviem či to je najlepšie riešenie...
TGiJack
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 419
Registrovaný: 30 nov 2006, 19:37
Bydlisko: NO
Kontaktovať používateľa:

Príspevok od používateľa TGiJack »

tak kde je problem jedno tlačitko bude mat name=submit1 a druhe name=submit2 atd... a podla toho ktore tlačitko stlačiš tak sa ti pošle a ostatne ostanu neodoslane 8)
vladis
Novice
Novice
Príspevky: 8
Registrovaný: 18 aug 2009, 9:33

Príspevok od používateľa vladis »

to je jasne odosle ... ono to ajc odosle ten ktory chcem ale problem je v tom ze to odosle hned dvakrat :(

stlacim raz na submit1 a do databazy mi zapise 2 krat to iste
Gepid
Medium Professional
Medium Professional
Používateľov profilový obrázok
Príspevky: 1006
Registrovaný: 15 júl 2008, 16:54
Bydlisko: Trnava
Kontaktovať používateľa:

Príspevok od používateľa Gepid »

A čo tak poslať zdroják?
Niečo tam určite zle robíš.
vladis
Novice
Novice
Príspevky: 8
Registrovaný: 18 aug 2009, 9:33

Príspevok od používateľa vladis »

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
.
.
.
.






chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

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).
vladis
Novice
Novice
Príspevky: 8
Registrovaný: 18 aug 2009, 9:33

Príspevok od používateľa vladis »

tak tu to je v prilohe ako to zobrazi
Prílohy
web.GIF
(15.35 KiB) 150 stiahnutí
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

vladis napísal:tak tu to je v prilohe ako to zobrazi
chrono 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).
je nám jedno ako to vypadá, treba zdroják nech vidíme chybu
vladis
Novice
Novice
Príspevky: 8
Registrovaný: 18 aug 2009, 9:33

Príspevok od používateľa vladis »

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 "" ;
}

 }


?>
/// tu je cely zdrojak co som zrobil
tuti
Light Professional
Light Professional
Používateľov profilový obrázok
Príspevky: 740
Registrovaný: 01 okt 2006, 19:23
Bydlisko: Prievidza

Príspevok od používateľa tuti »

nema byt

Kód: Vybrať všetko

if($submit1 && $suma && $a) { ... 
ale ma byt

Kód: Vybrať všetko

if($_POST['submit1'] && $suma && $a) { ... 
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
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Tam je skôr problém tá séria elseif (nechce sa mi zisťovať, čo to robí, keďže aj tak by som nevedel, čo to robiť má).
tuti
Light Professional
Light Professional
Používateľov profilový obrázok
Príspevky: 740
Registrovaný: 01 okt 2006, 19:23
Bydlisko: Prievidza

Príspevok od používateľa tuti »

to $a $b $c su zjavne typy kto vyhra.

ale co mi este prislo zaujimave keby sa autor kodu pozrel na ten inserty, ktore su v elseif castiach a vklada do nich $nasobenie1..ci je to zamer?
vladis
Novice
Novice
Príspevky: 8
Registrovaný: 18 aug 2009, 9:33

Príspevok od používateľa vladis »

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
awtt
Medium Professional
Medium Professional
Používateľov profilový obrázok
Príspevky: 1234
Registrovaný: 01 nov 2006, 19:37
Bydlisko: San Francisco
Kontaktovať používateľa:

Príspevok od používateľa awtt »

napríklad nedávaj form aj insert do toho istého súboru
vladis
Novice
Novice
Príspevky: 8
Registrovaný: 18 aug 2009, 9:33

Príspevok od používateľa vladis »

tak to je moznost ale da sa to oblbnut a aj tak minimalne 2 krat to odosle :(
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

nič ti dvakrát neodosiela, ty máš chybu v tých podmienkach a preto sa vykonajú obe. A proti refreshu stačí kontrola či ten záznam v db už existuje
beluský
Darca
Darca
Používateľov profilový obrázok
Príspevky: 317
Registrovaný: 21 sep 2006, 13:46

Príspevok od používateľa beluský »

Urcite sa prejde aj ta prva podmienka:

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()); } 
Ppretoze dalej mas uz len if... elseif....elseif...else tj. z toho sa vykona len jedno.
vladis
Novice
Novice
Príspevky: 8
Registrovaný: 18 aug 2009, 9:33

Príspevok od používateľa vladis »

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

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;

}
}
?>
1.php

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 "" ;
} 
?>
404.php

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 "" ;
} 

 

?>
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

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?
Napísať odpoveď