abonnement Unibet Coolblue Bitvavo
pi_65092548
quote:
Op donderdag 15 januari 2009 17:37 schreef GlowMouse het volgende:
Dat heb je wanneer je LIMIT gebruikt.
Mag ik weten hoe snel de query is op pagina 1, en op pagina 10?
Pagina 1. 0.01
Pagina 10 0.09
Pagina 20 0.13
Pagina 50 0.3
Pagina 69 0.44

The people who lost my respect will never get a capital letter for their name again.
Like trump...
  donderdag 15 januari 2009 @ 23:42:17 #127
75592 GlowMouse
l'état, c'est moi
pi_65092881
quote:
Op donderdag 15 januari 2009 23:33 schreef Chandler het volgende:

[..]

Pagina 1. 0.01
Pagina 10 0.09
Pagina 20 0.13
Pagina 50 0.3
Pagina 69 0.44

Mooi lineair Nadeel van LIMIT, hij kan nooit weten wat er op de 59ste pagina komt zonder eerst de eerste 58 op te halen.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_65094865
Ik heb de volgende code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
$result = mysql_query("SELECT * FROM ur_pstats ORDER BY points DESC");
$nr = 1;

while($row = mysql_fetch_array($result))

{

   if (in_array($row['user'],$flow))

   {

   $team = "Flow";

   }

   else

   {
   $team = "Allstars";
   }


echo "<tr>";
echo "<td>";
echo $nr;
echo "</td>";
echo "<td>";
echo $row['user'];
echo "</td>";
echo "<td>";
echo $team;
echo "</td>";
echo "<td>";

$points = $row['points'];
$points2 = log($row['games'] + 1 ) * ($row['wins'] / $row['games']);

$points = $points + $points2;
$points = round($points, 2);

echo $points;
echo "</td>";


Het gaat mij vervolgens om points. Zoals jullie kunnen zien is er in de table ur_pstats een kolom met de naam 'points'. Ik sorteer de resultaten op points. Nu is het probleem dat ik onlangs een wijziging heb doorgevoerd. Het gaat hierbij om de regel met log(). Na deze bewerking ontstaat er een nieuwe waarde voor points. Nu wil ik eigenlijk sorteren op deze points, en niet op de points die ik uit de tabel haal.

Is hier een makkelijke oplossing voor? Het enige wat ik kan bedenken is op een of andere manier een array te maken, want volgens mij kun je de array ook sorteren op waarden. Een alternatief zou zijn om voordat de points worden opgeslagen de bewerking met log toe te voegen. Welke zou makkelijker zijn?
  vrijdag 16 januari 2009 @ 01:01:41 #129
75592 GlowMouse
l'état, c'est moi
pi_65094900
SELECT user,points,log(games+1)*wins/games AS points2 FROM ur_pstats ORDER BY points2 DESC
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  vrijdag 16 januari 2009 @ 01:02:23 #130
75592 GlowMouse
l'état, c'est moi
pi_65094913
Lekker voor je performance trouwens als je veel rijen hebt. In dat geval kan het beter zijn om een apart veld aan te maken met deze score en daarop te indexeren.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_65095210
Denk aan ongeveer 200 rijen. Als ik

$result = mysql_query("SELECT * FROM ur_pstats ORDER BY points DESC");

verander in

$result = mysql_query("SELECT user,points,log(games+1)*wins/games AS points2 FROM ur_pstats ORDER BY points2 DESC");

dan krijg ik een halve tabel met alleen maar nullen .

edit-

Ik heb t zelf inmiddels gefixed.

1
2
3
4
5
6
7
8
9
10
11
12
13
while($row = mysql_fetch_array($result))


{

$user = $row['user'];
$points = $row['points'];
$points2 = log($row['games'] + 1 ) * ($row['wins'] / $row['games']);
$points = $points + $points2;

mysql_query("UPDATE ur_pstats SET points2 = '$points' WHERE user = '$user");

}


[ Bericht 51% gewijzigd door Irix op 16-01-2009 01:45:34 ]
pi_65097798
quote:
Op donderdag 15 januari 2009 23:42 schreef GlowMouse het volgende:

[..]

Mooi lineair Nadeel van LIMIT, hij kan nooit weten wat er op de 59ste pagina komt zonder eerst de eerste 58 op te halen.
Goed, maar hoe kan ik dit versnellen cq optimaliseren? D:
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  vrijdag 16 januari 2009 @ 10:42:30 #133
75592 GlowMouse
l'état, c'est moi
pi_65101041
quote:
Op vrijdag 16 januari 2009 08:48 schreef Chandler het volgende:

[..]

Goed, maar hoe kan ik dit versnellen cq optimaliseren? D:
Vantevoren een tabel vullen met een extra veld waarin je aangeeft op welke plek welke foto komt. Op dat veld kun je indexeren en in je query kun je dan WHERE ipv LIMIT gebruiken.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_65102319
Hmm.. ik ga eens wat research doen en idd er is helaas in dit geval geen andere optie dan limit (tenminste zo zie ik het hehe).

Dus moet ik de pagina's gewoon maar gaan cachen!

[ Bericht 49% gewijzigd door Chandler op 16-01-2009 11:26:14 ]
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_65109800
Ik heb een lastig regex probleempje. Of misschien wel heel simpel, maar ik weet er nog niet zo veel van af.

Ik heb een lap tekst in een variabele staan en daarin komst steeds het volgende stuk tekst in voor (maar dan steeds met andere data).

1
2
3
4
5
6
7
8
<p class="info">
<strong class="TitleOff">
<a href="[b]url_die_ik_zoek[/b]">[b]Titel die ik zoek[/b]</a>
</strong> 
<strong class="datetime">
<span style="font-size:10px;">Aired</span>
<span style="font-size:10px;">[b]Datum die ik zoek[/b]</span>
</strong>[b]Omschrijving die ik zoek[/b]</p>


Hoe krijg ik nou met preg_match nou alle informatie eruit gevist? En dan ook nog zo dat de gevonden titels en omschrijvingen ook nog bij elkaar matchen?
pi_65110723
Wil je per se een regex gebruiken? Anders zou de DOM parsen weleens veel makkelijker kunnen zijn.
pi_65110907
Dat had ik eerst geprobeerd, maar daar snap ik nog een stuk minder van.

Het lukt me wel om bijvoorbeeld alle links eruit te zoeken, maar hoe ik verder moet zou ik niet zo snel weten.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$dom = new DOMDocument();
@$dom->loadHTML($result);
$xpath = new DOMXPath($dom);

// -- Alle links
$hrefs = $xpath->evaluate("/html/body//ol//li//a");

// -- Links doorlopen
for ($i = 0; $i < $hrefs->length; $i++)
{
   $href = $hrefs->item($i);
   $url = $href->getAttribute('href');
   echo $url."<br />";
}
pi_65111438
Je zou eerst alle <p>'s met class "info" kunnen zoeken, en vervolgens daar doorheen loopen en binnen iedere gevonden <p> zoeken op link (href en titel), de tweede <span>, etc.
pi_65111604
Eehhh Zoals ik al zei weet ik nog maar weinig van XPath.
Hoe moet ik dat precies doen?
pi_65133632
quote:
Op vrijdag 16 januari 2009 15:25 schreef Roy_T het volgende:
Je zou eerst alle <p>'s met class "info" kunnen zoeken, en vervolgens daar doorheen loopen en binnen iedere gevonden <p> zoeken op link (href en titel), de tweede <span>, etc.
Zo moeilijk is Xpath niet hoor ;)

1
2
3
4
$nodes = $xpath->query('//p[@class="info"]');
foreach($nodes as $node) {
     $a = $node->getAttribute('href');
}


Hiermee kan je wel vooruit denk ik.
pi_65134684
quote:
Op zaterdag 17 januari 2009 03:04 schreef Gloeidoos het volgende:

[..]

Zo moeilijk is Xpath niet hoor
[ code verwijderd ]

Hiermee kan je wel vooruit denk ik.
Alleen werkt dit natuurlijk niet, omdat een <p> geen href attribuut heeft
pi_65137705
hey mensen, ik ben bezig met een pagina om je account te activeren. als je bent geregistreerd krijg je een mail met een link. (dat is nu nog gewoon op de site). De link ziet er uit als activate.php?activate=$activate&code=$code. Hier is $active het user_nr en $code de code die in de kolom active_code in de database is gezet. Alles werkt leuk en aardig, maar volgens mij doet hij het niet door de sql query. Hij veranderd namelijk ook niks in de database, maar hij komt wel door de check of $active > 0 en strlen($code) ==32. Iemand enig idee wat ik fout doe?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
   if (isset($_GET['activate'])) {
      $activate = (int) $_GET['activate'];
   } else {
      $activate = 0;
   }
   if (isset($_GET['code'])) {
      $code = $_GET['code'];
   } else {
      $code = 0;
   }

   if ( ($activate > 0) && (strlen($code) == 32)) {
      include('include/inc_connect.php');
      $query = "UPDATE users SET active_code = NULL WHERE user_nr = '".$active."' AND active_code = '".$code."' LIMIT 1 ;";  
      $result = mysql_query($query) or die(mysql_error());

      if (mysql_affected_rows() == 1) {
         echo "<b class=\"title\">Geactiveerd</b>";
         echo "<p>Je account is nu actief, je kan nu inloggen.</p>";
      } else {
         echo "<b class=\"title\">Activeren niet succesvol</b>";
         echo "<p>Je account kon niet geactiveerd worden. Kijk of de link klopt of neem contact op met onze <a href=\"mailto:xxxxxxxx\">Administrator</a></p>";
      mysql_close();
      }
   } else {
      echo "<b class=\"title\">Activatie link klopt niet!</b>";
      echo "<p>Probeer opnieuw</p>";
   }
?>
pi_65140854
quote:
Op zaterdag 17 januari 2009 08:57 schreef Roy_T het volgende:

[..]

Alleen werkt dit natuurlijk niet, omdat een <p> geen href attribuut heeft
Hehe het was al laat.
pi_65163912
quote:
Op zaterdag 17 januari 2009 12:24 schreef mrpaplu het volgende:
hey mensen, ik ben bezig met een pagina om je account te activeren. als je bent geregistreerd krijg je een mail met een link. (dat is nu nog gewoon op de site). De link ziet er uit als activate.php?activate=$activate&code=$code. Hier is $active het user_nr en $code de code die in de kolom active_code in de database is gezet. Alles werkt leuk en aardig, maar volgens mij doet hij het niet door de sql query. Hij veranderd namelijk ook niks in de database, maar hij komt wel door de check of $active > 0 en strlen($code) ==32. Iemand enig idee wat ik fout doe?
[ code verwijderd ]
Wat heb je gedaan om te debuggen? Toen je om te debuggen "$query = "UPDATE users SET active_code = NULL WHERE user_nr = '".$active."' AND active_code = '".$code."' LIMIT 1 ;";" eens gewoon echode, wat kreeg te toen te zien?

Want volgens mij bestaat heel de variabele $active niet (en bedoel je $activate).
pi_65170736
quote:
Op zaterdag 17 januari 2009 12:24 schreef mrpaplu het volgende:
hey mensen, ik ben bezig met een pagina om je account te activeren. als je bent geregistreerd krijg je een mail met een link. (dat is nu nog gewoon op de site). De link ziet er uit als activate.php?activate=$activate&code=$code. Hier is $active het user_nr en $code de code die in de kolom active_code in de database is gezet. Alles werkt leuk en aardig, maar volgens mij doet hij het niet door de sql query. Hij veranderd namelijk ook niks in de database, maar hij komt wel door de check of $active > 0 en strlen($code) ==32. Iemand enig idee wat ik fout doe?
[ code verwijderd ]
Handig activeringssysteem. Code "'='' or ''='" (aanvullen met spaties tot 32 tekens) is altijd goed

[ Bericht 1% gewijzigd door SuperRembo op 18-01-2009 16:38:23 ]
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_65173582
http://cablegunmaster.nl

Mijn resultaat van al de php opdrachten van school. :p
moet alleen nog weten hoe ik de php kan laten weergeven voor documenten , in html
waarom dit geen spam is , komt omdat hier aan mensen van dit forum hebben meegeholpen
Dank aan glowmouse vnmlijk

[ Bericht 36% gewijzigd door cablegunmaster op 18-01-2009 15:54:51 ]
Redacted
  zondag 18 januari 2009 @ 16:03:08 #148
75592 GlowMouse
l'état, c'est moi
pi_65174465
quote:
Op zondag 18 januari 2009 15:45 schreef cablegunmaster het volgende:
moet alleen nog weten hoe ik de php kan laten weergeven voor documenten , in html
<?php echo '<?php echo \'hoi!\'; ?>'; ?>
Of iets met http://nl2.php.net/manual/en/function.highlight-file.php
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_65174492
quote:
Op zondag 18 januari 2009 16:03 schreef GlowMouse het volgende:

[..]

<?php echo '<?php echo \'hoi!\'; ?>'; ?>
that all
Redacted
  zondag 18 januari 2009 @ 16:04:42 #150
75592 GlowMouse
l'état, c'est moi
pi_65174539
Zie edit, waarschijnlijk staat de code namelijk wel in een bestand ergens. De uitdaging is dan nog om te zorgen dat alleen van de juiste bestanden de code weergegeven wordt.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')