Ankündigung

Einklappen
Keine Ankündigung bisher.

Auf eine Variable einer anderen Datei zugreifen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • OliL
    hat ein Thema erstellt Auf eine Variable einer anderen Datei zugreifen.

    Auf eine Variable einer anderen Datei zugreifen

    Hallo,

    also ich habe 3 Dateien: books.php, login.php und order.php.
    Alle 3 Dateien beinhalten php und html code.

    Auf der books.php wird eine Liste von Büchern ausgeben mit checkbox.
    PHP-Code:
    $sql="SELECT tblBook.BookID, tblAuthor.Name, tblBook.Price, tblBook.title, tblBook.ISBN FROM (tblAuthor INNER JOIN     tblBook ON tblAuthor.authorID = tblBook.authorID) ORDER BY tblAuthor.Name";
                     $RS_query=mysql_query($sql,$connect);      
                     $RS=mysql_fetch_row($RS_query);
                     while(!($RS==0))
                      {
                 ?>
                 <tr>
                   <td style="width:1px;background-color:#695CDA;"></td>
                   <td style="width:598px;background-color:#ffffff;padding:2px 5px 2px 5px"><table cellspacing="0" cellpadding="0" style="width:598px;"><tr><td><?php echo $RS[1];?>: <span style="font-weight:bold"><a href="#" onmouseover= "popup(<?php echo $RS[0];?>)"  onmouseout="popout()"><?php echo $RS[3];?></a></span><br />ISBN <?php echo $RS[4];?><br /></td><td style="font-weight:bold;width:135px">Price: AUD$<?php echo $RS[2];?></td><td style="width:35px;"><input type="checkbox" name="order[]" value="<?php echo $RS[0];?>" style="border-width:0;"></input></td></tr></table></td>
                 </tr>
    ...
    <td style="width:50px;"><input type="submit" name="select" value="Order Books" style="margin-left:5px">
    Wenn ich auf "Order Books" drücke wird die login.php geöffnet wo der User sich anmelden muss.
    PHP-Code:
    <form action="order.php" method="post">
              <
    tr>
                 <
    td style="width:700px;"><b><div class="header1">Kids«s Bookshelf Orders<img src="images.jpg"></div></b></td></tr>
                 <
    tr>
                 <
    td style="width:100px;"><b></b></td>
                 <
    td style="width:100px;"><b></b></td>
                    <
    td style="width:25px;"><b>Username</b></td>
                    <
    td style="height:15px;"><input name="username" type="text" size="20" style="margin-left:5px"></td>
                 <
    td style="width:50px;"><input type="submit" name="login" value="Login" style="margin-left:5px"></td></tr>
                 <
    tr>
                         <
    td style="width:100px;"><b></b></td>
                         <
    td style="width:100px;"><b></b></td>
                         <
    td style="width:50px;"><b>Password</b></td>
                         <
    td style="height:15px;"><input name="password" type="password" size="20" style="margin-left:5px"></td>
                         <
    td></td>
                     </
    tr></form
    Nach dem Login wird alles nach order.php geschickt und dort wird überprüft oder der Login erfolgreich war. Wenn ja, sollen die Bücher die per checkbox ausgewählt wurden (in der books.asp) hier angezeigt werden. Dies geschieht aber nicht. Wie kann ich denn also in der order.php auf die Variable (checkboxen) der books.php zugreifen? Hatte an sowas wie $checkbox=$_POST["order"]; $numbercheckbox=count($_POST["order"]); gedacht aber kommt alles leer oder mit 0 raus??

    Danke für jede Hilfe!

    PHP-Code:
    <?php 
            $sql
    ="SELECT user, password FROM login";
            
    $RS_query=mysql_query(($sql),$connect);  
            
    $RS=mysql_fetch_array($RS_query);
            
    $error=0;
            if (
    $_POST["username"]==$RS["user"] && $_POST["password"]==$RS["password"])
            {
            
    ?>
    .....
    $checkbox=$_POST["order"];
                  $numbercheckbox=count($_POST["order"]);
                  $checkboxCount = 0;
                foreach ($checkbox as $name) {
                $checkboxCount=$checkboxCount+1;
                if ($checkboxCount==1)
                {    
                    $result=$result."tblBook.bookid=".$name;
                }
                  else
                {
                    $result=$result." OR tblBook.bookid=".$name;
                }     
                  }

      $sql="SELECT tblBook.BookID, tblAuthor.Name, tblBook.Price, tblBook.title, tblBook.ISBN, tblBook.StockLevel FROM (tblAuthor INNER JOIN tblBook ON tblAuthor.authorID = tblBook.authorID) WHERE ".$result." ORDER BY tblBook.Title";
      $RS_query=mysql_query(($sql),$connect);  
      $RS=mysql_fetch_row($RS_query);
      ;while(!($RS==0))
      {
    ?>
                  <tr>
                   <td style="width:1px;background-color:#695CDA"><input type="hidden" name="order" value="<? echo $RS["isbn"];?>"></td>
                   <td style="width:598px;background-color:#ffffff;padding:2px 5px 2px 5px">
                   <table cellspacing="0" cellpadding="0" style="width:548px">
                   <tr>
               <td style="width:300px"><? echo $RS[1];?>: <span style="font-weight:bold"><a href="#" onmouseover= "popup(<? echo $RS[0];?>)"  onmouseout="popout()"><? echo $RS[3];?></a></span><br />ISBN <? echo $RS[4];?><br /></td>
                   <td style="font-weight:bold;width:100px">Price: AUD$<? echo $RS[2];?></td>
                   <td style="width:50px;"><input type="text" name="quantity<? echo $RS[4];?>" style="width:25px;"></td>
              </tr>
                   </table>
                   </td>
                 </tr>
                <tr>
                   <td colspan="3" style="width:498px;height:1px;background-color:#695CDA"></td>
                 </tr>
                 <?php 
                     $RS
    =mysql_fetch_row($RS_query);
                    }
                     }                          
                    
    ?>

  • lazydog
    antwortet
    Was heisst für dich ein Logout? Das Beenden des Browsers oder das Abschalten der Kiste?
    In dem Falle bleibt dir wohl nicht anderes übrig, als die Daten entweder in einem Cookie zu speichern, oder aber benutzerabhängig in eine DB zu schreiben. Letzteres geht natürlich nur, wenn du die Benutzerdaten kennst, d.h. der Benutzer sich schon eingeloggt hat.

    Einen Kommentar schreiben:


  • OliL
    antwortet
    Ok, läuft mit der Session Variable thanks.
    Wenn ich jetzt mit einem Logout die order.php verlasse und automatisch zu der login.php weitergeleitet werde, wenn ich mich dann wieder einlogge, dann ist die Session-Variable leer.

    Ist dies der Fall weil eine neue Session_start() in der login kreiert wurde, und die eine neue Nummer hat? Wie soll ich vorgehen, um die Variable beizubehalten wenn in der Datei eine Aktion (sei es Logout) durchgeführt wurde?

    Thanks.

    Einen Kommentar schreiben:


  • lazydog
    antwortet
    Zitat von OliL Beitrag anzeigen
    Ja der Code wird sowieso am Ende - wenn alles läuft - strukturiert.
    Damit behinderst du nicht nur diejenigen, die dir helfen wollen, sondern in erster Linie auch dich selber.

    Zitat von OliL Beitrag anzeigen
    Dieser Wert wird aber nicht übernommen... warum wird er in der login.php übernommen aber nicht order.php?
    Das habe ich dir ja schon geschrieben: Inputfelder aus Formularen werden nur in das in action genannten Zielscript übergeben, und sonst nirgendwo hin! Leg die Daten in Session-Variablen ab.

    Einen Kommentar schreiben:


  • HPR1974
    antwortet
    also erstens mal ist Dein code echt super zu lesen:
    "der Code wird sowieso am Ende - wenn alles läuft - strukturiert" ist der dümmste dummsinn den ich heute schon gelesen habe.

    Du solltest Dir einen Warenkorb bauen, die Bücher dort ablegen und ggf wieder aufrufen und nach bestellung den cart löschen.

    $RS=mysql_fetch_row($RS_query);
    ;while(!($RS==0))

    Das ist ein besonders schönes konstrukt

    Du vergurkst eine while schleife irgendwie als do{}while()
    so sieht das normal aus:

    while($RS=mysql_fetch_row($RS_query)){
    }


    $sql="SELECT user, password FROM login";
    $RS_query=mysql_query(($sql),$connect
    );
    $RS=mysql_fetch_array($RS_query
    );

    gibt es nur einen user?

    Warum verwendest Du mal short tags, mal nicht?

    Du verwendest mysql_fetch_row($RS_query); und möchtest dann folgendes ausgeben: echo $RS["isbn"]; es wird kein $RS["isbn"] geben

    etc.

    Einen Kommentar schreiben:


  • OliL
    antwortet
    @lazydog: Ja der Code wird sowieso am Ende - wenn alles läuft - strukturiert.

    Also in der login.php kriege ich den order[] array (ausgewählte checkboxen von books.php) und kann somit auch die Anzahl herauskriegen mit count(). Diesen Wert brauche ich in der order.php um die Bücher, die selektiert wurden, auszugeben, da ich dann mit einer foreach Schleife arbeiten werde. Dieser Wert wird aber nicht übernommen... warum wird er in der login.php übernommen aber nicht order.php? Irgendwas mache ich falsche, aber was....

    books.php ($RS[0] ist die BookId)
    PHP-Code:
    <input type="checkbox" name="order[]" value="<?php echo $RS[0];?>" style="border-width:0;">
    login.php (hier gibt er mir den Array mit den ausgewählten Checkboxen und auch die Anzahl - als Beispiel 3)
    PHP-Code:
    <?php 
             $checkbox
    =$_POST["order"];
                  
    $numbercheckbox=count($checkbox);
                
    ?>
    order.php (hier will ich jetzt jeden Wert des Arrays herausholen -$name- und ausgeben, $checkbox und $numbercheckbox ist aber leer bzw. 0)
    PHP-Code:
    <?php 
                $checkbox
    =$_POST["order"];
                
    $numbercheckbox=count($checkbox);
                
    $checkboxCount 0;
                foreach (
    $checkbox as $name) {
                
    $checkboxCount=$checkboxCount+1;
                echo 
    $name;
                  }
    Wie kriege ich also den selben Wert der books.php, login.php auch in order.php raus? Soll ich sowas wie
    PHP-Code:
    <input type="hidden" name="order[]" value="<?php echo $RS[0];?>" style="border-width:0;">
    einfügen? Sorry aber ich versteh es im Moment nicht... Thanks.

    Einen Kommentar schreiben:


  • lazydog
    antwortet
    Es ist mit zu blöd, diesen furchtbar formatierten Code durchzusehen.
    Nur soviel, die Inputfelder aus der ersten Datei werden an die zweite übergeben, die aus der zweiten an die dritte, etc. Wenn du die Daten über mehrere Seiten behalten willst, musst du sie entweder über alle Seiten immer wieder weitergeben, z.B. als «hidden fields» (was ich nicht empfehlen würde), oder dann speicherst du diese in Session-Variablen.

    Einen Kommentar schreiben:

Lädt...
X