Avatar billede fhansen Praktikant
27. februar 2007 - 00:31 Der er 21 kommentarer og
1 løsning

Problem med variable

Hejsa.

Jeg har lidt problemer med en variabel, som jeg gerne vil have unset().

var. bruger jeg til at kalde forskellige functioner, mit kald ser således ud..

<? echo "<a href=".$PHP_SELF.'?action=Add_Launch&id='.$rows['Id'].">VÆLG</a>"; ?>

Problemmet er ?action. Det er denne variabel jeg gerne vil have unset(), hvis denne ikke bliver slettet, bliver min errorpop() hentet hver gang jeg foretager et submit, som f.eks. når bruger vælger en ny dato.

$Action= $_REQUEST["action"];
$id= $_REQUEST["id"];

switch($Action){
    case("Del_Launch"):
    Del_Launch();
    break;
    case("Add_Launch"):
    Add_Launch();
    break;
    case("Find_Launch"):
    Find_Launch();
    break;
    }

function Add_Launch(){
  if(CheckLaunch() == false){
  global $id;
  $No = $_SESSION["No"];
  $Berth = $_SESSION["Plads"];
  $sql = 'UPDATE `launch` SET `Client` = \''.$No.'\', `Berth` = \''.$Berth.'\' WHERE `launch`.`Id` = '.$id.' LIMIT 1;';
  $result=mysql_query($sql);
  }else{
  global $id;
  echo "<SCRIPT LANGUAGE="."JavaScript".">"."errorpop('Prebook.php?id=" . $_SESSION["No"] . "')</script>";
      }
}

Finn
Avatar billede mcardle Nybegynder
27. februar 2007 - 02:34 #1
Kan du ikke bare lave en case "default": som laver ingenting...?
Avatar billede fhansen Praktikant
27. februar 2007 - 10:43 #2
Jeg tror ikke det lige hjælper, jeg er ikke lige klar over, hvad du mener med "default" at jeg har forsøgt med unset("$Action") og lign.

Jeg mener at jeg på en eller anden måde skal lave noget i stil med

<? echo "<a href=".$PHP_SELF.'?action=null&id='.$rows['Id'].">VÆLG</a>"; ?>
Avatar billede mcardle Nybegynder
27. februar 2007 - 17:07 #3
normalt når du laver en case, så laver du også en default. Dvs. at default tager alle dem der ikke passer på den case du har lavet.

Det kunne se sådan her ud:

switch($Action){
    case "Del_Launch":
    Del_Launch();
    break;
    case "Add_Launch":
    Add_Launch();
    break;
    case "Find_Launch":
    Find_Launch();
    break;
    case "default":
    echo 'Ingen action valgt';
    break;
    }
Avatar billede mcardle Nybegynder
27. februar 2007 - 17:08 #4
Så kan du bare slette echo 'Ingen action valgt'; og bruge:

<? echo "<a href=".$PHP_SELF.'?action=default&id='.$rows['Id'].">VÆLG</a>"; ?>
Avatar billede fhansen Praktikant
27. februar 2007 - 23:36 #5
Se se det virker jo fint og dog, linien kræver jo at brugeren skal klikke, jeg har brug for at function bliver kaldt uden brugerens indvirken.
Avatar billede mcardle Nybegynder
27. februar 2007 - 23:55 #6
Hmm, hvis ellers errorpop har en if-statement, så skulle den ikke gøre det. Hvordan ser din kode ud, der hvor errorpop er...?
Avatar billede fhansen Praktikant
28. februar 2007 - 00:44 #7
Her har du lidt kode.
Nummer et var at Luk i errorpop, kunne kalde functionen Del_Launch i launch.php

Launch.php----->

<SCRIPT LANGUAGE="JavaScript">
function errorpop(url,name,win_height,win_width) {
myWin = window.open(url,name,"toolbars=0, scrollbars=0, location=0, statusbars=0, menubars=0, resizable=0, width=404, height=230, left = 362, top = 179");
}
</script>


Functionen der kalder errorpop
function Add_Launch(){
  if(CheckLaunch() == false){
  global $id;
  $No = $_SESSION["No"];
  $Berth = $_SESSION["Plads"];
  $sql = 'UPDATE `launch` SET `Client` = \''.$No.'\', `Berth` = \''.$Berth.'\' WHERE `launch`.`Id` = '.$id.' LIMIT 1;';
  $result=mysql_query($sql);
  }else{
  global $id;
  echo "<SCRIPT LANGUAGE="."JavaScript".">"."errorpop('Prebook.php?id=" . $_SESSION["No"] . "')</script>";

  //her ville jeg gerne have en kode der  kaldte default,
  echo "<a href=".$PHP_SELF.'?action=default&id='.$rows['Id']."></a>"; 

      }
}


<--------Launch.php




Prebbook.php ------> ( siden der loades i errorpop);
<body>

<?
$Action= $_REQUEST["action"];
$id= $_REQUEST["id"];

if(isset($_POST["Launch_del"])){
  include("./Launch.php");
  Del_Launch($rows["Id"]);


}

$sql = 'SELECT l.Id, l.Date, l.Time, l.Berth, l.Client, s.Navn, s.Telefon, s.Mobil, b.Boat, b.Name FROM launch l
          LEFT JOIN sejler s ON l.Client = s.Nummer
          LEFT JOIN boats b ON l.client = b.Client AND l.Berth = b.Berth
          WHERE l.Client = \''.$id.'\'';   
$result=mysql_query($sql) or die("Fejl ligger i query");
$rows=mysql_fetch_array($result) or die ("Fejlen ligger i fetch");
?>

<table width="400"  align="center" border="0" cellpadding="0">
  <tr>
    <td width="15" rowspan="8">&nbsp;</td>
    <td colspan="5">&nbsp;</td>
    <td width="15" rowspan="8">&nbsp;</td>
  </tr>
  <tr>
    <td colspan="5" align="center">Du har allerede booket tid for optagning<br>
Denne skal slettes først du kan booke en ny tid!</td>
  </tr>
  <tr>
    <td colspan="5">&nbsp;</td>
  </tr>
  <tr>
    <td width="38" align="center" bgcolor="#FFFFFF">Plads</td>
    <td width="33" align="center" bgcolor="#FFFFFF">Dato</td>
    <td width="33" align="center" bgcolor="#FFFFFF">Kl.</td>
    <td width="121" bgcolor="#FFFFFF">B&aring;d</td>
    <td width="129" bgcolor="#FFFFFF">B&aring;dnavn</td>
  </tr>
  <tr>
    <td align="center" bgcolor="#FFFFFF"><? echo $rows["Berth"]; ?></td>
    <?
    $Dt = split("
  • ",$rows['Date']);
    $Dt = mktime(0,0,0,$Dt[2], $Dt[1], $Dt[0]);
    $Dtt = date("d-m", $Dt);
    ?>
    <td align="center" bgcolor="#FFFFFF"><? echo $Dtt; ?></td>
    <?
    $St = split("[:]",$rows['Time']);
    $St = mktime($St[0], $St[1]);
    $Stt = date("H:i", $St);
    ?>
    <td align="center" bgcolor="#FFFFFF"><? echo $Stt; ?></td>
    <td bgcolor="#FFFFFF"><? echo $rows["Boat"]; ?></td>
    <td bgcolor="#FFFFFF"><? echo $rows["Name"]; ?></td>
  </tr>
  <tr>
    <td colspan="5">&nbsp;</td>
  </tr>
  <tr>
    <td colspan="5"><table width="370" border="0">
    <form name="form1" method="post" action="">
      <tr>
        <td  width="150" align="right">                                               
        <input type="submit" name="Launch_del" value="Slet" >
        </td>
        <td>&nbsp;</td>
        <td width="150" align="left">
          <input type="Button" name="Submit2" value="Luk" onClick="window.close()">
        </td>
      </tr>
      </form>
    </table></td>
  </tr>
  <tr>
    <td colspan="5">&nbsp;</td>
  </tr>
</table>

</body>
Avatar billede fhansen Praktikant
28. februar 2007 - 00:52 #8
Ville bare lige sige at den kode i prebook.php ikke fungere, da begge sider i øjeblikket includere en loginside.

if(isset($_POST["Launch_del"])){
  include("./Launch.php");
  Del_Launch($rows["Id"]);


}
Avatar billede mcardle Nybegynder
28. februar 2007 - 04:20 #9
//her ville jeg gerne have en kode der  kaldte default <-

Sæt den her kode ind... Det er godt nok javascript, men tror header er blevet sendt.

?>

<script type="text/javascript">
url = location.href="<? echo $_SERVER['PHP_SELF'].'?action=default&id='.$rows['Id']";
</script>

<?php


Husk php-tegnene, altså ?> og <?php
Avatar billede mcardle Nybegynder
28. februar 2007 - 04:22 #10
Hov, mangler lige noget.

?>

<script type="text/javascript">
url = location.href="<? echo $_SERVER['PHP_SELF'].'?action=default&id='.$rows['Id']; ?>";
</script>

<?php
Avatar billede fhansen Praktikant
28. februar 2007 - 20:39 #11
Ja dette virker, men desvæære bliver siden reloaded, og dette er jo egentlig ikke nødvendigt.

kan du forklare mig hvad ?action er for en størrelse, jeg går ud fra at det er form for variable, men jeg kan ikke finde noget om det i manualen.
Avatar billede mcardle Nybegynder
28. februar 2007 - 21:04 #12
action = variable.

Den har du selv lavet og du bestemmer selv hvad den skal indeholde.

Jeg er ikke helt med hvad det er du vil lave. Hvis du bare skal slette det der er i din variable, så skal du bare skrive unset($action) efter din request. Du burde og vælge om du vil bruge $_GET eller $_POST, det hjælper mod hackers.
Avatar billede mcardle Nybegynder
28. februar 2007 - 21:05 #13
Hvis den ikke skal reloade, så skal du have fat i noget AJAX, tror jeg... Er ikke helt så meget inde i Ajax
Avatar billede fhansen Praktikant
28. februar 2007 - 22:29 #14
AJAX......?????

Jo men variablen fungere jo ikke helt på samme måde som f.eks.    $var, en sådan kan jeg jo unset();

Jeg roder lidt med at bruge et confirm() i stedet for min errorpop.....
Avatar billede fhansen Praktikant
01. marts 2007 - 10:00 #15
Nu må det være på tide med svar, du har jo løst mit problem.
Men jeg må da sige at det stadig driller, men det er fordi du givet mig nye ideer...*SSS*
Min nye løsning giver mig 2 problemmer
1. window.confirm('Finn Hansen !!') her vil jeg gerne have 'Finn Hansen' byttet ud med $txt.

2 Request["jvtest"] fungere heller ikke

Jeg skulle måske lige fortælle denne kode del, bruges til at checkeom brugeren allerede har en booking, og hvis han skal han tilbydes muligheden for at slette den gammel booking.


$Action= $_REQUEST["action"];
$id= $_REQUEST["id"];


switch($Action){
    case("Del_Launch"):
    Del_Launch();
    break;
    case("Add_Launch"):
    Add_Launch();
    break;
    case("Find_Launch"):
    Find_Launch();
    break;
    case "default":
    //echo 'Ingen action valgt';
    break;
    }
   
function CheckLaunch(){
    $sql2 = 'SELECT * FROM `launch` WHERE Client = '.$_SESSION["No"];
    $check2 = mysql_query($sql2) or die ($default_text);
   
    if(mysql_num_rows($check2) != 0){
    $error=mysql_fetch_array($check2);
    $Dt = split("
  • ",$error['Date']);
    $Dt = mktime(0,0,0,$Dt[1], $Dt[2], $Dt[0]);
    $Dtt = date("d-m-Y", $Dt);
    $St = split("[:]",$error['Time']);
    $St = mktime($St[0], $St[1]);
    $Stt = date("H:i", $St);
    $txt = "Du har allerede en booking d. ".$Dtt." kl. ".$Stt.".<br>
"."Denne skal slettes, før du kan booke en ny tid";
    return true;}
   
  return false;   
}

function Del_Launch(){
  global $id;
  $No = $_SESSION["No"];
  $Berth = $_SESSION["Plads"];
  $sql = 'UPDATE `launch` SET `Client` = \'\', `Berth` = \'\' WHERE `launch`.`Id` = '.$id.' LIMIT 1;';     
  $result=mysql_query($sql);   
}

function Add_Launch(){
  global $id;
  if(CheckLaunch() == false){
  $No = $_SESSION["No"];
  $Berth = $_SESSION["Plads"];
  $sql = 'UPDATE `launch` SET `Client` = \''.$No.'\', `Berth` = \''.$Berth.'\' WHERE `launch`.`Id` = '.$id.' LIMIT 1;';
  $result=mysql_query($sql);
  }else{
 
  global $txt;
  global $error;
  ?>
  <SCRIPT LANGUAGE="JavaScript">window.confirm('Finn Hansen !!'script>
  <?
  echo $error['Id'];
  $test = $_GET['jvtest'];
  if($test == 1){
 
  ?>
    <script type="text/javascript">
    url = location.href="<? echo $_SERVER['PHP_SELF'].'?action=default&id='.$rows['Id']; ?>";
    </script>
  <?
  }else{
  ?>
    <script type="text/javascript">
    url = location.href="<? echo $_SERVER['PHP_SELF'].'?action=Del_Launch&id='.$error['Id']; ?>";
//Her kunne man måske sætte et kald til Add_launch ind
    </script>
  <?
  }
}}
Avatar billede mcardle Nybegynder
01. marts 2007 - 16:45 #16
Her er et svar.

return confirm('<? echo $txt; ?>'); <- Det her er til en form´, f.eks. onsubmit="return confirm()"

2 Request["jvtest"] fungere heller ikke <- Hvor bruger du det.
Avatar billede fhansen Praktikant
01. marts 2007 - 22:08 #17
Jeg vil lige sige jeg synes at skulle have haft flere point en dette, du har været en stor hjælp, og til syneladende har du en stor tålmodighed
Avatar billede fhansen Praktikant
01. marts 2007 - 22:11 #18
Hmmm noget trist at jeg ikke kan lave det på denne måde, det er jo lidt svært at bruge en submit da  det er en check function...
Avatar billede fhansen Praktikant
02. marts 2007 - 00:57 #19
Dette endte med at se sådan ud, og vil da gerne lige høre om du kan se nogen problemmer i dette.

denne linie kalder nedenstående function
<SCRIPT LANGUAGE="JavaScript">Check('<? echo $txt; ?>',<? echo $del_id; ?>)</script>

<SCRIPT LANGUAGE="JavaScript">
function Check(txt,Did) {
check=confirm(txt);
if(check==false){location.href='launch.php?action=default&id='+0+'';}else{
location.href='launch.php?action=Del_Launch'+'&id='+Did+'';}
    };
</script>

Nu skal jeg så bare have lavet et kald til 'launch.php?action=default', for at nulstille ?action efter en Add_launch, dette vil jo desværre betyde 2 kald til submit, men det er vist den eneste måde.
Avatar billede mcardle Nybegynder
02. marts 2007 - 02:07 #20
Jeg ved ikke helt om du kan confirm() inde i en funktion, men hvis det virker, så er det fint. Så kan du i hvert fald også bruge return confirm().
Avatar billede fhansen Praktikant
03. marts 2007 - 23:06 #21
Det fungere fint, men skal da have det prøvet på forskellige browser
Avatar billede mcardle Nybegynder
04. marts 2007 - 04:56 #22
Okay.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester