login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Omzet functie

Offline Voldemort - 12/08/2005 17:58 (laatste wijziging 13/08/2005 10:44)
Avatar van VoldemortPHP ver gevorderde Vraag 1 = Opgelost: Ik heb een functie die knoeten in sikkels en galjoenen omzet. Ik heb dit in een functie gedaan, alleen geeft ie niks weer.

geld.php
  1. <?php
  2. function geld($geld)
  3. {
  4. $gal = 493; //493 knoeten is 1 galjoen
  5. $sik = 29; //29 knoeten is 1 sikkel
  6.  
  7. //Galjoenen berekenen
  8. $gal_a = $geld/$gal; //Je geld delen door het aantal knoeten dat 1 galjoen waard is
  9. $galjoenen = "<font color=\"#FEC005\">".floor($gal_a)."</font>"; //Afronden naar beneden
  10. $rest_g = $geld % $gal; //De rest
  11.  
  12. //Sikkels bereken
  13. $sik_a = $rest_g/$sik; //De rest dat je nog over hebt (minder dan 1 galjoen) delen door het aantal knoeten 1 sikkel waard is
  14. $sikkels = "<font color=\"#D6C99F\">".floor($sik_a)."</font>"; //Afronden naar beneden
  15.  
  16. $knoeten = "<font color=\"#7C570E\">".$rest_g % $sik."</font>"; //De rest zijn knoeten
  17. }
  18. ?>


En dan hoe ik het toepas:

  1. <?php require_once($_SERVER['DOCUMENT_ROOT']."/includes/geld.php");
  2.  
  3. while($fetch = mysql_fetch_array($result))
  4. {
  5. echo geld($fetch['prijs'])."
  6. <tr><td valign='top' class='stijl_t' width='72%'>".$fetch['naam']."</td><td width='14%' valign='top' class='stijl_t'>".$galjoenen.",".$sikkels.",".$knoeten."</td><td valign='top' class='stijl_t' width='10%'><a href='?actie=kopen&id=".$fetch['productid']."'>Ok</a></td></tr>";
  7. }
  8. echo "</table>";



Maar em weergeeft enkel ,, ipv het omgezette. Waarom doet ie dat verkeerd? in de function geld($geld) moet toch gelijk zijn aan $fetch['prijs'] in dit voorbeeld, maar blijkbaar doet ie het niet. Waarom niet?


Vraag 2: Hoe kan ik als ik in de DB een lijst met productid'en heb, bv. 1,5,10,35,23,45,23,etc

1 keer die 23 daarvan tussenhalen?

  1. <?php
  2. $explode(",",$fetch['jaar_nodig']);
  3. for($i=0;$i<count($explode);$i++)
  4. {
  5. if($fetch['productid'] == $explode[$i]) //Bv 23 nu.
  6. {
  7. $berekening = ;//Dit weet ik dus niet
  8. $query = "UPDATE `leden`
  9. SET `jaar_nodig`='".$berekening."'
  10. WHERE `id`='".$_COOKIE['id']."'";
  11. }
  12. }
  13. ?>


Kan iemand mij helpen?

PS: Let niet op dat de query nog niet is uitgevoerd, het is dus de berekening en niet de onuitgevoerde query!

12 antwoorden

Gesponsorde links
Offline freddyboeke - 12/08/2005 18:01
Avatar van freddyboeke HTML beginner je moet in je functie dit toevoegen:

  1. <?php
  2.  
  3. return $galjoenen;
  4. return $sikkels
  5. return $knoeten;
  6.  
  7. ?>

Offline nemesiskoen - 12/08/2005 18:15
Avatar van nemesiskoen Gouden medaille

PHP expert
Er is dus zekerheid dat je galjoenen wil omrekenen?
Dan stuur je die 2 strings toch gewoon terug.

  1. return $sikkels."<br />".$knoeten;

op't einde zetten.
Offline Voldemort - 12/08/2005 18:17 (laatste wijziging 12/08/2005 18:20)
Avatar van Voldemort PHP ver gevorderde Nu doet ie het.

  1. <?php
  2. function geld($geld)
  3. {
  4. $gal = 493; //493 knoeten is 1 galjoen
  5. $sik = 29; //29 knoeten is 1 sikkel
  6.  
  7. //Galjoenen berekenen
  8. $gal_a = $geld/$gal; //Je geld delen door het aantal knoeten dat 1 galjoen waard is
  9. $galjoenen = "<font color=\"#FEC005\">".floor($gal_a)."</font>"; //Afronden naar beneden
  10. $rest_g = $geld % $gal; //De rest
  11.  
  12. //Sikkels bereken
  13. $sik_a = $rest_g/$sik; //De rest dat je nog over hebt (minder dan 1 galjoen) delen door het aantal knoeten 1 sikkel waard is
  14. $sikkels = "<font color=\"#D6C99F\">".floor($sik_a)."</font>"; //Afronden naar beneden
  15.  
  16. $knoeten = "<font color=\"#7C570E\">".$rest_g % $sik."</font>"; //De rest zijn knoeten
  17.  
  18. return $galjoenen.",".$sikkels.",".$knoeten;
  19. }
  20. ?>


Weergave:

  1. <?php require_once($_SERVER['DOCUMENT_ROOT']."/includes/geld.php");
  2.  
  3. while($fetch = mysql_fetch_array($result))
  4. {
  5. echo "<tr><td valign='top' class='stijl_t' width='72%'>".$fetch['naam']."</td><td width='14%' valign='top' class='stijl_t'>".geld($fetch['prijs'])."</td><td valign='top' class='stijl_t' width='10%'><a href='?actie=kopen&id=".$fetch['productid']."'>Ok</a></td></tr>";
  6. }
  7. echo "</table>";
  8. ?>


Wat is er eigenlijk zo belangrijk aan return?
Offline freddyboeke - 12/08/2005 18:21
Avatar van freddyboeke HTML beginner als je variabelen in een functie definiërt, is dat enkel voor in de functie.

Om ze buiten de functie te gebruiken, moet je ze returnen.
Offline nemesiskoen - 12/08/2005 18:22
Avatar van nemesiskoen Gouden medaille

PHP expert
Ik zou het net iets anders aanpakken.

  1. <?php
  2. function geld($geld)
  3. {
  4. $gal = 493; //493 knoeten is 1 galjoen
  5. $sik = 29; //29 knoeten is 1 sikkel
  6.  
  7. //Galjoenen berekenen
  8. $gal_a = $geld/$gal; //Je geld delen door het aantal knoeten dat 1 galjoen waard is
  9. $galjoenen = "<font color=\"#FEC005\">".floor($gal_a)."</font>"; //Afronden naar beneden
  10. $rest_g = $geld % $gal; //De rest
  11.  
  12. //Sikkels bereken
  13. $sik_a = $rest_g/$sik; //De rest dat je nog over hebt (minder dan 1 galjoen) delen door het aantal knoeten 1 sikkel waard is
  14. $sikkels = "<font color=\"#D6C99F\">".floor($sik_a)."</font>"; //Afronden naar beneden
  15.  
  16. $knoeten = "<font color=\"#7C570E\">".$rest_g % $sik."</font>"; //De rest zijn knoeten
  17.  
  18. return array($sikkels,$knoeten,$galjoenen);
  19. }
  20. ?>


  1. <?php require_once($_SERVER['DOCUMENT_ROOT']."/includes/geld.php");
  2.  
  3. while($fetch = mysql_fetch_array($result))
  4. {
  5. $geld = geld($fetch['prijs'];
  6. ?>
  7. <tr>
  8. <td valign='top' class='stijl_t' width='72%'>
  9. <?php echo $fetch['naam']; ?>
  10. </td>
  11. <td width='14%' valign='top' class='stijl_t'>
  12. <?php echo $geld[0] .",".$geld[1].",".$geld[2]; ?>.
  13. </td>
  14. <td valign='top' class='stijl_t' width='10%'>
  15. <a href='?actie=kopen&id=<?php echo $fetch['productid']; ?>>Ok</a>
  16. </td>
  17. </tr>
  18. <?php
  19. }
  20. echo "</table>";
Offline Voldemort - 13/08/2005 10:39 (laatste wijziging 13/08/2005 10:44)
Avatar van Voldemort PHP ver gevorderde Die is nog beter, nemesiskoen. Die ga ik gebruiken. Ff een nieuwe vraag:

Vraag 2: Hoe kan ik als ik in de DB een lijst met productid'en heb, bv. 1,5,10,35,23,45,23,etc

1 keer die 23 daarvan tussenhalen?

  1. <?php
  2. $explode(",",$fetch['jaar_nodig']);
  3. for($i=0;$i<count($explode);$i++)
  4. {
  5. if($fetch['productid'] == $explode[$i]) //Bv 23 nu.
  6. {
  7. $berekening = ;//Dit weet ik dus niet
  8. $query = "UPDATE `leden`
  9. SET `jaar_nodig`='".$berekening."'
  10. WHERE `id`='".$_COOKIE['id']."'";
  11. }
  12. }
  13. ?>


Kan iemand mij helpen?

PS: Let niet op dat de query nog niet is uitgevoerd, het is dus de berekening en niet de onuitgevoerde query!
Offline Fenrir - 13/08/2005 11:03
Avatar van Fenrir PHP expert Je database structuur is fout als je rijen in een veld hebt staan. Maak een aparte tabel voor die productID'en, en ieder productID zijn eigen rij. Dan kun je simpel met sql deleten.
Offline Voldemort - 13/08/2005 11:09 (laatste wijziging 13/08/2005 13:44)
Avatar van Voldemort PHP ver gevorderde Dat blijft toch hetzelfde, ik moet ook weten welk productid van welke user is. Dus dan blijft dat toch hetzelfde? Of bedoel je wat anders?
Offline Fenrir - 13/08/2005 13:46
Avatar van Fenrir PHP expert Zo wordt je DB-structuur dan:

users:

ID
naam
email
...

producten_users:
userID
productID
Offline Voldemort - 14/08/2005 16:13 (laatste wijziging 15/08/2005 10:33)
Avatar van Voldemort PHP ver gevorderde
  1. <?php
  2. $query2 = "SELECT COUNT(`productid`) FROM `user_producten` WHERE `userid`='".$_COOKIE['id']."' && (`productid`='23' || `productid`='55')";
  3. $result2 = mysql_query($query2) or die(mysql_error());
  4. $mysql_result2 = mysql_result($result2,0);
  5.  
  6. if($mysql_result2 == 0) //0 moet nog aangepast worden, in dit VB dus 2
  7. {
  8. echo "Je hebt niet alle producten.";
  9. }
  10. else
  11. {
  12. //Uitvoeren
  13. }
  14. ?>



Nu check ik of men alles heeft, maar:

Ik maak een Harry Potter site en om het zo realistisch mogelijk te houden doe ik de producten zoals in het boek en daar staat 3 keer dat ene product.

Hoe kan ik checken of men 3 keer dat ene product 23 heeft? 3 keer || `productid`='23' zetten heeft geen zin. Hoe doe ik dat dan wel?
Offline Maarten - 15/08/2005 11:27
Avatar van Maarten Erelid een veld toevoegen aan user_producten, "aantal"... je begint met 1 en je moet aan 3 raken, en dat kan je simpel controleren 
Offline Voldemort - 15/08/2005 11:37 (laatste wijziging 15/08/2005 11:37)
Avatar van Voldemort PHP ver gevorderde Dat werkt goed. Alleen, als ik check bij het kopen of men het al heeft en zoja + 1 doen, en ik heb er al 1, dan doet em 2, maar als ik er al 2 heb, dan gaat em nie naar 3 .

  1. <?php
  2. $query5 = "SELECT COUNT(`productid`) FROM `user_producten` WHERE `userid`='".$_COOKIE['id']."' && `productid`='".$fetch['productid']."'";
  3. $result5 = mysql_query($query5) or die("Fout 5".mysql_error());
  4. $mysql_result5 = mysql_result($result5,0);
  5.  
  6. if($mysql_result5 == 0)
  7. {
  8. $query4 = "INSERT INTO `user_producten`(`userid`, `productid`, `aantal`) VALUES ('".$_COOKIE['id']."', '".$fetch['productid']."', '1')";
  9. $result4 = mysql_query($query4) or die("Fout 4.1".mysql_error());
  10. }
  11. else
  12. {
  13. $bij = $mysql_result5 + 1;
  14. $query4 = "UPDATE `user_producten`
  15. SET `aantal`= '".$bij."'
  16. WHERE `userid`='".$_COOKIE['id']."' && `productid`='".$fetch['productid']."'";
  17. $result4 = mysql_query($query4) or die("Fout 4.2".mysql_error());
  18. }
  19. ?>


Aantal veld is int(11).
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.306s