id uit array en meenemen naar sql

Status
Niet open voor verdere reacties.

weswillem

Gebruiker
Lid geworden
8 nov 2011
Berichten
310
In de array maanden staan de maandnummers en maanden.
Als ik op een maand klikt wil ik de resp. maandnr meenemen
voor de query.
Krijg alleen het resultaat 12 als ik op elke maand klikt.
Wat gaat er verkeerd?
PHP:
<?php
error_reporting(E_ALL);
$username = 'root'; // mysql username
 $password = ''; // mysql wachtwoord
 $db = 'was1'; // mysql databasenaam
 $contacts = ''; // tabelnaam

mysql_connect('localhost',$username,$password)or die('Er kon geen connectie gemaakt worden met de database');
 mysql_select_db($db) or die('De database kon niet worden geselecteerd');
 
if(isset($_GET['maanden']) && !empty($_GET['maanden'])){
//Bij het opstarten moet hij direct naar A gaan
{
    $maanden = $_GET['maanden']; // gekozen maand
    
    }   
}else 
{
    $maanden = 'Januari'; // bij opstarten gelijk naar januari
}

echo '<h1>Overzicht berichten maand: '.$maanden.'</h1>'.PHP_EOL;
    

$sql = "SELECT COUNT(*) AS `totaal` FROM `meldingen`";
$res = mysql_query ($sql) or die (mysql_error ());
$list = mysql_fetch_assoc($res);
$aantal = $list['totaal']; // aantal registratgies
//echo "totaal aantal gevonden:  ",$aantal;
if(isset($_GET['id']) && (is_numeric($_GET['id'])))
    {
        $id = $_GET['id'];    
    }
else 
    {
        $id = 0;    
    }
//Allereerst gaan we alle maanden defineren
$maanden     = array(1 => 'Januari', 2 => 'Februari', 3 => 'Maart', 4 => 'April', 5 => 'Mei', 6 => 'Juni', 7 => 'Juli', 8 => 'Augustus', 9 => 'September', 10 => 'Oktober', 11 => 'November', 12 => 'December');
foreach($maanden as $key => $value)
    {
    //echo 'De maand '.$value.' heeft id '.$key;
    echo "<a href=\"".$_SERVER['PHP_SELF']."?maanden=".$value."\">".$value."</a>&nbsp;|&nbsp;";//schrijf maanden    
    }  
 
 
    $sql = "SELECT
    Naam, datum, bericht
    FROM meldingen
    WHERE DATE_FORMAT(datum, '%c') ='".$key."'    
    ORDER BY Naam ";//".$aantal."
   
    if ($query = mysql_query($sql))
     
    if (mysql_num_rows($query) < 1){ //geen berichten met die letter    
    if(isset($_GET['maanden']))
    {
        echo "</table>
        <p style=\"text-align: center;\">Er zijn geen berichten gevonden in de maand ".$_GET['maanden']."</p>";        
    }  
}elseif ( mysql_num_rows($query) > 0 ) {
		echo "Ja hoor, we kunnen verder vullen";
}
		echo '</table>'.PHP_EOL;

?>
 
Laatst bewerkt:
In de foreach (regel 40) loop je door de hele array heen. De variabele $key heeft daar dus de waardes 1 t/m 12 (afhankelijk van de hoeveelste iteratie het is). Na afloop van deze foreach heeft $key de laatst gekregen waarde (in dit geval is dat 12). Vervolgens gebruik je op regel 50 de waarde van $key in de query en die waarde is door de foreach dus altijd 12.
 
Ja, daar kwam ik achter. Alleen ik weet niet hoe ik de juiste key van de gekozen maand mee moet nemen naar die query.
Ben daar al ff mee bezig.
 
Er zijn twee mogelijkheden. De eerste is om i.p.v. de naam van de maand, de key van de maand mee te geven in de link (regel 43). Dan moet je nog wel de array $maanden eerder in je code plaatsen en overal waar je de naam van een maand wil tonen $maanden[$_GET['maanden']] gebruiken.

Een andere mogelijkheid is om gebruik te maken van de functie array_search. Die functie levert de key op van de waarde die je zoekt in de array.
 
mag ik vragen hoe ik dit dan omschrijf?
echo '<h1>Overzicht berichten maand: '.$maanden.[$_GET['maanden']].'</h1>".PHP_EOL;
Zoiets?
 
Zo
PHP:
echo '<h1>Overzicht berichten maand: '.$maanden[$_GET['maanden']].'</h1>'.PHP_EOL;
 
@supersnail

Bedankt voor je support
Deze geeft als waarde terug, de eerste letter van wat je gekozen hebt.
 
Hoe ziet je script er nu uit? Ik denk dat het probleem is dat je in je script twee maal de variabele $maanden gebruikt, eenmaal als array en eenmaal voor $_GET['maanden'].
 
Zo ziet het ernu uit.. Hij geeft alleen maar de maandnummer terug.
Overal wil ik de maand zelf zien en bij de query alleen de maandnummer.
Gisteren vierde ff mijn 65e verjaardag dus had ff weinig tijd
om het verder uit te zoeken, anders wordt het een stress situatie
om dat ik er al een tijdje mee bezig ben. hahahaha
Code:
<?php
error_reporting(E_ALL);
$username = 'root'; // mysql username
 $password = ''; // mysql wachtwoord
 $db = 'was1'; // mysql databasenaam
 $contacts = ''; // tabelnaam

mysql_connect('localhost',$username,$password)or die('Er kon geen connectie gemaakt worden met de database');
 mysql_select_db($db) or die('De database kon niet worden geselecteerd');

//Allereerst gaan we alle maanden defineren
$maanden     = array(1 => 'Januari', 2 => 'Februari', 3 => 'Maart', 4 => 'April', 5 => 'Mei', 6 => 'Juni', 7 => 'Juli', 8 => 'Augustus', 9 => 'September', 10 => 'Oktober', 11 => 'November', 12 => 'December');


foreach($maanden as $key => $value)
    {
    echo "<a href=\"".$_SERVER['PHP_SELF']."?maanden=".$key."\">".$key."</a>&nbsp;|&nbsp;";//schrijf maanden       
    }    
if(isset($_GET['maanden']) && !empty($_GET['maanden'])){
//Bij het opstarten moet hij direct naar maand Januari gaan
{   
    $key = $_GET['maanden']; // gekozen maand 
    
    }   
//}else 
//{
//    $maanden = 'Januari'; // bij opstarten gelijk naar januari
//}
echo '<h1>Overzicht berichten maand: '.$_GET['maanden'].'</h1>'.PHP_EOL;
    
$sql = "SELECT COUNT(*) AS `totaal` FROM `meldingen`";
$res = mysql_query ($sql) or die (mysql_error ());
$list = mysql_fetch_assoc($res);
$aantal = $list['totaal']; // aantal registratgies
//echo "totaal aantal gevonden:  ",$aantal;
if(isset($_GET['id']) && (is_numeric($_GET['id'])))
    {
        $id = $_GET['id'];    
    }
else 
    {
        $id = 0;    
    }

//echo .$maanden[$_GET['maanden']].;
 
 
    $sql = "SELECT
    straat
    FROM meldingen
    WHERE DATE_FORMAT(datum, '%c') =".$_GET['maanden']."
    ORDER BY Naam ";//".$aantal."
   echo $sql;
    if ($query = mysql_query($sql))
     
    if (mysql_num_rows($query) < 1){ //geen berichten met die letter    
    if(isset($_GET['maanden']))
    {
        echo "</table>
        <p style=\"text-align: center;\">Er zijn geen berichten gevonden in de maand ".$_GET['maanden']."</p>";        
    }  
    }  elseif ( mysql_num_rows($query) > 0 ) {       
		echo '<table border="1">'.PHP_EOL;
            echo "We kunnen verder";	
		}
		echo '</table>'.PHP_EOL;
}
?>
 
Laatst bewerkt:
Nog gefeliciteerd met je verjaardag.

En als je
PHP:
echo '<h1>Overzicht berichten maand: '.$_GET['maanden'].'</h1>'.PHP_EOL;
verandert in
PHP:
echo '<h1>Overzicht berichten maand: '.$maanden[$_GET['maanden']].'</h1>'.PHP_EOL;
krijg je alleen de eerste letter van de maand te zien?

Dat zou moeten werken. Ik heb het nog even uitgeprobeerd:
PHP:
<?php
$maanden = array(1 => 'Januari', 2 => 'Februari', 3 => 'Maart', 4 => 'April', 5 => 'Mei', 6 => 'Juni', 7=> 'Juli', 8 => 'Augustus', 9 => 'September', 10 => 'Oktober', 11 => 'November', 12 => 'December');

$_GET['maanden'] = 6;

echo '<h1>Overzicht berichten maand: '.$_GET['maanden'].'</h1>'.PHP_EOL;
echo '<h1>Overzicht berichten maand: '.$maanden[$_GET['maanden']].'</h1>'.PHP_EOL;
?>
Dit levert op
<h1>Overzicht berichten maand: 6</h1>
<h1>Overzicht berichten maand: Juni</h1>
 
Dank je wel voor de felicitatie.
Ik ben vanochtend nog bezig geweest om op resultaat te komen.
Hetgeen toch gelukt is. Gedaan zoals je al eerder zei.
Om en omgedaan en ja hoor, hij deed het.
Bedankt voor al je respons om tot dit resultaat te komen.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan