[php/javascript/mysql] teken na laatste waarde nie weergeven

Pagina: 1
Acties:

  • Badeend
  • Registratie: Juli 2000
  • Laatst online: 31-08 01:34
Ik heb het volgende stukje code in de ene pagina:

code:
1
2
3
4
5
6
<script language="JavaScript">
<!--
var newsarray = [
<?php include ('lichtkrant.php'); ?>
]
....


Nu wil ik door middel van php code waarden uit een database halen en in de bovenstaande array stoppen. De waarden krijg ik er zover in met het volgende stukje code:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<? include ('onderhoud/config.php');

$select ="SELECT * FROM lichtkrant ORDER BY id"; 
$query = mysql_query($select); 

while ($lichtkrant = mysql_fetch_object($query)) {
  
  echo ('"');
  echo ($lichtkrant->sponsor);
  echo ('",');

}
?>


Tot zover gaat het goed, en de volgende source komt tevoorschijn:

code:
1
2
3
4
5
6
<script language="JavaScript">
<!--
var newsarray = [
"Makelaardij Bruintjes & Keurentjes","Super de Boer Wieldraaijer","Sporthuis Veldwijk",]
]
....


Achter de laatste naam, Sporthuis Veldwijk, staat ook een komma. Die moet daar weg, omdat de output dan een keer undefined aangeeft.

Ik heb geprobeerd om met array_count_values() het aantal waarden uit de query te tellen, maar dan geeft hij aan dat $query geen array is.

Wie kan mij helpen? Alvast bedankt!

Verwijderd

ik zoek ff wat code op.
Volgens mij heb ik zelf ook wel eens n
keer zoiets gehad..
<moment>

  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
Na je while loop altijd het laatste karakter weghalen misschien?

Never underestimate the power of


Verwijderd

mmm,
kan ut ni vinden,
maar je kunt bv aan ut einde een substring
maken van de String met lengte (lengte vd string -1).

Verwijderd

PHP:
1
2
3
4
while ($lichtkrant = mysql_fetch_object($query)) { 
 $msg .= "$lichtkrant->sponsor,";
}
$msg = substr(0,-1);

en zo vast nog wel een paar oplossingen

edit:
duh.....

$msg = substr(0,strlen($msg)-1);

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

wat dacht je van implode() ?

:)

Klaar voor een nieuwe uitdaging.


  • Badeend
  • Registratie: Juli 2000
  • Laatst online: 31-08 01:34
woeitje, bij jouw antwoord krijg ik de volgende reactie:
code:
1
2
3
4
var newsarray = [
Makelaardij Bruintjes & Keurentjes,Makelaardij Bruintjes & Keurentjes,
Super de Boer Wieldraaijer,Makelaardij Bruintjes & Keurentjes,
Super de Boer Wieldraaijer,Sporthuis Veldwijk,]


Ik hoop dat je er ook een klein beetje uitleg bij kan/wil geven, ik ben namelijk nog niet zo lang bezig met php :)
Toch bedankt voor de reacties

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 17:52
Hoe je het ook wilt doen, je moet de waarden niet direct naar de browser echo'en, zoals je nu doet. De code van woeitje geeft al een stap in deze richting, door alles in een string te zetten en dan het laatste karakter eraf te halen.

PHP:
1
2
3
4
5
6
// Haalt alle gegevens uit de db en zet ze in 1 lange string
// chr(34) is een aanhalingsteken; verplicht in JS zoals jij dat wilt!
// ik denk dat dit ook het probleem is waarom woeitje's voorbeeld het niet doet
while ($lichtkrant = mysql_fetch_object($query))
  $berichten .= chr(34).$lichtkrant->sponsor.chr(34).", ";
$berichten = substr($berichten, 0, strlen($berichten) - 2);


Je kan ook alle elementen eerst in een array zetten, en dan met een dergelijke code de uiteindelijke output tevoorschijn toveren:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
// Haalt alle gegevens uit de db en zet ze in een array
while ($lichtkrant = mysql_fetch_object($query))
  $berichten[] = $lichtkrant->sponsor;

// Schrijft output; let erop dat je ook de aanhalingstekens meegeeft,
// die zijn noodzakelijk in de JS-code (doe ik hier met chr(34))!
// Eerst alle elementen behalve de laatste
for ($i = 0; $i < count($berichten) - 1; $i++)
  $output .= chr(34).$berichten[$i].chr(34).", ";

// Nu de laatste, zonder komma dus!
$output .= chr(34).$berichten[count($berichten) - 1].chr(34);


Deze tweede is een beetje omslachtiger, maar in sommige situaties is hij best wel nuttig, moet je zelf kijken wat jij wil.

Moet wel lukken nu?

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 15:49
Wil je alsjeblieft alle suggesties met betrekking tot het aftrekken van karakters met een korreltje zout nemen? In dit simpele geval is het misschien nog acceptabel, maar als programmeerstijl is het erg slecht. Er is immers, zoals chem al aangaf, een goed alternatief, in de vorm van implode.

Gebruik maken van deze functie werkt in alle situaties van deze soort en dan heb je dus geen vreemde constructies meer nodig, waarin je eerst een foute oplossing construeert en die daarna goed hackt.

Zelf zou ik het (omdat het zo'n simpel geval is) gewoon nog met de hand doen, denk ik:
PHP:
1
2
3
4
if($lichtkrant = mysql_fetch_object($query))
    echo "\"$lichtkrant->sponsor\""; // de eerste waarde
while($lichtkrant = mysql_fetch_object($query))
    echo ",\"$lichtkrant->sponsor\""; // alle volgende waarden

Maar zoals gezegd, chems oplossing is mooier. ;)

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 15:49
Trouwens, als het er alleen om ging dat je het aantal rijen in je resultaat wilde tellen, dan was je er met mysql_num_rows ook wel geweest.

  • Badeend
  • Registratie: Juli 2000
  • Laatst online: 31-08 01:34
Heel hartelijk bedankt! :)
Ik ga ze meteen proberen
Pagina: 1