login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Linken naar pagina via PHP Loop (Ajax) (Opgelost)

Offline Ruultje - 20/01/2011 19:19
Avatar van RuultjeNieuw lid Ik ben in het AJAX gebeuren gedoken. Nu loop ik alleen nog tegen problemen op. Onderstaande code heb ik in een formulier gezet. Hierin staan 11 (11 ID's) rijen (elk ID heeft verschillende info die kan worden aangepast). Nu wil ik deze alle elf naar dezelfde pagina linken. Maar bij de tweede link werkt het al niet meer. Hoe krijg ik het voor elkaar dat hij (via een loop) bij elke link hetzelfde doet.

  1. function selectArticle() // User have clicked on an article
  2. {
  3. getAjaxFile(this.id + '.php'); // Calling the getAjasFile function. argument to the function is id of this <li> + '.html', example "article1.html"
  4. if(clickedArticle && clickedArticle!=this)clickedArticle.className='articleMouseOver';
  5. this.className='articleClick';
  6. clickedArticle = this;
  7. }



Deze zit in een loop.
  1. <div id="articleListContainer">
  2. <ul id="articleList" class="articleList">
  3. <li id="article1">Wijzig</li>
  4. </ul>
  5. </div>
  6. </div>


Ik hoop dat het een beetje duidelijk is. En dat deze in dit gedeelte thuis hoort.

8 antwoorden

Gesponsorde links
Offline Beirensg - 20/01/2011 19:28
Avatar van Beirensg HTML beginner Je wil dus 11 AJAX_requests tegelijkertijd uitvoeren?

Er is een beperking op het aantal AJAX-calls die tegelijkertijd kunnen lopen. In IE dacht ik 2 (vanaf versie 8) en FF zelfs 4.

Ook moet je zorgen dat er telkens een nieuwe variabele die verwijst naar de ajax-request wordt aangemaakt.

Het beste wat je doet is wachten tot de eerste request is afgelopen en dan de tweede uitvoeren
Offline Ruultje - 20/01/2011 19:52 (laatste wijziging 21/01/2011 09:23)
Avatar van Ruultje Nieuw lid Niet helemaal (denk ik).

Ik heb een formulier. Hierin staat informatie per ID. Het is een lijst met producten (en dat product wordt informatie toegevoegd, in een andere DB tabel). Hij kijkt hierin naar die tabel waar de informatie heen wordt geschreven. Dat wil zeggen: hij kijkt wat als laatste is worden toegevoegd aan die tabel en het product dat in deze tabel is gezet wordt onthouden. Nu zijn er echter 11 ID's. In de tabel van de producten staan zo'n 150 verschillende producten. Hij laadt deze dus 11x. Dat gaat alleen ontzettend traag. Daarom heb ik nu alleen de naam weergegeven van het laatst toegevoegde bij desbetreffende ID. De pagina laadt nu sneller. Het komt vaak voor dat het product blijft staan. Maar soms kan het ook veranderen. Wanneer dat het geval is moet er bij desbetreffende ID een nieuwe keuze gemaakt kunnen worden. Dit gebeurt dus middels een select box. Dat kan 1x per dag gebeuren (bij 1 ID) of 2 of 3 keer per dag (bij twee of meer verschillende ID's).

Ik hoop dat het een beetje duidelijker is zo. Anders maak ik een screenshotje. Misschien nog het makkelijkste.

http://www.mijn...KYX3UOHVRD

is een voorbeeldje. Deze kunnen dus blijven staan. Maar het kan zijn dat bijvoorbeeld de derde veranderd moet worden (die andere niet).


Edit: Ben nu zo ver dat ik alles aanklikbaar kan maken. Moest de 'Div' boven de 'TD' plaatsen. Maar nu opent de selectbox boven de tabel. En geeft hij niet de juiste Product ID door wanneer ik iets selecteer.

Ik heb het nu zo.

  1. <div id="contentContainer">
  2. <div id="articleListContainer">
  3. <td class="fill_product">
  4.  
  5. <ul id="articleList" class="articleList">
  6. <li id="selectbox"><?php echo $row_productname['configuration']; ?><input type='hidden' name='product' value='<?php echo $productid; ?>'></li>
  7. </ul>
  8.  
  9. </td>
  10. </div>
  11. </div>
Offline Beirensg - 21/01/2011 10:41 (laatste wijziging 21/01/2011 10:58)
Avatar van Beirensg HTML beginner Ik vind je html-code heel raar. Je hebt een td in een div, terwijl td's deel uitmaken van een table.
Ik zou, als ik u was, afstappen van tabellen. Probeer eens alles als div te schrijven.

kan je ook de volledige structuur van je html posten, daar zal ergens een fout zitten. (waarschijnlijk in de id's, aangezien je een id selectbox hebt, die je volgens mij een aantal keren herhaalt)
Offline Ruultje - 21/01/2011 14:51 (laatste wijziging 21/01/2011 14:52)
Avatar van Ruultje Nieuw lid Ben ik wel mee begonnen (met div's) tenminste op nieuwe sites die ik maak. Deze is iets ouder en wil ik aanpassen omdat de pagina die het meest gebruikt wordt enorm traag is. Met de optie van nu is het vele malen sneller. Alleen krijg ik het nog altijd niet aan het werk.

Ik zal binnenkort eens kijken om deze ook naar 'divs' te zetten.

Dit is de html. Daarvoor worden de php codes gemaakt (deze zullen denk ik niet nodig zijn).

  1. <table class="formproduct" id="articleList">
  2. <tr>
  3. <td class="head">Naam Product</td>
  4. <td class="head">Code</td>
  5. <td class="head">Toevoegen</td>
  6. </tr>
  7. <tr>
  8. <td colspan="7" class="spacer4"></td>
  9. </tr>
  10. <form action="popup.php?page=print" method="post" name="formulier" onclick=\"popUp(this.href,'console',400,700);return false;\" target='_blank'>
  11. <tr>
  12. <td class="fill_product">
  13. <div id="contentContainer">
  14. <div id="articleListContainer">
  15. <ul id="articleList" class="articleList">
  16. <li id="selectbox"><input type='hidden' id='selectbox' name='product' value='<?php echo $productid; ?>'><?php echo $row_productname['productnaam']; ?></li>
  17. </ul>
  18. </div>
  19. </div>
  20. </td>
  21.  
  22.  
  23. <td class="fill_serialcode"><?php
  24. echo $code;
  25. ?>
  26. <input type="hidden" name="code" value="<?php echo $code; ?>" /></td>
  27.  
  28. <td class="fill_print"><input type="submit" class="print" value="" name="printp" onmouseover="this.className='print phover'" onmouseout="this.className='printp'" /></td>
  29. </tr>
  30. </form>
  31. <tr>
  32. <td class="spacer6" colspan="7"></td>
  33. </tr>
  34. </table>



Hij verwijst hier naar toe:
  1. <select class="productitem" name="product" id="selectbox">
  2. <?php
  3. $sql = "SELECT productid, productnaam, productgroep FROM
  4. producten
  5. LEFT JOIN
  6. productgroepen
  7. ON
  8. producten.productgroep_id = productgroepen.groep_id
  9. GROUP BY productcode
  10. ";
  11.  
  12. $res = mysql_query($sql);
  13. echo '<option value=""> --- Selecteer een product --- </option>';
  14. $result = mysql_query($sql);
  15. $group = array();
  16. while ($row = mysql_fetch_assoc($result))
  17. {
  18. $group[$row['productgroep']][] = $row;
  19. }
  20. foreach ($group as $key => $values)
  21. {
  22. echo '<optgroup label="'.$key.'">';
  23. foreach ($values as $value)
  24. {
  25.  
  26. echo '<option value = '.$value['productid'].'>'. $value['productnaam'] .'</option>';
  27.  
  28. }
  29. echo '</optgroup>';
  30. }
  31.  
  32. ?>
  33. </select>



Kom er echt niet uit. Dacht slim te zijn door alles in een apart bestand te zetten (en dat het includen in de 'hoofd' pagina. Maar dat leverde het zelfde resultaat op.

Begint nu een beetje te irriteren ;) Google helpt ook niet. Al zal dat komen doordat ik niet de juiste zoektermen gebruik, ben ik bang.
Offline Beirensg - 21/01/2011 15:14
Avatar van Beirensg HTML beginner je li en je input hebben dezelfde id (selectbox), absolutely not done; zeker omdat je verwijst naar de id in je AJAX.

Ik mis nog iets, in je vraag heb je het over 11 rijen, bedoel je dan dat je 11 rijen met een form erin hebt (zoals getoond in je html)? En hebben deze dezelfde id, of staat er wel degelijk iets als select1, select2,...

waarom heb je een hidden input dewelke dezelfde php-var retourneert ($code die verwijst naar de select input) als de cel ervoor?

Ik ben nog niet helemaal mee met de structuur en bedoeling van je site. ik zal vanavond (of in het weekend) mijn tijd eens nemen.

BTW pas er mee op als je tables en divs, forms, ul's gaat mengen. Niet zozeer voor de logica erachter (deze zal nog wel meekunnen, indien alles een specifieke id heeft), maar wel voor de layout en de snelheid van de pagina (tables vragen nogal veel van de gebruiker zijn browser).
Offline Ruultje - 21/01/2011 15:36
Avatar van Ruultje Nieuw lid Ik heb hem nu zo gezet dat hij alleen in de Li staat (daar verwijst AJAX heen).

De tweede code (de selectbox) wordt 11 keer herhaald. Die hebben allemaal dezelfde ID. Maar die selectbox heb ik nu eruit gehaald en vervangen door de gewone naam van het product. Wanneer dan op de naam van het product geklikt wordt komt het selectboxje er aan te pas. Maar die LI daarvan heeft dus altijd dezelfde ID. Ik heb wel geprobeerd om 11 ID's ervan te maken (selectbox1, selectbox2 etc) maar dat werkte ook niet.

Ik heb dat zo gedaan om hem weer te geven (de code) en hem via het inputveld door te sturen naar de database. Tenminste de '$_POST'. Misschien dat daar een betere optie voor is? Want zo gebruik ik eigenlijk ieder formulier.

Oké bedankt alvast. Zal het weekend zelf ook goed gebruiken om er (mogelijk) iets beters van te maken. En wat meer te leren van AJAX.

Dit is nu inderdaad een rommeltje geworden. Ik zit er nog een beetje mee hoe ik een paar div netjes naast elkaar gezet krijg. Op de één of andere manier lukt mij dat niet goed. Is altijd wel een browser die voor problemen zorgt wanneer ik denk dat het eindelijk gelukt is. Mij daar ook maar eens meer in gaan verdiepen. Want persoonlijk vind ik div's ook sneller werken.
Offline Beirensg - 25/01/2011 16:11
Avatar van Beirensg HTML beginner 1. OK
2. Zie lager...
3. op zich niets mis mee, doe ik immers ook vaak. Kan wel een security-probleem vormen, immers iedereen met FF en FireBug (in IE is het nu ook mogelijk) kan deze hidden inputs zien (en eventueel aanpassen). Mits een goede controle van de input kan men dit tegenwerken
4&5 NSTR

Om terug te komen op het grote probleem, ik zie in je sql-query al een probleem:
  1. SELECT productid, productnaam, productgroep FROM
  2. producten
  3. LEFT JOIN
  4. productgroepen
  5. ON
  6. producten.productgroep_id = productgroepen.groep_id
  7. GROUP BY productcode

Dit mag in principe niet (maar geeft geen foutmelding in MySQL), je kan niet group by gebruiken en gewone fields opvragen. Nu ga je voor elke productcode 1 willekeurige productid en productnaam verkrijgen. Meer info vind je hier:http://www.orei...myths.html Maar dit is de basis van het probleem niet.

Kan je eens een var_dump van $group doorgeven nadat deze is ingevuld. Ik denk dat je de array niet op de correcte manier benaderd om je selects aan te maken.

Offline Ruultje - 03/02/2011 11:54
Avatar van Ruultje Nieuw lid Had het druk.... ik was al verder gegaan (had het anders opgelost).

Var_dump had ik geprobeerd. Toen zag ik dat ik in het werkelijke formulier (die wat ik hier postte gebruikte ik zelf als test) nog iets extra's geladen werd. Alle data werd daardoor dubbel opgehaald. Per product dan.

De link is wel interessant. Zal deze eens op mij laten inwerken. Bedankt! Is in ieder geval goed nu.
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.2s