10. december 2003 - 15:44Der er
26 kommentarer og 3 løsninger
if sætning driller
Hejsa jeg har denne her ifsætning men den volder lidt problemer
men jeg får hele tiden en parse error: Parse error: parse error in /home/administrator/www/index.php on line 395
linie 395 er denne her
$antal = mysql_query("SELECT * FROM kurv"); //henter ud fra kurv if(isset($_POST[kob_x])) { //hvis køb knappen aktiveres tjek om sessione er sat if(!$_SESSION[tjek] == "") { //hvis sessionen er sat. Tjek så om varen findes while($row = mysql_fetch_array($antal)) { if($row[vare_id] == "$_POST[varenummer]") { echo "OPDATER ANTAL"; //hvis varen findes skal antal i db opdateres /*linie 395*/} else { //hvis ikke varen findes i kurv skal den lægge varen i kurv mysql_query("INSERT INTO kurv (vare_id, unikt_id, antal) VALUES ('$_POST[varenummer]','$_SESSION[unikt_id]','$_POST[antal]')") or die(mysql_error()); } else { //hvis sessionen $_SESSION[tjek] er tom kør funtionen ikke_logget_ind ikke_logget_ind(); } } } }
Skal virksomheder stå stærkere mod angreb og kunne udvikle sig, skal sikkerhed, drift og forretning tænkes sammen. Det er tanken bag Jysk IT’s ambition om at skabe en “sikker fremtid” for kunderne.
det her var det orginale script jeg havde fra starten if(isset($_POST[kob_x])) { if(!$_SESSION[tjek] == "") { mysql_query("INSERT INTO kurv (vare_id, unikt_id, antal) VALUES ('$_POST[varenummer]','$_SESSION[unikt_id]','$_POST[antal]')") or die(mysql_error()); } else { ikke_logget_ind(); } }
og hvis ikke 'tjek' og 'kob_x' og 'vare_id' og 'unikt_id' og 'antal' er defineret som konstanter skal der anførselstegn om
til gengæld er der ingen grund til at sætte anførselsteng omkring "$_POST[varenummer]" i linien: if( $row[vare_id] == $_POST[varenummer] ) {
fire linier under den linie du peger på /*linie 395*/ } else { er der en anden linie med } else { som ikke hører til nogen if-sætning. det vil gå galt.
Svært lige at se hvad du vil, men ser ud til at det er sådan du vi:
$antal = mysql_query("SELECT * FROM kurv"); //henter ud fra kurv if(isset($_POST['kob_x'])) { //hvis køb knappen aktiveres tjek om sessione er sat if(!$_SESSION['tjek'] == "") { //hvis sessionen er sat. Tjek så om varen findes while($row = mysql_fetch_array($antal)) { if($row['vare_id'] == $_POST['varenummer']) { echo "OPDATER ANTAL"; //hvis varen findes skal antal i db opdateres /*linie 395*/ } else { //hvis ikke varen findes i kurv skal den lægge varen i kurv mysql_query("INSERT INTO kurv (vare_id, unikt_id, antal) VALUES ('$_POST[varenummer]','$_SESSION[unikt_id]','$_POST[antal]')") or die(mysql_error()); } } } else { //hvis sessionen $_SESSION[tjek] er tom kør funtionen ikke_logget_ind ikke_logget_ind(); } }
$antal = mysql_query("SELECT * FROM kurv"); //henter ud fra kurv if(isset($_POST['kob_x'])) { //hvis køb knappen aktiveres tjek om sessione er sat if(!$_SESSION['tjek'] == "") { //hvis sessionen er sat. Tjek så om varen findes while($row = mysql_fetch_array($antal))
{ echo "TJEK VAREN"; if($row['vare_id'] == $_POST['varenummer']) { echo "OPDATER ANTAL"; mysql_query("UPDATE kurv antal = '$_POST[antal]' WHERE vare_id = '$_POST[varenummer]' AND unikt_id = '$_SESSION[unikt_id]'") or die(mysql_error()); //hvis varen findes skal antal i db opdateres } else { //hvis ikke varen findes i kurv skal den lægge varen i kurv mysql_query("INSERT INTO kurv (vare_id, unikt_id, antal) VALUES ('$_POST[varenummer]','$_SESSION[unikt_id]','$_POST[antal]')") or die(mysql_error()); echo "indsæt i db"; } } } else { //hvis sessionen $_SESSION[tjek] er tom kør funtionen ikke_logget_ind ikke_logget_ind(); } }
den udskriver ikke nogen af de echo jeg har sat ind
der ligger en fejl idat at else-betingelsen ligger INDE i der hvor du looper kurven igennem - dette medføre 2 ting
1) du kan kun tilføje ting til kurven hvis der allerede ligger noget ! 2) der bliver oprettet en ordre HVER gang du har en anden ting i kurven (da den jo stadig looper gennem kurven)
Nu har dea_pg allerede skrevet det, her er et forslag til jvordan koden kunne være:
du har et problem i den der while sætning:
//hvis sessionen er sat. Tjek så om varen findes while($row = mysql_fetch_array($antal)) { if($row['vare_id'] == $_POST['varenummer']) { echo "OPDATER ANTAL"; //hvis varen findes skal antal i db opdateres /*linie 395*/ } else { //hvis ikke varen findes i kurv skal den lægge varen i kurv mysql_query("INSERT INTO kurv (vare_id, unikt_id, antal) VALUES ('$_POST[varenummer]','$_SESSION[unikt_id]','$_POST[antal]')") or die(mysql_error()); } }
while løkken løber igennem alle de varer der er i indkøbskurven og for hver af varerne udføres if-sætningen. Så hvis det er tredie vare i indkøbskurven vil den prøve at lægge varen i to gange før den kommer til at forsøge at opdatere kurven.
Så jeg ville flytte indsætning af ny vare udenfor while løkken så det først sker nå alle varer er blevet tested igennem og vi er sikre på at varen ikke er der:
//hvis sessionen er sat. Tjek så om varen findes while($row = mysql_fetch_array($antal)) { if($row['vare_id'] == $_POST['varenummer']) { echo "OPDATER ANTAL"; //hvis varen findes skal antal i db opdateres /*linie 395*/ break; // springer ud af while løkken } } if ( !$row ) // hvis while-løkken fik lov at køre færdig blev varen ikke fundet { //hvis ikke varen findes i kurv skal den lægge varen i kurv mysql_query("INSERT INTO kurv (vare_id, unikt_id, antal) VALUES ('$_POST[varenummer]','$_SESSION[unikt_id]','$_POST[antal]')") or die(mysql_error()); }
Hvis man starter med at putte en vae i kurven der ikke eksistere virker det fint, men hvis man derimod putter en vare i der eksistere opdatere den osse antallet, MEN skriver udskriver osse functionen ikke_logget_ind();, hvorfor gør den det??
$antal = mysql_query("SELECT * FROM kurv"); //henter ud fra kurv if(isset($_POST['kob_x'])) { //hvis køb knappen aktiveres tjek om sessione er sat if(!$_SESSION['tjek'] == "") { //hvis sessionen er sat. Tjek så om varen findes while($row = mysql_fetch_array($antal)) { if($row['vare_id'] == $_POST['varenummer']) { mysql_query("UPDATE kurv SET antal = '$_POST[antal]' WHERE vare_id = '$_POST[varenummer]' AND unikt_id = '$_SESSION[unikt_id]'") or die(mysql_error());
echo "OPDATER ANTAL"; //hvis varen findes skal antal i db opdateres /*linie 395*/ break; // springer ud af while løkken } } if ( !$row ) // hvis while-løkken fik lov at køre færdig blev varen ikke fundet { //hvis ikke varen findes i kurv skal den lægge varen i kurv mysql_query("INSERT INTO kurv (vare_id, unikt_id, antal) VALUES ('$_POST[varenummer]','$_SESSION[unikt_id]','$_POST[antal]')") or die(mysql_error()); }
else { //hvis sessionen $_SESSION[tjek] er tom kør funtionen ikke_logget_ind ikke_logget_ind(); } } }
$antal = mysql_query("SELECT * FROM kurv"); //henter ud fra kurv if(isset($_POST['kob_x'])) { //hvis køb knappen aktiveres tjek om sessione er sat if(!$_SESSION['tjek'] == "") { //hvis sessionen er sat. Tjek så om varen findes while($row = mysql_fetch_array($antal)) { if($row['vare_id'] == $_POST['varenummer']) { mysql_query("UPDATE kurv SET antal = '$_POST[antal]' WHERE vare_id = '$_POST[varenummer]' AND unikt_id = '$_SESSION[unikt_id]'") or die(mysql_error());
echo "OPDATER ANTAL"; //hvis varen findes skal antal i db opdateres /*linie 395*/ break; // springer ud af while løkken } } if ( !$row ) // hvis while-løkken fik lov at køre færdig blev varen ikke fundet { //hvis ikke varen findes i kurv skal den lægge varen i kurv mysql_query("INSERT INTO kurv (vare_id, unikt_id, antal) VALUES ('$_POST[varenummer]','$_SESSION[unikt_id]','$_POST[antal]')") or die(mysql_error()); }
}else { //hvis sessionen $_SESSION[tjek] er tom kør funtionen ikke_logget_ind ikke_logget_ind(); } }
gider i alle 3 lægge et svar så i kan få lidt for hjælpen?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.