checkbox

Secţiune dedicată începatorilor.

Moderatori: Moderatori, Start Moderator

z.m
Senior Member
Mesaje: 339
Membru din: Vin Feb 25, 2005 12:51 pm

checkbox

Mesajde z.m » Mar Mar 08, 2005 5:46 pm

Salut
Vreau sa preiau mai multe valori dintr-un camp,si sa le adaug un checkbox,dupa care sa trimit datele cu POST,si sa le preiau.Ar fi ceva de genul :
$query3="SELECT * FROM monede WHERE activa='true'";
$result3=mysql_query($query3) or die ("Unable to do query 3");
while($row3=mysql_fetch_array($result3))
{
print "<tr><td>$row3[simbol]<input type=checkbox name=checkbox value=true>";
}

Dar probabil am nevoie de ceva de genul checkbox$i,pentru a putea prelua toate campurile,si nu stiu cum trebuie sa fac.Va rog cod pentru ca deja ma dispera.



Avatar utilizator
lostone
Senior Member
Mesaje: 233
Membru din: Joi Feb 03, 2005 2:15 pm
Localitate: behind a firewall
Contact:

Mesajde lostone » Mar Mar 08, 2005 7:06 pm

pui
[php]
name="checkbox[]"
[/php]

si automat iti trimite datele sub forma de array, pe care le preiei cam asa:
[php]
$val1 = $_POST['checkbox']['val1'];
$val2 = $_POST['checkbox']['val2'];
$val3 = $_POST['checkbox']['val3'];
[/php]

...or something...
Madness is a gift that has been given to me...

z.m
Senior Member
Mesaje: 339
Membru din: Vin Feb 25, 2005 12:51 pm

Mesajde z.m » Mar Mar 08, 2005 7:39 pm

Si campul celalalt,cel cu $row[simbol] cum il scriu?Eu vreau sa preiau toate valorile odata,nu separat cum e scris mai sus.Dati-mi va rog un cod complet asa cum v-am rugat.

Avatar utilizator
lostone
Senior Member
Mesaje: 233
Membru din: Joi Feb 03, 2005 2:15 pm
Localitate: behind a firewall
Contact:

Mesajde lostone » Mie Mar 09, 2005 7:16 am

cum adica "toate datele odata", adica intr-o sg variabila, sau cum ?! ai incercat ce ti-am scris mai sus ?! loop-ul ala iti scrie TOATE inregistrarile din baza de date care indeplinesc conditia din query-ul tau. fii mai explicit cu ce vrei sa faci daca vrei si mura-n-gura...
Madness is a gift that has been given to me...

z.m
Senior Member
Mesaje: 339
Membru din: Vin Feb 25, 2005 12:51 pm

Mesajde z.m » Mie Mar 09, 2005 4:13 pm

Eu vreau ceva de genul:
prima parte:
$query3="SELECT * FROM monede WHERE activa='true'";
$result3=mysql_query($query3) or die ("Unable to do query 3");
while($row3=mysql_fetch_array($result3))
{
$num_rows=mysql_num_rows($result3);
print "<tr><td>$row3[simbol]<input type=checkbox name='checkbox$i' value='true'>";
print "<input type=hidden name='simbol$i' value='".$row3['simbol']."'>";
print "<input type=hidden name='num_rows' value='$num_rows'>";
}
si le preiau cu:
$ii=$_POST["num_rows"];
for($i=1;$i<=$ii;$i++)
{
$simbol[$i]=$_POST["simbol$i"];
$checkbox[$i]=$_POST["checkbox$i"];

if($checkbox[$i]=='true')
{
$query8="INSERT INTO limbi(id_limba,simbol,activa,principala,descriere,$simbol[$i]) VALUES
('$id_limba','$simbol','$activa','$principala','$descriere','true')";
$result8=mysql_query($query8) or die ("Unable to do query 8");
}

dar nu imi merge.

Avatar utilizator
lostone
Senior Member
Mesaje: 233
Membru din: Joi Feb 03, 2005 2:15 pm
Localitate: behind a firewall
Contact:

Mesajde lostone » Mie Mar 09, 2005 5:06 pm

pai nu ma mira ca nu merge...

daca nu vrei s-asculti. incearca totusi si asa, s-ar putea sa ai o surpriza:

[php]
print "<tr><td>$row3[simbol]<input type=checkbox name='checkbox[]' value='true'>";
[/php]

si le preiei cu
[php]

for($i=1;$i<=count($_POST['checkbox']);$i++) {
.....
[/php]

si modifici in concordanta pt scriptul tau, nu am timp kiar acum sa il fac, poate mai tarziu.

joaca-te asa, poate iese. sau mai cauta pe gugal, c-ai documentatie destula despre asta...
Madness is a gift that has been given to me...

z.m
Senior Member
Mesaje: 339
Membru din: Vin Feb 25, 2005 12:51 pm

Mesajde z.m » Mie Mar 09, 2005 7:44 pm

Nu imi iese.

mihnea sim
Average Member
Mesaje: 149
Membru din: Vin Aug 20, 2004 9:15 pm
Localitate: Alexandria
Contact:

Mesajde mihnea sim » Mie Mar 09, 2005 9:20 pm

O sa il intreb pe guru joe de ce nu iti merge ...
Da un paste cu eroarea. Ai rulat toate procedurile de debugging pe care ar tb sa le stie oricine cand pleaca la un drum lung? Stii tu, activarea tuturor erorilor si warningurilor din ini, presarare cod cu print mysql_error(), affected_rows() ca sa verifici sql-urile .. printari de variabile pe parcursul vietii lor, comentari ale codului in genul divide-et-impera ... sunt carti intregi despre asta, dar macar cele enumerate de mine tb incercate pt a da de "sursa erorii". Ca dup-aia ne vine mult mai usor!
"o istorie aberanta si injusta copleseste fiinta si o arunca afara din lumea ei"

z.m
Senior Member
Mesaje: 339
Membru din: Vin Feb 25, 2005 12:51 pm

Mesajde z.m » Mie Mar 09, 2005 9:43 pm

Pentru codul de mai sus(ala care l-am scris eu).Am pus un print "ok" inainte de for si il afiseaza,apoi mesajul pe care mi-l da e "unable to do query 8".Da te rog uita-te la codul care l-am scris daca e bine.

z.m
Senior Member
Mesaje: 339
Membru din: Vin Feb 25, 2005 12:51 pm

Mesajde z.m » Mie Mar 09, 2005 11:03 pm

Revin cu scriptul:
$i=1;
$ii=$num_rows;
for($i=1;$i<=$ii;$i++){
$mon[$i]=$object[$i]['simbol']; //asta reprezinta campurile selectate
print "<input type='hidden' name='mon$i' value='$mon[$i]'>";
print "<input type=hidden name='ii' value='$ii'>";
print "<table><td>".$object[$i]['simbol']."</td>";
//checkbox
print "<td><input type=checkbox name=checkbox$i value='true'></td>";
}
si le preiau:
for($i=1;$i<=$ii;$i++)
{
$mon[$i]=$_POST["mon$i"];
$checkbox[$i]=$_POST["checkbox$i"];
if ($checkbox[$i]=="true")
{
$query8="INSERT INTO limbi(id_limba,simbol,activa,principala,descriere,$mon[$i]) VALUES('$id_limba','$simbol','$activa',
'$principala','$descriere','true')";
$result8=mysql_query($query8) or die ("Unable to do query 8");
}
else
{
$query9="INSERT INTO limbi(id_limba,simbol,activa,principala,descriere,$mon[$i]) VALUES('$id_limba','$simbol','$activa',
'$principala','$descriere','false')";
$result9=mysql_query($query9) or die ("Unable to do query 9");

}}}
Imi merge,merg si interogarile,dar nu cum ar trebui.Poate trebuie scris altcumva partea de preluare a checkbox-ului,pentru ca imi ia la preluare valoarea unui singur checkbox,si anume primul,si nu toate checkbox-urile.Cu alte cuvinte imi introduce valoarea unu singur chekbox in tabel,si nu valorile tuturor checkbox-urilor.

mihnea sim
Average Member
Mesaje: 149
Membru din: Vin Aug 20, 2004 9:15 pm
Localitate: Alexandria
Contact:

Mesajde mihnea sim » Joi Mar 10, 2005 10:54 am

fa un print $i in forul ala si un print $_POST['checkbox'.$i]
Apoi scrie un print mysql_error() dupa fiecare mysql_query; si mai da pe forum o cautare cu cuvintele checkbox si implode... unde vei vedea o alta metoda de a scrie/preia date din checkbox; iata cineva care a mai pornit un topic precum tine:

http://www.phpromania.net/forum/viewtop ... 0446#10446

si intrebi acolo care e topicul ala.
"o istorie aberanta si injusta copleseste fiinta si o arunca afara din lumea ei"

z.m
Senior Member
Mesaje: 339
Membru din: Vin Feb 25, 2005 12:51 pm

Mesajde z.m » Joi Mar 10, 2005 4:56 pm

Imi printeaza asa:
2true2trueDuplicate entry '9' for key 1
2 e bine,e $num_rows,true e valoarea selectata,9 este id-ul pe care il introduc in tabel.

Avatar utilizator
lostone
Senior Member
Mesaje: 233
Membru din: Joi Feb 03, 2005 2:15 pm
Localitate: behind a firewall
Contact:

Mesajde lostone » Joi Mar 10, 2005 4:58 pm

pai eroarea aia zice ca in tabel mai ai odata o inregistrare cu id-ul 9...
Madness is a gift that has been given to me...

mihnea sim
Average Member
Mesaje: 149
Membru din: Vin Aug 20, 2004 9:15 pm
Localitate: Alexandria
Contact:

Mesajde mihnea sim » Joi Mar 10, 2005 5:05 pm

Eroare e fie din baza de date, fie din php. Depinde ce vrei sa faci,
1) Daca fieldul id_limba are rolul de simplu contor atunci el e declarat bine (unique key, autoincrement pp), dar e incorect sa ii bagi o valoare stabilita de tine, asa ca lasi valoare nula '' si stie el ce id sa puna

2) daca vrei sa introduci tu un anumit id in id_limba (pt corespondenta cu alt tabel pp) atunci e absolut eronat sa il declari unique si poate chiar si auto_increment. Vezi ca nu e tocmai asa simplu sa faci scripturi php cand nu ai bine pusa la punct partea sql!
"o istorie aberanta si injusta copleseste fiinta si o arunca afara din lumea ei"

z.m
Senior Member
Mesaje: 339
Membru din: Vin Feb 25, 2005 12:51 pm

Mesajde z.m » Joi Mar 10, 2005 5:08 pm

Aha..asta ar insemna ca trebuie sa folosesc UPDATE in loc de INSERT?Mai imi apare o chestie ciudata,si anume dupa ce completez form-ul si ii dau submit,imi printeaza doar ce am pus eu acolo sa printeze pentru verificare,si nu introduce in baza de date nimic.Abia daca mai completez odata form-ul imi introduce.Deci ca sa pot introduce o noua inregistrare,ca asta face form-ul,trebuie sa apas de doua ori pe butonul submit,si nu o singura data.


Înapoi la “PHP Incepători”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 19 vizitatori