Ga terug   Computer Idee Forum > Internet > Websites maken

Antwoord
 
Discussietools Weergave
Oud 16 May 2011, 21:26   #1
anoniem31645
Guest
 
Berichten: n/a
Standaard random scriptje

Ik heb een klein scriptje gemaakt om op de pagina's die niet bij de webwinkel horen een willekeurig product te tonen uit de toekomstige webwinkel.
De naam van het product en de prijs en foto staan in 2 verschillende tabellen. Verder moet het willekeurige id wel bestaan vandaar de eerste 2 regels.
Er gaat
momenteel iets mis met de 2 queries voor de 2 tabellen daar geeft die aan "expects parameter 1 to be resource, boolean given in"

en op de 2e regel gaat er iets mis met het genereren van het willekeurige getal maar ik weet niet waarom dat fout gaat.

het zullen wel kleine foutjes zijn maarja.

Ps Ik heb de tekst in het Engels gezet omdat een kennis van me (die me op dit idee bracht) het scriptje ook graag wilde gebruiken, dus vandaar.

PHP-code:
<?php
$max_id 
"SELECT `id` FROM `winkel_products` ORDER BY id DESC LIMIT 1" //get the highest id number from the database. 
$random_product rand(1$max_id); //generate random number.
    
    //get price and imagename from tabel 'winkel_products'.
    
$sql_ad_price "SELECT `products_price`, `products_image` FROM `winkel_products` WHERE `id`='".$random_product."'";                     $result_ad_price mysql_query($sql_ad_price);
    
$qry_ad_price mysql_fetch_array($result_ad_price);
    
    
//get product name from tabel; 'winkel_products_description'.
    
$sql_ad_name "SELECT `products_name` FROM `winkel_products_description` WHERE `id`='".$random_product."'";                 
    
$result_ad_name mysql_query($sql_ad_name);
    
$qry_ad_name mysql_fetch_array($result_ad_name);

//calculate price including vat: 
$price_no_vat$qry_ad['products_price'];
$vat=0.19;
$ad_price=($price_no_vat*$vat)+$price_no_vat;
echo 
$ad_price ;
?>


<table width="200" border="0" cellspacing="2" cellpadding="10">
  <tr>
    <td>
    <?php echo '<a href="../../index.php?main_page=product_info&cPath=8_10&products_id='.$randomproduct.'">'$qry_ad_name['products_name']. '</a>'?>
    </td>
  </tr>
  <tr>
    <td>
    <?php echo '<img src="imgs/'.$qry_ad['products_image'].'" alt="'.$qry_ad_name['products_name'].'" longdesc="../../index.php?main_page=product_info&cPath=8_10&products_id='.$randomproduct.'">'?></td>
  </tr>
  <tr>
    <td><?php echo $ad_price?> </td>
  </tr>
</table>
  Met citaat antwoorden
Oud 16 May 2011, 21:37   #2
anoniem14945
Guest
 
Berichten: n/a
Standaard

Op regel 7 doe je een mysql_fech_array zonder eerst een mysql_query te doen.

Random gaat mis omdat $max_id een string is en geen integer. Als je iets uit de database wilt halen is dat prima, maar met alleen een SQL statement kom je er niet.
  Met citaat antwoorden
Oud 17 May 2011, 09:48   #3
anoniem31645
Guest
 
Berichten: n/a
Standaard

ok dat was het dus ik had iets te gemakenlijk gedacht over $max_id.

Citaat:
Op regel 7 doe je een mysql_fech_array zonder eerst een mysql_query te doen.
De mysql_query staat er wel maar deze is helemaal rechts in het php code scherm buiten het beeld terecht gekomen.

wat ik me eigenlijk wel af vraag, Ik gebruik een stuk of wat van zulke scriptjes om mijn website op te bouwen maar in hoeverre be´nvloed dit nou eigenlijk de laadtijd?
  Met citaat antwoorden
Oud 17 May 2011, 10:28   #4
anoniem14945
Guest
 
Berichten: n/a
Standaard

Citaat:
Oorspronkelijk geplaatst door Sjoukito Bekijk bericht
De mysql_query staat er wel maar deze is helemaal rechts in het php code scherm buiten het beeld terecht gekomen.
Had ik niet gezien. In dat geval mysql_error toevoegen en kijken of dat extra informatie oplevert.

Citaat:
Oorspronkelijk geplaatst door Sjoukito Bekijk bericht
wat ik me eigenlijk wel af vraag, Ik gebruik een stuk of wat van zulke scriptjes om mijn website op te bouwen maar in hoeverre be´nvloed dit nou eigenlijk de laadtijd?
Nauwelijks. Of ja, het heeft uiteindelijk wel een invloed, maar zonder queries bereik je je doel ook niet.

Als je wilt weten hoe lang je scripts er over doen, kun je het volgende helemaal bovenaan je script zetten:
PHP-code:
$start microtime(TRUE); 
En helemaal aan het einde:
PHP-code:
echo (microtime(TRUE)-$start); 
Uiteraard op voorwaarde dat je $start nergens anders in je script gebruikt, anders even een andere variabele verzinnen.

Dit geeft dan aan het einde van het script in seconden de tijd die het script er over gedaan heeft om uit te voeren.
  Met citaat antwoorden
Oud 17 May 2011, 10:58   #5
anoniem31645
Guest
 
Berichten: n/a
Standaard

Ik heb op mijn zoek pagina een aantal selectie menu's die (wanneer ik microtime gebruik) soms bijna 1 seconde duren om te laden. Een bezoeker zal wanneer die wil zoeken niet alle menu's willen gebruiken dus zat ik te denken dat het misschien handig zou zijn dat een menu pas laad wanneer iemand deze wil gebruiken.
Hou zou ik kunnen zorgen dat zo'n menu pas laad wanneer iemand die wil gaan gebruiken?

Het gaat dus om deze code voor het menu:
PHP-code:
<select name="soort">
        <option value="">-------------------Kies-------------------</option>
        <?php
$sql_statement 
"SELECT `soort` FROM `stekje_fuchsia` ORDER BY `soort` ASC "
$qry mysql_query($sql_statement); 
while(
$obj mysql_fetch_array($qry)) 

echo 
"<option value=\"" $obj['soort'] . "\">" $obj['soort'] . "</option>";
}
?>
</select>
  Met citaat antwoorden
Oud 17 May 2011, 12:34   #6
anoniem14945
Guest
 
Berichten: n/a
Standaard

Persoonlijk zou ik me over "minder dan 1 seconde" geen zorgen maken, vooral als het vaker sneller gaat dan dat. Kans is groot dat de server bezig is, waardoor je aanvraag gewoon vertraagd wordt. Met een 'sneller script' duurt het dan niet minder lang, omdat de server het probleem is en niet het script.

Als je nu test op je shared hosting omgeving, test dan ook eens op je eigen computer (via wamp of xampp) en vergelijk de tijden.

Vind je dan nog steeds dat je iets aan je website wilt doen, dan kun je het zoeken in het asynchroon laden van gedeeltes van de pagina via Ajax (nee, niet de voetbalclub). Ik wil vooraf al zeggen dat ik me daar zelf nooit in verdiept heb, dus als je hier in geintereseerd bent je niet op veel hulp van mijn kant moet rekenen.

Wat ik er van zie moet het niet heel moeilijk zijn met behulp van jQuery en dan met name de methode .load(). Je kunt dan de verschillende menu's in verschillende php-scripts zetten en deze aanroepen als ze nodig zijn.

In mindere mate kun je denk ik ook nog versnelling vinden in het vervangen van while-loops door for-loops. While is namelijk de meest langzame soort lus die je kunt hebben (maar wat mij betreft wel de makkelijkste).
  Met citaat antwoorden
Antwoord

Discussietools
Weergave

Regels voor berichten
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit

Forumnavigatie


Alle tijden zijn GMT +1. Het is nu 20:25.


Powered by vBulletin Version 3.8.6
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.