dynamisch met ajax maar menubalk kan ik niet meer aanpassen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ventilatiesysteem Productontwikkelaar HBO WO Verwa

Samengevat: Zij bieden flexibele ventilatiematerialen, geluidsdempers, rookgasafvoer producten en industrieslangen. Ben jij een technisch productontwikkelaar? Heb jij ervaring met het ontwikkelen van nieuwe producten? Vaste baan: Technisch Productontwikkelaar HBO WO €3.000 - €4.000 Zij bieden een variëteit aan flexibele ventilatiematerialen, geluiddempers, rookgasafvoer producten, industrieslangen en ventilatieslangen voor de scheepsbouw. Met slimme en innovatieve materialen zorgen wij voor een gezonde en frisse leefomgeving. Deze werkgever is een organisatie die volop in ontwikkeling is met hardwerkende collega's. Dit geeft goede ontwikkelingsmogelijkheden. De branche van dit bedrijf is Techniek en Engineering. Functie: Voor de vacature als Technisch Productontwikkelaar Ede Gld HBO WO ga

Bekijk vacature »

Kurtik watson

kurtik watson

06/04/2012 15:59:46
Quote Anchor link
Beste,

Ik heb een website waarbij de pagina's dynamisch laden met ajax waardoor het veel sneller werkt. Maar de menubalk wordt nu niet meer geladen. Ik heb daar echter een link "berichten" en daar moet het "aantal" zich aanpassen, dit gebeurt nu niet meer. Is daar een oplossing voor?

Ik heb:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<li><a class="laad_pagina" href="inbox4.php">Berichten><?php
$query
= "SELECT COUNT(*) AS aantal
         FROM yabg3_inhoud WHERE naam= '"
. $_SESSION['username'] . "' AND status='ongelezen' ";
$result=mysql_query($query);
while($rows=mysql_fetch_array($result)){
if($rows['aantal'] != 0)
{

echo $rows['aantal'];
}
}

?>
</a></li>
 
PHP hulp

PHP hulp

24/12/2024 17:21:28
 
- Ariën  -
Beheerder

- Ariën -

06/04/2012 16:00:32
Quote Anchor link
hoe laad je hem in met ajax?

Een paar opmerkingen:
- Spring je code goed in
- Pas goede foutafhandeling toe op je query.
- Waarom een while, als je toch maar één result krijgt?
Gewijzigd op 06/04/2012 16:02:08 door - Ariën -
 
Kurtik watson

kurtik watson

06/04/2012 16:08:27
Quote Anchor link
sorry, ik bedoel dat een deel van de pagina met ajax geladen wordt maar de menubalk niet, daarom kan het getal bij berichten zich niet aanpassen. Is daar een oplossing voor? Ik wil niet dat de menubalk zich telkens laad met ajax..

Bedankt voor de andere tips.
 
Erwin H

Erwin H

06/04/2012 16:38:59
Quote Anchor link
Kurtik watson op 06/04/2012 16:08:27:
Ik wil niet dat de menubalk zich telkens laad met ajax..

Dan is het simpele antwoord: nee.

Je zal op de een of andere manier de gegevens van de server naar de browser moeten krijgen. Dat kan via het herladen van de pagina (volledig), het herladen van een deel van de pagina via Ajax, of via een open verbinding. Maar als je al geen Ajax wil gebruiken dan lijkt het laatste me helemaal een stap te ver.

Overigens hoef je met Ajax natuurlijk niet de hele menubalk te herladen, je kan ook alleen het getal laden, wat opzich snel en licht zou moeten zijn.
 
Kurtik watson

kurtik watson

06/04/2012 16:44:43
Quote Anchor link
alleen het getal laden zou perfect zijn! Maar hoe kan ik die query waarmee ik het getal ophaal dan apart in ajax zetten. Het getal moet langs de "berichten" link in de menubalk verschijnen?

Mvg
 
Erwin H

Erwin H

06/04/2012 17:05:11
Quote Anchor link
Als ik het me goed herinner hebben dat al een keer gedaan voor je....

Toevoeging op 06/04/2012 17:20:15:

en ik heb nu gezocht, maar kan het topic niet meer vinden. Kan ook van iemand anders zijn geweest. In dat topic ging het erom dat een bepaalde score oid continu geupdate moest worden en dat alleen dat getal dus continu ververst moest worden, zonder de hele pagina te laden. De techniek die ik toen heb voorgesteld is dezelfde die ik aan jou heb voorgesteld: load() functie van JQuery.
Net zoals je nu een deel van de pagina via een Ajax connectie met load ophaalt, zo kan je ook het span (of div) waar dat aantal in staat verversen met load(). Aangezien je weet hoe het met die pagina's gaat, zou je dit ook moeten kunnen oplossen.
 
Kurtik watson

kurtik watson

09/04/2012 18:49:40
Quote Anchor link
Hallo Erwin,

Je had mij het systeem uitgelegd dat met AJAX enkel een deel van pagina telkens geladen kan worden en dit werkt super! Maar mijn menubalk staat niet in de div van AJAX (laad_pagina). Dus indien ik de query waarmee ik het getal van berichten ophaal, in de div "laad_pagina" zet wordt het wel telkens opnieuw geladen maar staat het niet mooi langs berichten in de menubalk? Want deze menubalk wordt niet opnieuw geladen.

groeten,
Kurt
 
Erwin Goossen

Erwin Goossen

09/04/2012 23:31:46
Quote Anchor link
Heb je code voorbeelde?
Wordt bij de pagina laden een .html bericht of een .json of een .xml bestand opgehaald middels ajax?
Als het 1van de laatste 2 is kun je bij de success afhandeling je menu gewoon met javascript vullen met de waardes welke je vanaf de server mee stuurd.
Dus eigenlijk is de vraag, hoe handel je ajaxcall af.
Gewijzigd op 09/04/2012 23:33:06 door Erwin Goossen
 
Kurtik watson

kurtik watson

09/04/2012 23:52:50
Quote Anchor link
Beste,

Ik werk gewoon met een div en jquery:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
43
44
45
46
47
48
49
50
51
<?php
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
session_start();
?>

<div id="target"><img src="afbeeldingen/lounge4.jpg"></div>
<?php
}
else{
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<?php session_start(); ?>
<link rel="stylesheet" type="text/css" href="css1/scroll.css" />
 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
  $('body').on('click','.laad_pagina',function(e){
    e.preventDefault();
    $('#target').load($(this).attr('href'), function() {
    
    });
  });
});
</script>

</head>
<body>
    <ul id="thicktabs">
<li><a class="laad_pagina" href="index053.php">Wijzigen</a></li>
<li><a class="laad_pagina" href="inbox4.php">Berichten><?php
$query
= "SELECT COUNT(*) AS aantal
         FROM yabg3_inhoud WHERE naam= '"
. $_SESSION['username'] . "' AND status='ongelezen' ";
$result=mysql_query($query);
while($rows=mysql_fetch_array($result)){
if($rows['aantal'] != 0)
{

echo $rows['aantal'];
}
}

?>
</a></li>
</ul>

    <div id="target"><img src="afbeeldingen/lounge4.jpg"></div>
    <a class="laad_pagina" href="index053.php">Laad pagina 1</a>
</body>
</html>
<?php
}
?>
 
Pieter Jansen

Pieter Jansen

10/04/2012 00:20:35
Quote Anchor link
vreemd, verkeerde topic.. sorry!
Gewijzigd op 10/04/2012 00:27:12 door Pieter Jansen
 
Erwin H

Erwin H

10/04/2012 10:30:48
Quote Anchor link
Kurtik watson op 09/04/2012 18:49:40:
Hallo Erwin,

Je had mij het systeem uitgelegd dat met AJAX enkel een deel van pagina telkens geladen kan worden en dit werkt super! Maar mijn menubalk staat niet in de div van AJAX (laad_pagina). Dus indien ik de query waarmee ik het getal van berichten ophaal, in de div "laad_pagina" zet wordt het wel telkens opnieuw geladen maar staat het niet mooi langs berichten in de menubalk? Want deze menubalk wordt niet opnieuw geladen.

groeten,
Kurt

Wat let je om precies hetzelfde te doen, maar dan voor een andere div? Met dus een andere functie en een andere url die je aanroept.
 
Kurtik watson

kurtik watson

10/04/2012 19:34:45
Quote Anchor link
Heb het getest maar lukt me niet:-(

Zo moet in de onderstaande code de php code langs berichten dynamisch worden:wil er wel een vergoeding voor betalen, dan moet ik ergens anders dit posten zeker?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
43
44
45
46
47
48
49
50
51
<?php
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
session_start();
?>

<div id="target"><img src="afbeeldingen/lounge4.jpg"></div>
<?php
}
else{
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<?php session_start(); ?>
<link rel="stylesheet" type="text/css" href="css1/scroll.css" />
 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
  $('body').on('click','.laad_pagina',function(e){
    e.preventDefault();
    $('#target').load($(this).attr('href'), function() {
    
    });
  });
});
</script>

</head>
<body>
    <ul id="thicktabs">
<li><a class="laad_pagina" href="index053.php">Wijzigen</a></li>
<li><a class="laad_pagina" href="inbox4.php">Berichten><?php
$query
= "SELECT COUNT(*) AS aantal
         FROM yabg3_inhoud WHERE naam= '"
. $_SESSION['username'] . "' AND status='ongelezen' ";
$result=mysql_query($query);
while($rows=mysql_fetch_array($result)){
if($rows['aantal'] != 0)
{

echo $rows['aantal'];
}
}

?>
</a></li>
</ul>

    <div id="target"><img src="afbeeldingen/lounge4.jpg"></div>
    <a class="laad_pagina" href="index053.php">Laad pagina 1</a>
</body>
</html>
<?php
}
?>
Gewijzigd op 10/04/2012 22:35:46 door kurtik watson
 
Erwin H

Erwin H

13/04/2012 10:50:03
Quote Anchor link
Je kan wel dezelfde techniek gebruiken, maar je moet wel een andere load functie definieren. De gegevens die je laadt komen namelijk uit een ander bestand en in een andere target terecht. Als je het op hetzelfde moment wilt herladen (dus wanneer iemand van pagina verandert) dan kan je het zo doen. Anders kan je ook nog met een setTimeout het bijvoorbeeld elke minuut of zo herladen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<script>
$(document).ready(function(){
  $('body').on('click','.laad_pagina',function(e){
    e.preventDefault();
    $('#target').load($(this).attr('href'), function() {
    
    });

    //dit is dus nieuw!!
    $('#berichten').load('berichten.php');
  });
});

Regel 32 (en waar nu 100 staat kan je natuurlijk nog gewoon de code gebruiken die je boven hebt staan zodat je ook direct bij het laden van de pagina het juiste aantal hebt):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<li>Berichten <span id="berichten">100</span></li>


En dan de berichten.php daarin haal je het aantal berichten op uit je database en echo'ed dat naar het scherm.
Gewijzigd op 13/04/2012 10:50:21 door Erwin H
 
Kurtik watson

kurtik watson

13/04/2012 22:17:55
Quote Anchor link
Bedankt voor de info!!

Maar op de plaats waar je de 100 zet, daar moet ik dan niks zetten en alles in de berichten.php? In de berichten.php komt dan de query waar ik het aantal ophaal en dit echo ik dan zoals je hierboven aangeeft ook in de pagina berichten.php.

Kurt
Gewijzigd op 13/04/2012 22:19:04 door kurtik watson
 
Erwin H

Erwin H

13/04/2012 22:56:30
Quote Anchor link
Nee, zoals ik zeg, je kan er nog gewoon de code gebruiken die er al stond. Anders staat er niets totdat de gebruiker een nieuwe pagina laadt. Ik heb de DB code alleen even weg gelaten om het overzichtelijk te houden.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.