Σελ. 1 από 2 12 ΤελευταίαΤελευταία
Εμφάνιση 1-15 από 29
  1. #1
    Εγγραφή
    13-11-2005
    Μηνύματα
    946
    Downloads
    13
    Uploads
    0
    Ταχύτητα
    102400/10240
    ISP
    OTEnet
    Παιδια καλησπερα. Πειραματιζομαι με την PHP και διαβαζω ενα βιβλιο λοιπον προσθετω εναν κωδικα if στην σελιδα και μου χτυπαει error εδω αλλα οταν το σβηνω παει στην επομενη γραμμη
    Κώδικας:
    <?php
      // create short variable names
      $tireqty = $_POST['tireqty'];
      $oilqty = $_POST['oilqty'];
      $sparkqty = $_POST['sparkqty'];
    ?>
    <!DOCTYPE html>
    <html>
      <head>
        <title>Bob's Auto Parts - Order Results</title>
      </head>
      <body>
        <h1>Bob's Auto Parts</h1>
        <h2>Order Results</h2> 
        <?php
        echo "<p>Order processed at ";
        echo date('H:i, jS F Y');
        echo "</p>";
    
    
        echo '<p>Your order is as follows: </p>';
    
    
        echo htmlspecialchars($tireqty).' tires<br />';
        echo htmlspecialchars($oilqty).' bottles of oil<br />';
        echo htmlspecialchars($sparkqty).' spark plugs<br />';
    
    
        $totalqty = 0;
        $totalqty = $tireqty + $oilqty + $sparkqty;
        
        echo "<p>Items ordered: ".$totalqty."<br />";
        $totalamount = 0.00;
    
    
        define('TIREPRICE', 100);
        define('OILPRICE', 10);
        define('SPARKPRICE', 4);
    
    
        $totalamount = $tireqty * TIREPRICE
                     + $oilqty * OILPRICE
                     + $sparkqty * SPARKPRICE;
         
        echo "Subtotal: $".number_format($totalamount,2)."<br />";
        
        $taxrate = 0.10;  // local sales tax is 10%
        $totalamount = $totalamount * (1 + $taxrate);
        echo "Total including tax: $".number_format($totalamount,2)."</p>";
          
    if ($totalqty == 0) {
        echo '<p style="color:red">';
        echo "You did not order anything on the previous page!";
         echo '</p>';  //ΕΔΩ ΜΟΥ ΧΤΥΠΑΕΙ
        }
        ?>  
      </body>
    </html>
    echo '</p>'; //ΕΔΩ ΜΟΥ ΧΤΥΠΑΕΙ
    Οτιδηποτε απορεια θα σας απαντησω
    Σας ευχαριστω πολύ
    Magus!!!



  2. #2
    Εγγραφή
    09-09-2005
    Περιοχή
    Θεσσαλονίκη
    Ηλικία
    52
    Μηνύματα
    1.081
    Downloads
    32
    Uploads
    0
    Τύπος
    FTTH
    Ταχύτητα
    200Mbps/200Mbps
    ISP
    INALAN - OTE
    DSLAM
    ΟΤΕ - ΒΑΡΝΑΣ
    Router
    HAUWEI HG8546M
    δεν βλεπω κατι λαθος. τι σου βγαζει;
    ουδέν μονιμότερο του προσωρινού

  3. #3
    Εγγραφή
    13-11-2005
    Μηνύματα
    946
    Downloads
    13
    Uploads
    0
    Ταχύτητα
    102400/10240
    ISP
    OTEnet
    ( ! ) Parse error: syntax error, unexpected token "echo" in F:\sites\PHP_MYSQL_Lessons\phplessons2\Chapter01\processorder_v4.php on line 48

    - - - Updated - - -

    Λοιπον εχουμε και λεμε για καποιον λογο που δεν καταλαβαινω εκανα αυτες τις αλλαγες
    <?PHP:
    if ($totalqty == 0) {
        echo 
    "<p style='color:red'>";
        echo 
    "You did not order anything on the previous page! </p>";
        } 
    ?> 
    και δουλευει
    Τελευταία επεξεργασία από το μέλος magus32 : 24-12-23 στις 11:47.
    Magus!!!



  4. #4
    Εγγραφή
    21-03-2008
    Ηλικία
    36
    Μηνύματα
    9.890
    Downloads
    8
    Uploads
    2
    Τύπος
    VDSL2
    Ταχύτητα
    51200/5120
    ISP
    Nova
    Router
    VMG8623-T50B & Debian
    Ούτε εγώ βρήκα το λάθος. Γενικά, όταν σου λέει «unexpected token», τις περισσότερες φορές το λάθος έχει γίνει παραπάνω. Μπορεί, για παράδειγμα, να έχεις παρενθέσεις ή αγκύλες που δεν έκλεισαν σωστά ή να λείπει ένα ;.
    - Κάνετε τη δουλειά σας γρήγορα, αξιόπιστα, με ασφάλεια, χωρίς τεχνητούς περιορισμούς και δωρεάν με το Linux.
    - Οι δίσκοι χαλάνε! Σκεφτείτε τα αρχεία σας πριν την πατήσετε. Κάνετε τακτικά backup.

  5. #5
    Εγγραφή
    13-11-2005
    Μηνύματα
    946
    Downloads
    13
    Uploads
    0
    Ταχύτητα
    102400/10240
    ISP
    OTEnet
    Εκανα αυτες τις αλλαγες που εγραψα πιο πανω και δουλευει κανονικα

    - - - Updated - - -

    Παιδια καλημερα και χρονια πολλα, Μια ερωτηση γιατι δεν καταλαβαινω. Εχουμε αυτον εδω τον κωδικα
    <?PHP:
    while ($distance <= 250) {
          echo 
    "<tr>
                <td style=\"text-align: right;\">"
    .$distance."</td>
                <td style=\"text-align: right;\">"
    .($distance 10)."</td>
                </tr>\n"
    ;
          
    $distance += 50;
        } 
    Μπορει καποιος να μου εξηγησει γιατι και τι σημαινει αυτος εδω ο συνδιασμος \ " που γραφετε εδω <td style=\ "text-align: right;\ ">".$distance."</td>
    <?PHP:
                <td style=\"text-align: right;\">".$distance."</td>
                <td style=\"text-align: right;\">"
    .($distance 10)."</td> 
    Το \n το καταλαβαινω ειναι νεα γραμμη αλλα το αλλο δεν το καταλαβαινω
    Σας ευχαριστω πολυ και καλα χριστουγεννα
    Magus!!!



  6. #6
    Εγγραφή
    21-03-2008
    Ηλικία
    36
    Μηνύματα
    9.890
    Downloads
    8
    Uploads
    2
    Τύπος
    VDSL2
    Ταχύτητα
    51200/5120
    ISP
    Nova
    Router
    VMG8623-T50B & Debian
    Χρόνια πολλά! Είναι χαρακτήρας διαφυγής (escape character) και χρησιμοποιείται έτσι ώστε να μην ερμηνευτεί το " που τον ακολουθεί ως το τέλος της συμβολοσειράς, αφού και αυτή οριοθετείται με ". Για να αποφύγεις αυτό το θέμα, μπορείς να χρησιμοποιείς απλά εισαγωγικά (') για τις συμβολοσειρές, έτσι ώστε να μην υπάρχει θέμα με διπλά εισαγωγικά που περιέχονται σε αυτές.

    Εναλλακτικά, για να μην τρελαθείς με όλα τα echo, μπορείς το παραπάνω να το γράψεις ως εξής:

    Κώδικας:
    <?php
        while ($distance <= 250) { ?>
          <tr>
          	<td style="text-align: right;"><?= $distance ?></td>
            <td style="text-align: right;"><?= ($distance / 10) ?></td>
          </tr>
          <?php $distance += 50;
        }
    Οτιδήποτε μεταξύ του ?> και του <?php πηγαίνει ως έξοδος στον browser, το <?= $x ?> είναι το αντίστοιχο του <?php echo $x ?>.
    - Κάνετε τη δουλειά σας γρήγορα, αξιόπιστα, με ασφάλεια, χωρίς τεχνητούς περιορισμούς και δωρεάν με το Linux.
    - Οι δίσκοι χαλάνε! Σκεφτείτε τα αρχεία σας πριν την πατήσετε. Κάνετε τακτικά backup.

  7. #7
    Εγγραφή
    13-11-2005
    Μηνύματα
    946
    Downloads
    13
    Uploads
    0
    Ταχύτητα
    102400/10240
    ISP
    OTEnet
    Για να καταλαβω ειναι το ιδιο με το αν εγραφα αυτο ;
    <?PHP:
    while ($distance <= 250) {
          echo 
    "<tr>
                <td style='text-align: right;'>"
    .$distance."</td>
                <td style='text-align: right;'>"
    .($distance 10)."</td>
                </tr>\n"
    ;
          
    $distance += 50;
        } 
    Magus!!!



  8. #8
    Εγγραφή
    21-03-2008
    Ηλικία
    36
    Μηνύματα
    9.890
    Downloads
    8
    Uploads
    2
    Τύπος
    VDSL2
    Ταχύτητα
    51200/5120
    ISP
    Nova
    Router
    VMG8623-T50B & Debian
    Ναι.
    .
    .
    - Κάνετε τη δουλειά σας γρήγορα, αξιόπιστα, με ασφάλεια, χωρίς τεχνητούς περιορισμούς και δωρεάν με το Linux.
    - Οι δίσκοι χαλάνε! Σκεφτείτε τα αρχεία σας πριν την πατήσετε. Κάνετε τακτικά backup.

  9. #9
    Εγγραφή
    13-11-2005
    Μηνύματα
    946
    Downloads
    13
    Uploads
    0
    Ταχύτητα
    102400/10240
    ISP
    OTEnet
    Παράθεση Αρχικό μήνυμα από Simpleton Εμφάνιση μηνυμάτων
    Ναι.
    .
    .
    Σε ευχαριστω πολυ για την βοηθεια χρονια πολλα.
    Magus!!!



  10. #10
    Εγγραφή
    21-03-2008
    Ηλικία
    36
    Μηνύματα
    9.890
    Downloads
    8
    Uploads
    2
    Τύπος
    VDSL2
    Ταχύτητα
    51200/5120
    ISP
    Nova
    Router
    VMG8623-T50B & Debian
    Τίποτα, καλή συνέχεια!
    - Κάνετε τη δουλειά σας γρήγορα, αξιόπιστα, με ασφάλεια, χωρίς τεχνητούς περιορισμούς και δωρεάν με το Linux.
    - Οι δίσκοι χαλάνε! Σκεφτείτε τα αρχεία σας πριν την πατήσετε. Κάνετε τακτικά backup.

  11. #11
    Εγγραφή
    13-11-2011
    Περιοχή
    Χολαργός
    Ηλικία
    37
    Μηνύματα
    1.451
    Downloads
    1
    Uploads
    0
    Τύπος
    VDSL2
    Ταχύτητα
    24000 / 4500
    ISP
    Wind
    DSLAM
    Wind - ΧΟΛΑΡΓΟΣ
    Path Level
    Interleaved
    Παράθεση Αρχικό μήνυμα από magus32 Εμφάνιση μηνυμάτων
    Για να καταλαβω ειναι το ιδιο με το αν εγραφα αυτο ;
    <?PHP:
    while ($distance <= 250) {
          echo 
    "<tr>
                <td style='text-align: right;'>"
    .$distance."</td>
                <td style='text-align: right;'>"
    .($distance 10)."</td>
                </tr>\n"
    ;
          
    $distance += 50;
        } 
    Μία μικρή παρατήρηση.

    Το "σωστό" στην html είναι τα attributes να είναι σε double quotes.
    Οποτε το
    Κώδικας:
    <td style='text-align: right;'>
    δεν είναι τυπικά σωστό και θα έπρεπε να είναι
    Κώδικας:
    <td style="text-align: right;">
    απλά οι browser επιλέγουν να το δεχθούν.

    Οπότε το σωστό θα ήταν τα μόνα quotes για την php και δίπλα στα attributes.

    Επίσης, αφού χρησιμοποιείς double quotes χρησιμοποιησέ τα σαν δίπλα, με τις λειτουργίες τους!
    Κώδικας:
    echo "<tr>
                <td style=\"text-align: right;\">{$distance}</td>
                <td style=\"text-align: right;\">{$distance / 10}</td>
                </tr>";
    Δεν έχει νόημα να βάζεις double και να κάνεις concatenate ενώ μπορείς να βάλεις τις παραμέτρους μέσα!

  12. #12
    Εγγραφή
    13-11-2005
    Μηνύματα
    946
    Downloads
    13
    Uploads
    0
    Ταχύτητα
    102400/10240
    ISP
    OTEnet
    Παιδια εχω μια απορια με την feof() αν καταλαβα καλα αυτη ανοιγει ενα αρχειο (συνηθως txt) διαβαζει ολες τις γραμμες και ελεγχει αν παει μεχρι το τελος του αρχειου σωστα; η ερωτηση μου ειναι αν ειναι ετσι ποια η χρισημοτητα της;
    Παιδια και κατι ακομη εχω αυτον τον κωδικα
    <?PHP:
    <?php
      
    // create short variable names
      
    $tireqty = (int) $_POST['tireqty'];
      
    $oilqty = (int) $_POST['oilqty'];
      
    $sparkqty = (int) $_POST['sparkqty'];
      
    $address preg_replace('/\t|\R/',' ',$_POST['address']);
      
    $document_root $_SERVER['DOCUMENT_ROOT'];
      
    $date date('H:i, jS F Y');
    ?>
    <!DOCTYPE html>
    <html>
      <head>
        <title>Bob's Auto Parts - Order Results</title>
      </head>
      <body>
        <h1>Bob's Auto Parts</h1>
        <h2>Order Results</h2> 
        <?php
          
    echo "<p>Order processed at ".date('H:i, jS F Y')."</p>";
          echo 
    "<p>Your order is as follows: </p>";

          
    $totalqty 0;
          
    $totalamount 0.00;

          
    define('TIREPRICE'100);
          
    define('OILPRICE'10);
          
    define('SPARKPRICE'4);

          
    $totalqty $tireqty $oilqty $sparkqty;
          echo 
    "<p>Items ordered: ".$totalqty."<br />";

          if (
    $totalqty == 0) {
            echo 
    "You did not order anything on the previous page!<br />";
          } else {
            if (
    $tireqty 0) {
              echo 
    htmlspecialchars($tireqty).' tires<br />';
            }
            if (
    $oilqty 0) {
              echo 
    htmlspecialchars($oilqty).' bottles of oil<br />';
            }
            if (
    $sparkqty 0) {
              echo 
    htmlspecialchars($sparkqty).' spark plugs<br />';
            }
          }


          
    $totalamount $tireqty TIREPRICE
                       
    $oilqty OILPRICE
                       
    $sparkqty SPARKPRICE;

          echo 
    "Subtotal: $".number_format($totalamount,2)."<br />";

          
    $taxrate 0.10;  // local sales tax is 10%
          
    $totalamount $totalamount * ($taxrate);
          echo 
    "Total including tax: $".number_format($totalamount,2)."</p>";

          echo 
    "<p>Address to ship to is ".htmlspecialchars($address)."</p>";

          
    $outputstring $date."\t".$tireqty." tires \t".$oilqty." oil\t"
                          
    .$sparkqty." spark plugs\t\$".$totalamount
                          
    ."\t"$address."\n";

           
    // open file for appending
           
    @$fp fopen("$document_root/orders.txt"'ab');

           if (!
    $fp) {
             echo 
    "<p><strong> Your order could not be processed at this time.
                   Please try again later.</strong></p>"
    ;
             exit;
           }

           
    flock($fpLOCK_EX);
           
    fwrite($fp$outputstringstrlen($outputstring));
           
    flock($fpLOCK_UN);
           
    fclose($fp);

           echo 
    "<p>Order written.</p>";
        
    ?>
      </body>
    </html>
    Κανω κανονικα την εγγραφη αλλα οταν ανοιγω το αρχειο orders.txt δεν μου γραφει την εγγραφη
    Φανταζομαι οτι ο κωδικας ειναι αυτος
    <?PHP:
    // open file for appending
           
    @$fp fopen("$document_root/orders.txt"'ab');

           if (!
    $fp) {
             echo 
    "<p><strong> Your order could not be processed at this time.
                   Please try again later.</strong></p>"
    ;
             exit;
           }

           
    flock($fpLOCK_EX);
           
    fwrite($fp$outputstringstrlen($outputstring));
           
    flock($fpLOCK_UN);
           
    fclose($fp);

           echo 
    "<p>Order written.</p>"
    Ευχαριστω πολυ
    Τελευταία επεξεργασία από το μέλος magus32 : 26-12-23 στις 11:52.
    Magus!!!



  13. #13
    Εγγραφή
    21-03-2008
    Ηλικία
    36
    Μηνύματα
    9.890
    Downloads
    8
    Uploads
    2
    Τύπος
    VDSL2
    Ταχύτητα
    51200/5120
    ISP
    Nova
    Router
    VMG8623-T50B & Debian
    Η feof() ελέγχει αν ένα αρχείο που έχεις ήδη ανοιχτό (και της περνάς ως παράμετρο το handle του) έχει φτάσει στο τέλος. Από μόνη της δεν ανοίγει ή διαβάζει κάτι.

    Αντί για την fopen κ.λπ., δοκίμασε να γράψεις με το εξής:
    Κώδικας:
    file_put_contents("$document_root/orders.txt", $outputstring, FILE_APPEND)
    - Κάνετε τη δουλειά σας γρήγορα, αξιόπιστα, με ασφάλεια, χωρίς τεχνητούς περιορισμούς και δωρεάν με το Linux.
    - Οι δίσκοι χαλάνε! Σκεφτείτε τα αρχεία σας πριν την πατήσετε. Κάνετε τακτικά backup.

  14. #14
    Εγγραφή
    13-11-2005
    Μηνύματα
    946
    Downloads
    13
    Uploads
    0
    Ταχύτητα
    102400/10240
    ISP
    OTEnet
    Σε ευχαριστώ για την απάντηση, μήπως μπορείς να μου εξηγήσεις τι κάνει η file_put_contents και για ποιο λόγο να το αντικαταστήσω με την fopen;
    Ποια η χρησιμότητα της feof();

    Αλλαξα το
    <?PHP:
    // open file for appending
           
    @$fp fopen("$document_root/orders.txt"'ab');

           if (!
    $fp) {
             echo 
    "<p><strong> Your order could not be processed at this time.
                   Please try again later.</strong></p>"
    ;
             exit;
           }

           
    flock($fpLOCK_EX);
           
    fwrite($fp$outputstringstrlen($outputstring));
           
    flock($fpLOCK_UN);
           
    fclose($fp);

           echo 
    "<p>Order written.</p>"
    με αυτο
    <?PHP:
     @$fp file_put_contents("$document_root/orders.txt"$outputstringFILE_APPEND);

           if (!
    $fp) {
             echo 
    "<p><strong> Your order could not be processed at this time.
                   Please try again later.</strong></p>"
    ;
             exit;
           }

         echo 
    "<p>Order written.</p>"
    Αλλα παλι δεν το γραφει στο txt

    Update----------------------------------

    Αλλαξα σε αυτο
    <?PHP:
    @$fp file_put_contents("orders.txt"$outputstringFILE_APPEND); 
    και γραφει!!!!

    - - - Updated - - -

    Οταν γραφω ελληνικους χαρακτηρες τους αποθηκευει ετσι Λίνδος - Ρόδου μηπως ξερετε γιατι;
    Τελευταία επεξεργασία από το μέλος magus32 : 26-12-23 στις 13:40.
    Magus!!!



  15. #15
    Εγγραφή
    21-03-2008
    Ηλικία
    36
    Μηνύματα
    9.890
    Downloads
    8
    Uploads
    2
    Τύπος
    VDSL2
    Ταχύτητα
    51200/5120
    ISP
    Nova
    Router
    VMG8623-T50B & Debian
    Η feof() σου δείχνει αν το αρχείο που διαβάζεις έχει φτάσει στο τέλος του. Στην πράξη μπορεί να μη σου χρειαστεί ποτέ, αφού οι συναρτήσεις της PHP, π.χ. η fgets, έτσι κι αλλιώς σου επιστρέφουν false αν το συναντήσουν.

    Η file_put_contents() είναι ένας σύντομος τρόπος για να ανοίξεις/δημιουργήσεις ένα αρχείο, να γράψεις σε αυτό και να το κλείσεις. Για ανάγνωση υπάρχει αντίστοιχα η file_get_contents().

    Σχετικά με τα μονοπάτια αρχείων, επειδή στα Windows χρησιμοποιείται το \ για διαχωρισμό αντί για το / σε Linux/Mac, θα πρέπει να χρησιμοποιήσεις το \\ αντί για το / παραπάνω.

    Μπορείς να ανεβάσεις το orders.txt;
    - Κάνετε τη δουλειά σας γρήγορα, αξιόπιστα, με ασφάλεια, χωρίς τεχνητούς περιορισμούς και δωρεάν με το Linux.
    - Οι δίσκοι χαλάνε! Σκεφτείτε τα αρχεία σας πριν την πατήσετε. Κάνετε τακτικά backup.

Σελ. 1 από 2 12 ΤελευταίαΤελευταία

Bookmarks

Bookmarks

Δικαιώματα - Επιλογές

  • Δεν μπορείτε να δημοσιεύσετε νέα θέματα
  • Δεν μπορείτε να δημοσιεύσετε νέα μηνύματα
  • Δεν μπορείτε να αναρτήσετε συνημμένα
  • Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας
  •  
  • Τα BB code είναι σε λειτουργία
  • Τα Smilies είναι σε λειτουργία
  • Το [IMG] είναι σε λειτουργία
  • Το [VIDEO] είναι σε λειτουργία
  • Το HTML είναι εκτός λειτουργίας