 |
Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Comunitatea PHP Romania
|
| Subiectul anterior :: Subiectul următor |
| Autor |
Mesaj |
z.m
Data înscrierii: 25/Feb/2005
Mesaje: 328
|
| Trimis: Mar Mar 08, 2005 5:46 pm Titlul subiectului: checkbox |
|
|
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. |
|
| Sus |
|
lostone
Data înscrierii: 03/Feb/2005
Mesaje: 233
Locație: behind a firewall
|
| Trimis: Mar Mar 08, 2005 7:06 pm Titlul subiectului: |
|
|
pui
an style="color: #000000"><?php name="checkbox[]"
si automat iti trimite datele sub forma de array, pe care le preiei cam asa:
an style="color: #000000"><?php $val1 = $_POST['checkbox']['val1'];
$val2 = $_POST['checkbox']['val2'];
$val3 = $_POST['checkbox']['val3'];
...or something... |
|
| Sus |
|
z.m
Data înscrierii: 25/Feb/2005
Mesaje: 328
|
| Trimis: Mar Mar 08, 2005 7:39 pm Titlul subiectului: |
|
|
| 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. |
|
| Sus |
|
lostone
Data înscrierii: 03/Feb/2005
Mesaje: 233
Locație: behind a firewall
|
| Trimis: Mie Mar 09, 2005 7:16 am Titlul subiectului: |
|
|
| 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... |
|
| Sus |
|
z.m
Data înscrierii: 25/Feb/2005
Mesaje: 328
|
| Trimis: Mie Mar 09, 2005 4:13 pm Titlul subiectului: |
|
|
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. |
|
| Sus |
|
lostone
Data înscrierii: 03/Feb/2005
Mesaje: 233
Locație: behind a firewall
|
| Trimis: Mie Mar 09, 2005 5:06 pm Titlul subiectului: |
|
|
pai nu ma mira ca nu merge...
daca nu vrei s-asculti. incearca totusi si asa, s-ar putea sa ai o surpriza:
an style="color: #000000"><?php print "<tr><td>$row3[simbol]<input type=checkbox name='checkbox[]' value='true'>";
si le preiei cu
an style="color: #000000"><?php for($i=1;$i<=count($_POST['checkbox']);$i++) {
.....
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... |
|
| Sus |
|
z.m
Data înscrierii: 25/Feb/2005
Mesaje: 328
|
| Trimis: Mie Mar 09, 2005 7:44 pm Titlul subiectului: |
|
|
| Nu imi iese. |
|
| Sus |
|
mihnea sim
Data înscrierii: 20/Aug/2004
Mesaje: 149
Locație: Alexandria
|
| Trimis: Mie Mar 09, 2005 9:20 pm Titlul subiectului: |
|
|
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! |
|
| Sus |
|
z.m
Data înscrierii: 25/Feb/2005
Mesaje: 328
|
| Trimis: Mie Mar 09, 2005 9:43 pm Titlul subiectului: |
|
|
| 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. |
|
| Sus |
|
z.m
Data înscrierii: 25/Feb/2005
Mesaje: 328
|
| Trimis: Mie Mar 09, 2005 11:03 pm Titlul subiectului: |
|
|
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. |
|
| Sus |
|
mihnea sim
Data înscrierii: 20/Aug/2004
Mesaje: 149
Locație: Alexandria
|
| Trimis: Joi Mar 10, 2005 10:54 am Titlul subiectului: |
|
|
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/viewtopic.php?p=10446#10446
si intrebi acolo care e topicul ala. |
|
| Sus |
|
z.m
Data înscrierii: 25/Feb/2005
Mesaje: 328
|
| Trimis: Joi Mar 10, 2005 4:56 pm Titlul subiectului: |
|
|
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. |
|
| Sus |
|
lostone
Data înscrierii: 03/Feb/2005
Mesaje: 233
Locație: behind a firewall
|
| Trimis: Joi Mar 10, 2005 4:58 pm Titlul subiectului: |
|
|
| pai eroarea aia zice ca in tabel mai ai odata o inregistrare cu id-ul 9... |
|
| Sus |
|
mihnea sim
Data înscrierii: 20/Aug/2004
Mesaje: 149
Locație: Alexandria
|
| Trimis: Joi Mar 10, 2005 5:05 pm Titlul subiectului: |
|
|
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! |
|
| Sus |
|
z.m
Data înscrierii: 25/Feb/2005
Mesaje: 328
|
| Trimis: Joi Mar 10, 2005 5:08 pm Titlul subiectului: |
|
|
| 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. |
|
| Sus |
|
PHPRomania Bot
Bot Member
Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google |
| Trimis: Mie Dec 26, 2007 7:01 pm Titlul subiectului: Ad |
|
|
|
|
|
| Sus |
|
| |
|