Binnen mijn script gebruik ik deze sql opdracht om alle regels uit een tabel te lezen.

<?php
$sqlCombination = "
	SELECT person.*, horse.*, 2010Combination.* 
	FROM FEIPerson AS person
	INNER 
			JOIN 2010Combination ON person.fei_id = 2010Combination.personFEIid 
	INNER 
			JOIN FEIHorse horse ON horse.fei_id = 2010Combination.horseFEIid 
	GROUP 
			BY 2010Combination.personFEIid
	ORDER 
			BY person.competing_for_country, 2010Combination.compNumber ASC";
?>

En dit is het stukje script dat ik gebruik om o.a. het aantal regels te weten te komen:

<?php
$Result = mysqli_query($dblink, $sqlCombination);
if(!$Result) {
	$html = 'There is een error opening table for listing Combinations; '.mysqli_error();
	$pdf->writeHTML($html, true, false, true, false, ' ');
	}
$numberCombination = mysqli_affected_rows($dblink);
?>

In $numberCombination komt dan het aantal regels te staan, echter deze waarde is foutief.
Kijkend met PHPMYADMIN op de webserver staan in de tabel 3 regels terwijl de waarde in $numberCombination 1 is.
Waar kan dit verschil vandaan komen aangezien ik geen enkele WHERE clausule in de sql opdracht heb staan.

Harry
Nee er komen geen dubbele kolomnamen voor
; een ruiter heeft een family_name en voornam plus tussenvoegsels
; bij de paarden is dit een current_name

Er moet voor elk raport een template gemaakt worden met allemaal verschillende velden
Daarom wil ik voor het gemak één sqlCombination boven aan elk template zodat ik maar op één plek iets hoef te wijzigen indien nodig
ok prima.
Maar heb je nu nog een probleem met je query?
Ik heb even een klein scriptje gemaakt om de basis goed te krijgen.
[code]
<?php
$report = $_GET['report'];
$sqlCombination = "
SELECT person.*, horse.*, 2010Combination.*
FROM FEIPerson AS person
INNER
JOIN 2010Combination ON person.fei_id = 2010Combination.personFEIid
INNER
JOIN FEIHorse horse ON horse.fei_id = 2010Combination.horseFEIid
ORDER
BY person.competing_for_country, 2010Combination.compNumber ASC";

$Result = mysqli_query($dblink, $sqlCombination);
if(!$Result) {
"There is een error opening table for listing Combinations; ".mysqli_error($dblink);
}
$EV_Year = date('Y');
$numberCombination = mysqli_affected_rows($dblink);

if ($result = mysqli_query($dblink, $sqlCombination)) {
$html=$EV_Year;
/* fetch associative array */
while ($row = mysqli_fetch_row($result)) {
$html .= $Row[0] . " - ";
$html .= $Row[1] . "<br />";
$html .= $numberCombination . "<br />";
}
}
?>
[code]
De geproduceerde output levert wel het juiste aantal records maar $row[x] is leeg.
=+=+=+=+=+=+=+=+
Gevonden, stoome fout $Row moet $row zijn
ik heb eens gewerkt voor een bedrijf waar ze ook numerieke indexen gebruikten. Dat liep helaas op tot over de 30 kolommen.

En ik mocht dan debuggen waarom de verkeerde waarden verschenen.

Doe je zelf en je opvolgers een lol en gebruik myqli_fetch_assoc() en dan vervolgens $row['kolomnaam']

Zeker als je SELECT persoon.* gebruikt en je op geen enkele manier zekerheid hebt over de volgorde van de kolommen: als je dit live zet en bij het omzetten wordt de database net iets anders aangemaakt, staan de kolommen in een andere volgorde.
Daarnaast, waarom voer je dezelfde query 2x uit, 1 keer richting $Result en 1 keer richting $result?
Ik zie het, hoe krijg ik dez dan in één??
Dat wat ik toepas staat ook hier
Een 'else' op lijn 16 en daar alles uitvoeren wat er moet gebeuren als je query lukt.
De else staat er in, maar qua code veranderdt er niets.
Of bedoelde jij dat er bij deuitvoering nu maar één keer die opdracht wordt uitgevoerd?
Die query hoef je maar een keer uit te voeren. Wat heb je nu aan code dan?
Hoi Ariën,

OP de eerste pagina komt straks een overzicht met aantallen en dan per land een pagina met detail informatie.
Dit is de huidige code:

<?php
$report = $_GET['report'];
$sqlCombination = "
	SELECT person.*, horse.*, 2010Combination.* 
	FROM FEIPerson AS person
	INNER 
			JOIN 2010Combination ON person.fei_id = 2010Combination.personFEIid 
	INNER 
			JOIN FEIHorse horse ON horse.fei_id = 2010Combination.horseFEIid 
	ORDER 
			BY person.competing_for_country, 2010Combination.compNumber ASC";

$Result = mysqli_query($dblink, $sqlCombination);
if(!$Result) {
	$html = "There is een error opening table for listing Combinations; ".mysqli_error($dblink);
} else {
$EV_Year = date('Y') . "<br />";
$numberCombinations = mysqli_affected_rows($dblink);

if ($result = mysqli_query($dblink, $sqlCombination)) {
$html .= $EV_Year;
    /* fetch associative array */
	while ($row = mysqli_fetch_assoc($result)) {
 //   while ($row = mysqli_fetch_row($result)) {
		$html .= $row["fei_id"] . " - ";
		$html .= $row["nf"] . " - ";
		$html .= $row["first_name"] . " ";
		$html .= $row["family_name"] . "<br />";
		$html .= $row["groups"] . " - ";
		$html .= $row["e_country"] . " - ";
		$html .= $numberCombinations . "<br />";
				
			if($riderNF != $Row['competing_for_country']) {
				$sqlCountry = "SELECT e_country FROM country WHERE ISO_A3 = '".$Row['competing_for_country']."'";
		
		$html .= $sqlCountry . "<br />";
		
		if (!(@ $resultCountry = mysqli_query($dblink, $sqlCountry))) {
					$html = 'There was an error running your query: '.mysqli_error($dblink);
					$pdf->writeHTML($html, true, false, true, false, ' ');
					}
				
				$country_name = mysqli_fetch_assoc($resultCountry);
				$html .= $Row['competing_for_country']. "<br />";
			}
// Maak een pagina voor ieder land in de lijst
		}
	}
}
?>

ziet er nog een beetje rommelig uit i.v.m. testen

Reageren