login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Opsomming

Offline BladiN - 11/10/2004 17:35
Avatar van BladiNGouden medailleGouden medaille

Grafische gevorderde
Ik ben een site aan het maken en nu wil ik in php een soort van opsomming maken, een persoon vult 1 tot x gegevens in.
Bij 1 gegeven: Blaat!
Bij 2 gegevens: Blaat en Aap!
Bij 3 gegevens: Blaat, Aap en Paard!
Bij 4 gegevens: Blaat, Aap, Paard en Koe!

Hoe kan ik dit realiseren (een voorbeeld is voldoende, dan kan ik zelf ook nog wat puzzelen )

8 antwoorden

Gesponsorde links
Offline Dennisvb - 11/10/2004 17:37
Avatar van Dennisvb MySQL ver gevorderde Je kan het toch gewoon in een while lus doen? Dan haal je alle gegevans op en die zet je naast elkaar met als scheidingsteken een komma.
Offline BladiN - 11/10/2004 17:53
Avatar van BladiN Gouden medailleGouden medaille

Grafische gevorderde
Erm, maar dan krijg je dus overal achteraan een komma, dat is nou net het probleem. Als hij 1 is moet hij niets zetten, als het 2 is moet hij er 'en' tussen zetten en bij 3 of meer moet hij de eerste(n) met een komma scheiden en de laatste 2 met en
Offline twopeak - 11/10/2004 19:31
Avatar van twopeak Gouden medaille

PHP ver gevorderde
steek alles in een array, behalve het laatste; dan implode() je het geheel maar voeg je het laatste er manueel aan toe!
of je zou array_pop() kunnen gebruiken om dit te doen!
Offline BladiN - 11/10/2004 19:33 (laatste wijziging 11/10/2004 19:35)
Avatar van BladiN Gouden medailleGouden medaille

Grafische gevorderde
Hmm maar dan dus een probleempje (voor de duidelijkheid ik werk met TemplatePower) het zit in een foreach

  1. <?php
  2. foreach($_POST['number'] as $i => $number) {
  3.  
  4. $unit = mysql_query("SELECT * FROM aw_units WHERE tag = '" . $_POST['unit'][$i] . "'") or die(mysql_error());
  5. $data = mysql_fetch_assoc($unit);
  6.  
  7. $tpl->newBlock("units4");
  8.  
  9. $tpl->assign(array("number" => $number,
  10. "unit" => $data['name']
  11. ));
  12.  
  13. }
  14. ?>


TPL:
  1. <tr>
  2. <td class="cell" colspan="3">You attacked with
  3. <!-- START BLOCK : units4 -->
  4. <b>{number}</b> {unit},
  5. <!-- END BLOCK : units4 -->
  6. </td>
  7. </tr>
Offline Thomas - 11/10/2004 19:56
Avatar van Thomas Moderator Je kan toch in je php-file die string bakken (uitwerken), en dan die hele string aan een template variabele assignen ?

Stop gegevens in een array $gegevens.
Dan:

$laatste_item = array_pop($gegevens);
$string = explode(", ", $gegevens).(sizeof($gegevens) > 0 ? " en " : "").$laatste_item."!";

En die $string assign je aan een template var.
Offline BladiN - 11/10/2004 22:32 (laatste wijziging 11/10/2004 22:37)
Avatar van BladiN Gouden medailleGouden medaille

Grafische gevorderde
Erm hoe wil ik dat allemaal in 1 array krijgen? :S

  1. foreach($_POST['number'] as $i => $number) {
  2.  
  3. $unit = mysql_query("SELECT * FROM aw_units WHERE tag = '" . $_POST['unit'][$i] . "'") or die(mysql_error());
  4. $data = mysql_fetch_assoc($unit);
  5.  
  6. }


en dan? want hij moet dan alle $number + $data['name'] (dit zou dan volgen (<b>" . $number . "</b> " . $data['name']) als 1 array entry) toevoegen?
Hoe maak ik daar gewoon 1 grote array van dan? :S

Zowiets?
  1. $a = 0;
  2. foreach($_POST['number'] as $i => $number) {
  3.  
  4. $unit = mysql_query("SELECT * FROM aw_units WHERE tag = '" . $_POST['unit'][$i] . "'") or die(mysql_error());
  5. $data = mysql_fetch_assoc($unit);
  6.  
  7. $a_with[$a++] = $data['name'];
  8. }


Edit:
Dit geeft:
Notice: Array to string conversion in D:\Webserver\Sites\Attack\attack.php on line 524
Array en Galley!

=> $string = explode(", ", $a_with) . (sizeof($a_with) > 0 ? " and " : "") . $last_unit;
Offline Thomas - 11/10/2004 22:38 (laatste wijziging 11/10/2004 22:39)
Avatar van Thomas Moderator Euh, implode moest dat zijn ;).
Haal die twee altijd door elkaar.

Explode levert meestal veel stukjes op (array).
Implode 1 ding (string).
Offline BladiN - 11/10/2004 22:43
Avatar van BladiN Gouden medailleGouden medaille

Grafische gevorderde
Hehe, eigenijk ook logisch he :/ niet bij stilgestaan.. zo klakkeloos overgenomen maar iig, het is gelukt bedankt
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.24s