probleempje met 'foreach()'

Status
Niet open voor verdere reacties.

JB'tje

Gebruiker
Lid geworden
31 mei 2004
Berichten
556
Hallo allermaal,

'k heb bijna weer een mooie site gemaakt, maar ben 2 probleempjes tegengekomen... als eerst foreach
het probleem zit ergens in dit stukje code
PHP:
pagina 1

<?PHP
			  foreach($attackwapens AS $hoeveel => $naam => $getal){
			?>
			<tr>
              <td height="24" align="center" valign="middle" style=" <?PHP echo  @$_SESSION['kO'] . @$_SESSION['kL']; ?> "><a class="tekstnormaal"><?PHP echo $naam; ?></a></td>
              <td align="center" valign="middle" style=" <?PHP echo  @$_SESSION['kO']; ?> ">&nbsp;</td>
              <td align="center" valign="middle" style=" <?PHP echo  @$_SESSION['kO']; ?> "><a class="tekstnormaal"><?PHP echo $hoeveel; ?></a></td>
              <td align="center" valign="middle" style=" <?PHP echo  @$_SESSION['kO']; ?> ">&nbsp;</td>
              <td align="center" valign="middle" style=" <?PHP echo  @$_SESSION['kO']; ?> "><a class="tekstnormaal"><?PHP echo'<input type=\'text\' size=\'2\'><input class=\'button\' type=\'button\' value=\'Shell\' name=\'shell\'>'; ?></a></td>
              <td align="center" valign="middle" style=" <?PHP echo  @$_SESSION['kO']; ?> ">&nbsp;</td>
              <td align="center" valign="middle" style=" <?PHP echo  @$_SESSION['kO'] . @$_SESSION['kR']; ?> "><a class=\'tekstnormaal\'><?PHP echo'<input type=\'text\' size=\'2\' name=\'shell'.$getal.'\'><input class=\'button\' type=\'button\' value=\'Buy\' name=\'buy\'>'; ?></a></td>
            </tr>
			<?PHP } ?>
PHP:
pagina 2
$_SESSION['attack_1_naam'] = '1';
$_SESSION['attack_2_naam'] = '2';
$_SESSION['attack_3_naam'] = '3';
$_SESSION['attack_4_naam'] = '4';
$_SESSION['attack_5_naam'] = '5';
$_SESSION['attack_6_naam'] = '6';
$_SESSION['attack_7_naam'] = '7';
$_SESSION['attack_8_naam'] = '8';
$_SESSION['attack_9_naam'] = '9';
$_SESSION['attack_10_naam'] = '10';
$_SESSION['attack_11_naam'] = '11';
$_SESSION['attack_12_naam'] = '12';
PHP:
pagina 3

$CombiCheckQ2 = mysql_query("SELECT attack_1, attack_2, attack_3, attack_4, attack_5, attack_6, attack_7, attack_8, attack_9, attack_10, attack_11, attack_12
                                  FROM armory
                                WHERE userid = '".$_SESSION['userid']."' ");

if($CombiCheckQ2 == FALSE)
{
  $_SESSION['error'] = "Problem on the site!!! The reason is: <b>" . mysql_error() . "</b>";
  $_SESSION['errornumber'] = "3";
}
else
{
  $gegevens2 = mysql_fetch_array($CombiCheckQ2); 
  if($gegevens2 == FALSE)
  {
    $_SESSION['error'] = "Problem on the site!!! The reason is: <b>" . mysql_error() . "</b>";
	$_SESSION['errornumber'] = "4";
  }
}

$_SESSION['attack_1'] = $gegevens2['attack_1'];
$_SESSION['attack_2'] = $gegevens2['attack_2'];
$_SESSION['attack_3'] = $gegevens2['attack_3'];
$_SESSION['attack_4'] = $gegevens2['attack_4'];
$_SESSION['attack_5'] = $gegevens2['attack_5'];
$_SESSION['attack_6'] = $gegevens2['attack_6'];
$_SESSION['attack_7'] = $gegevens2['attack_7'];
$_SESSION['attack_8'] = $gegevens2['attack_8'];
$_SESSION['attack_9'] = $gegevens2['attack_9'];
$_SESSION['attack_10'] = $gegevens2['attack_10'];
$_SESSION['attack_11'] = $gegevens2['attack_11'];
$_SESSION['attack_12'] = $gegevens2['attack_12'];

$attackwapens = array(
$_SESSION['attack_1'] => $_SESSION['attack_1_naam'] => '1',
$_SESSION['attack_2'] => $_SESSION['attack_2_naam'] => '2',
$_SESSION['attack_3'] => $_SESSION['attack_3_naam'] => '3',
$_SESSION['attack_4'] => $_SESSION['attack_4_naam'] => '4',
$_SESSION['attack_5'] => $_SESSION['attack_5_naam'] => '5',
$_SESSION['attack_6'] => $_SESSION['attack_6_naam'] => '6',
$_SESSION['attack_7'] => $_SESSION['attack_7_naam'] => '7',
$_SESSION['attack_8'] => $_SESSION['attack_8_naam'] => '8',
$_SESSION['attack_9'] => $_SESSION['attack_9_naam'] => '9',
$_SESSION['attack_10'] => $_SESSION['attack_10_naam'] => '10',
$_SESSION['attack_11'] => $_SESSION['attack_11_naam'] => '11',
$_SESSION['attack_12'] => $_SESSION['attack_12_naam'] => '12'
);
de pagina's worden uiteraard wel geincludeerd...

het probleem is dat op pagina 3 dit niet mag: $_SESSION['attack_1'] => $_SESSION['attack_1_naam'] => '1',
wat moet het wel zijn??

alvast bedankt.

JB'tje :)
 
Laatst bewerkt:
Kep niet de hele code bestudeerd, ben nogal moe, maar misschien zo ?
PHP:
$attackwapens = array(
$_SESSION['attack_1'] => array($_SESSION['attack_1_naam'] => '1'),
$_SESSION['attack_2'] => array($_SESSION['attack_2_naam'] => '2'),
$_SESSION['attack_3'] => array($_SESSION['attack_3_naam'] => '3'),
$_SESSION['attack_4'] => array($_SESSION['attack_4_naam'] => '4'),
$_SESSION['attack_5'] => array($_SESSION['attack_5_naam'] => '5'),
$_SESSION['attack_6'] => array($_SESSION['attack_6_naam'] => '6'),
$_SESSION['attack_7'] => array($_SESSION['attack_7_naam'] => '7'),
$_SESSION['attack_8'] => array($_SESSION['attack_8_naam'] => '8'),
$_SESSION['attack_9'] => array($_SESSION['attack_9_naam'] => '9'),
$_SESSION['attack_10'] => array($_SESSION['attack_10_naam'] => '10'),
$_SESSION['attack_11'] => array($_SESSION['attack_11_naam'] => '11'),
$_SESSION['attack_12'] => array($_SESSION['attack_12_naam'] => '12')
);
 
jep, dit is een goede manier om het voor elkaar te krijgen... :)
het andere probleem heeft zich een beetje opgelost en ik denk dat ik het zelf kan oplossen.

in ieder geval bedankt en tot de volgende keer :D

JB'tje
 
hallo weer,

d8 ik dat ik eindelijk alles met die foreach klaar had kwam de "gemakzucht" dus ik het script weer veranderen zodat ik niet 4 keer dezelfde tabel hoefde te maken maar dat dat met foreach gedaan word.

toen ik het script eindelijk goed had, zag ik opeens geen enkele tabel meer :8-0: ??
ik weet 100% zeker dat het niet aan de array's ligt maar ergens in dit script:

PHP:
<?PHP
		foreach($wapen AS $wapen1 => $wapennaam){
		?>
			<tr>
              <td height="24" align="center" valign="middle"><?PHP echo  $wapennaam;?></td>
              <td align="center" valign="middle">||</td>
              <td align="center" valign="middle">Quantity</td>
              <td align="center" valign="middle">||</td>
              <td align="center" valign="middle">Sell Weapon(s)</td>
              <td align="center" valign="middle">||</td>
              <td align="center" valign="middle">Buy Weapon(s)</td>
            </tr>			
			<?PHP
				  foreach($wapen1 AS $hoeveel => $naam){
				  foreach($naam AS $naam => $getal){
			?>
			<tr>
			  <td height="24" align="center" valign="middle"><a class="tekstnormaal"><?PHP echo $naam; ?></a></td>
			  <td align="center" valign="middle">&nbsp;</td>
			  <td align="center" valign="middle"><?PHP echo $hoeveel; ?></td>
			  <td align="center" valign="middle">&nbsp;</td>
			  <td align="center" valign="middle"><?PHP echo'<input type=\'text\' size=\'2\'><input class=\'button\' type=\'button\' value=\'Shell\' name=\'shell\'>'; ?></td>
			  <td align="center" valign="middle">&nbsp;</td>
			  <td align="center" valign="middle"><?PHP echo'<input type=\'text\' size=\'2\' name=\'shell'.$getal.'\'><input class=\'button\' type=\'button\' value=\'Buy\' name=\'buy\'>'; ?></td>
			</tr>
			<?PHP }} ?>
ik krijg hierbij ook geen enkele foutmelding?!

alvast bedankt

JB'tje

p.s. hier staat dat de <input bla bla> niet geslached zijn \ ' maar dat zijn ze dus wel....
 
Laatst bewerkt:
Ik zie hier niets mis mee, hoogstens een } die op 't einde hoort te staan.

Voer eens een print_r() op je array's uit en kijk eens of d'r daadwerkelijk wat in zit.
 
de laatste } die er hoort te staan was ik vergeten te kopiëren :eek:

en tja, als een array leeg is, dan kan er ook geen foreach gebruikt worden :eek:
oftewel ik had dit:
PHP:
$wapen = array($attackwapens => 'attack wapens', $defensewapens => 'defense wapens', $spietools => 'spietools', $guardtools => 'guardtools');

de $en die hierin voorkomen waren ook weer array's met daarin ook weer array's
de $en die erin voorkomen die werken wel, maar deze op de een of andere manier niet?!

wat is er fout??

JB'tje :cool:
 
Een array als sleutel ? Dat ben ik idd nog nooit tegengekomen ... :D
 
Geplaatst door JPeetje
Een array als sleutel ? Dat ben ik idd nog nooit tegengekomen ... :D

eeh, wat bedoel je met "sleutel"???
ik stop gewoon alles in aray's dat is wat makkelijker (vind ik) en anders zou ik niet weten hoe ik het moet doen :)

verder is het probleem opgelost....
het moest dit zijn:
PHP:
$wapen = array("attack wapens" => $_SESSION['attackwapens'], "defense wapens" => $_SESSION['defensewapens'], "spietools" => $_SESSION['spietools'], "guardtools" => $_SESSION['guardtools']);
oftewel de sessions en de gemeenschappelijke naam van de wapens stonden verkeerd om!!!??? 'k wist niet dat dat ook al een fout zou kunnen zijn... :)

JB'tje
 
Laatst bewerkt:
Geplaatst door JB'tje
eeh, wat bedoel je met "sleutel"???
Neem het script dat jij in je post geeft:
PHP:
$wapen = array("attack wapens" => $_SESSION['attackwapens'], "defense wapens" => $_SESSION['defensewapens'], "spietools" => $_SESSION['spietools'], "guardtools" => $_SESSION['guardtools']);
Hierin is 'attack wapens' een sleutel, net als 'defense wapens', 'spietools' en 'guardtools'.

Fijn dat 't werkt :)
 
ik vat het niet :confused:
die 'attack wapens', 'defense wapens', 'spietools' en 'guardtools' dat zijn de namen die bovenaan de tabel komen....
bij een sleutel denk ik aan een getallenreeks die ervoor zorgt dat iets gebeurt b.v. armory.php?X=1234567890
dan zou ik juist datlaatste als sleutel zien :D, maarja...

het script werkt en daar gaat het momenteel om :)

bedankt,

JB'tje
 
PHP:
$naam_van_array = array('sleutel' => 'waarde','sleutel2' => 'waarde2');
Geef je geen sleutel op, bijv:
PHP:
$naam_van_array = array('waarde','waarde2');
Dan wijst PHP zelf sleutels aan. De sleutel die bij 'waarde' hoort is dan 0 en de sleutel bij 'waarde2' is 1.
Je zou het dus ook zo kunnen schrijven:
PHP:
$naam_van_array = array(0 => 'waarde',1 => 'waarde2');
Lees anders wat documentatie over arrays op php.net ;)
 
ik snap het :)
maar dat dat "sleutel" heet vat ik niet :D

bedankt voor de uileg :thumb:

JB'tje
 
hallo weer,

zo af en toe zet ik een fille op internet en die hebben allen dezelfde naam (op het getal na)
b.v.
GS_1.1.php tot GS_1.8.php
GS_2.1.php tot GS_2.8.php
enz.

aangezien ik geen zin heb om continu in de 'index.php' fille er een hyperlink bij te zetten, heb ik dit gemaakt
PHP:
$GS_PAR = '9';
$GS_HF = '8';

$GS = '';
$HF = '0';
do{
   $PAR = '0';
   do{
      $GS = 'GS_'.$HF.'.'.$PAR.'.php';
      if(file_exists($GS))
      {
         echo '<a href=\''.$GS.'\'>GS '.$HF.'.'.$PAR.'</a><br>';
      }
      $PAR = $PAR + '1';
   }while($PAR < $GS_PAR);
   $HF = $HF + '1';
}while($HF < $GS_HF);
nu werkt dit grotendeels wel, maar er zijn 2 problemen
- dit is geen programeren (denk maar aan mijn password maker :))
- dit werkt niet helemaal. Datgeen dat eruitkomt is dit:
GS 1.1.php
GS 1.2.php
GS 1.3.php
GS 1.4.php
GS 1.5.php
enz.
oftewel, de eerste is geen hyperlink... hoe kan dit en hoe is het op te lossen?

Alvast bedankt,

JB'tje
 
Geplaatst door JB'tje
nu werkt dit grotendeels wel, maar er zijn 2 problemen
- dit is geen programeren (denk maar aan mijn password maker :))
PHP is nooit programmeren, het is scripten. En het stukje dat jij gaf is slordig scripten :p
- dit werkt niet helemaal. Datgeen dat eruitkomt is dit:
GS 1.1.php
GS 1.2.php
GS 1.3.php
GS 1.4.php
GS 1.5.php
enz.
oftewel, de eerste is geen hyperlink... hoe kan dit en hoe is het op te lossen?
Als ik dat stukje code test, met de 5 bestanden aangemaakt, krijg ik er gewoon 5 links uit, dus ... :)
 
Als ik dat stukje code test, met de 5 bestanden aangemaakt, krijg ik er gewoon 5 links uit, dus ... :)
tjs, ik kan je alleen gelijk geven :'( het werkte bij mij ook, maar als ik het de andere lap tekst erboven zet, dan krijg je mijn resultaat.
'k zal wel ergens een foutje hebben gemaakt....
't is opgelost op een 'slordige' manier, maar het werkt.

Bedankt,

JB'tje:D
 
nadat ik een middag allemaal 'slordigheids' digen heb opgelost kom ik weer eens bij een probleem... :'(

ik prop nu alles in array's, dat gaat zo makkelijk :D
maar, nu wil ik de naam $ALLES in een array zetten en dat lukt niet...

tenminste, de $ALLES is ook een array, en die wil ik uitlezen met foreach. b.v.
PHP:
<?PHP
error_reporting(E_ALL);
// de namen en getallen in array's zetten
$naam1 = array("X1", "X2", "X3", "X4", "X5");
$naam2 = array("Y1", "Y2", "Y3", "Y4", "Y5");
$naam3 = array("Z1", "Z2", "Z3", "Z4", "Z5");

//nu de namen van de array's in een array zetten zodat ze een voor een met foreach uitgelezen kunnen worden.
$naam = array("$naam1","$naam2","$naam3");

//nu met foreach de array's "uitlezen"
foreach($naam AS $getal => $value)
{
  echo 'dit is het getal '. $getal .' en dit hoort erbij.. '.$value.'<br>';
}
?>

nu krijg je voor $getal en $value niet de goede uitvoer.
het kan wel opgelost worden, op deze manier, maar dat is slordig 'scripten' en aangezien ik steeds meer sites heb weet ik al bijna niet meer wat ik gedaan heb... :)
PHP:
<?PHP
//de slordige oplossing
$naam1 = array("X1", "X2", "X3", "X4", "X5");
$naam2 = array("Y1", "Y2", "Y3", "Y4", "Y5");
$naam3 = array("Z1", "Z2", "Z3", "Z4", "Z5");

//nu de namen van de array's in een array zetten zodat ze een voor een met foreach uitgelezen kunnen worden.
$naam = array("1","2","3");
foreach($naam AS $naam){
  if($naam == "1")
  { $array = $naam1;}
  elseif($naam =="2")
  {$array = $naam2;}
  elseif($naam == "3")
  {$array = $naam3;}

  //nu met foreach de array's "uitlezen"
  foreach($array AS $getal => $value) 
  {
    echo 'dit is het getal '. $getal .' en dit hoort erbij.. '.$value.'<br>';
  }
}
?>

maarja, de 2e manier is dus niet echt mooi...
welke andere oplossingen zijn er???

JB'tje :)
 
Laatst bewerkt:
De 1e manier is prima, je moet er alleen rekening mee houden dat de alle waarden in $naam array's zijn. Deze moet je dus ook nog eens doorlopen.
 
:eek: OEPS!!!! ff vergeten dat het dan nog een keertje doorgelopen moet worden.....

verder konden de " " weg
PHP:
$naam = array($naam1, $naam2, $naam3);
en dan nog ff een keertje doorlopen en dan wekt het.

HEEL erg bedankt, nu kan ik weer fijn verder werken... :)

Thanx,

JB'tje :eek:
 
Geplaatst door JPeetje
Fijn dat je dat door hebt ! :thumb:

Gelukkig wel.... anders zou ik niet veel geleerd hebben...:D

ik snap nu al veel, maar beheers helaas niet alle codes (of hoe je die wilt noemen:)). Ik ben bezig met de site waar dingen gekocht kunnen worden, maar ik weet niet hoe ik het script kan laten kijken of er wel getallen in de textbox staan....
welke code kan ik hiervoor gebruiken? of hoe kan ik dat doen?

alvast bedankt,

JB'tje :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan