Iedereen alvast beste wensen..

Maar nu heb ik een probleem..
Een eenvoudige arrays kon ik wel opslaan..maar een multidimensionele arrays niet. Kan iemand mij uitleggen hoe ik multidimensionele arrays kan opslaan.

De output van print_r($_POST) ziet er als volgt uit:

Array
(
    [laatzien] => Array
        (
            [1] => text.php
        )

    [fotoid] => Array
        (
            [12] => 69
            [13] => 29
        )

    [aantallimit] => Array
        (
            [12] => 15
            [13] => 15
        )

    [textid] => Array
        (
            [12] => 12
            [13] => 13
        )

    [orginalrowid] => Array
        (
            [12] => 1
            [13] => 1
        )

    [savetext] => Save
)


Met deze code probeer ik arrays op te slaan..:

<?php
  if (is_array($_POST)) {
      foreach ($_POST as $key => $value) {
          $exceptions = 'savetext, laatzien, ';
          if (!preg_match("/$key, /", $exceptions)) {
              foreach ($value as $subKey => $subValue) {
                  echo $subKey . $subValue . "<br>";
                  $sql = "UPDATE $invultexttab SET aantallimit='???', text_foto_id='???', text_border='???', text_title='???' WHERE text_id='$subKey'";
              }
          }
      }
  }
?>


Die echo $subKey.$subValue."<br>"; heb ik als output:
1269
1329
1215
1315
1212
1313
121
131

Zo te zien loopt arrays goed..alleen wil al deze gegevens niet goed opslaan in juiste velden.

Kan iemand dus mij even uitleggen.

bvd
??? zet je niet in een database. Wanneer een veld een lege waarde heeft (want dat is ???) dat zet je gewoon NULL in dat veld.

Verder voer je de query nergens uit.

Die gegevens komen eerst uit database en wil ook daarna updaten..en wordt dus alle arrays opgeslagen.

De probleem is de juiste array die in juiste veld moet opgeslagen worden.

<?php
$eenArray = array(
  'fruit' => array(
    'appels','peren'
  ),
  'groente' => array(
    'wortels','tomaten'
  )
);
?>

Of bedoel je dat niet?
Werkt zoiets niet.
Ik snap niet exact wat er nou in $key, $value, $subKey en $subValue staat, maar hier kan je wel iets mee proberen.
Het wordt dus wel 1 query, maar met meerdere opdrachten.
Daarvoor is het laatste stukje.
Daar implode je de opdrachten, voer je de query uit en is er wat (basis)-foutafhandeling.

<?php
$sql = array();

if (is_array($_POST)) 
	{
	foreach ($_POST as $key => $value) 
		{
		$exceptions = 'savetext, laatzien, ';
		if (!preg_match("/$key, /", $exceptions)) 
			{
			foreach ($value as $subKey => $subValue) 
				{
				echo $subKey . " met " . $subValue . "<br>";
				$sql[] = "UPDATE ".$key." SET aantallimit = ".$subValue." WHERE text_id = ".$subKey." ";
				}
			}
		}
	}

$sql = implode(", ", $sql);
if(mysql_query($sql))
	{
	echo 'gelukt';
	}
else
	{
	echo 'niet gelukt';
	}
	
?>
Bedankt..het is al wat stukje beter en kan nog wel beetje aanpassen..

De output ziet er als uit:

Array
(
    [0] => UPDATE fotoid SET aantallimit = 69 WHERE text_id = 12 
    [1] => UPDATE fotoid SET aantallimit = 29 WHERE text_id = 13 
    [2] => UPDATE aantallimit SET aantallimit = 15 WHERE text_id = 12 
    [3] => UPDATE aantallimit SET aantallimit = 15 WHERE text_id = 13 
    [4] => UPDATE textid SET aantallimit = 12 WHERE text_id = 12 
    [5] => UPDATE textid SET aantallimit = 13 WHERE text_id = 13 
    [6] => UPDATE newfotoid SET aantallimit =  WHERE text_id = 15 
    [7] => UPDATE newaantallimit SET aantallimit =  WHERE text_id = 15 
)


Die array 6 en 7 wordt een insert.
Eddy..

Door die

$sql = implode(", ", $sql);
if(mysql_query($sql))

zegt dat het elk keer niet gelukt is. Als ik die , aanpas naar ; en de hele update regels plakt in phpmyadmin, werkt ie wel. Rechtstreeks via php niet.

Waaraan zou het liggen?

Niet Bumpen:

Twee of meer keer achter elkaar in een topic posten heet bumpen. Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de knop om je tekst aan te passen.

SanThe.


mysql_query() sends a unique query (multiple queries are not supported) to the currently active database on the server that's associated with the specified link_identifier .
Aha... beetje jammer. Ik was inderdaad uitgegaan van phpMyAdmin waarin je die , (of ;) kan gebruiken.
Je zou ook die array $sql kunnen doorlopen, maar dan krijg je alsnog meerdere queries.

Dan is mysql_unbuffered_query() denk ik een betere oplossing ;).
Ik heb ook zo mijn bedenkingen bij het datamodel. Laat eens zien hoe dat eruit ziet.
Een datamodel is een eenvoudig opzet..

text_id int(11) auto_increment,
text_foto_id int(11),
aantallimit varchar(50),
text_border int(1),
text_title int(1)

En de output van die Eddy:

Array
(
    [0] => UPDATE invultext SET text_foto_id='69' WHERE text_id='12'
    [1] => UPDATE invultext SET text_foto_id='29' WHERE text_id='13'
    [2] => UPDATE invultext SET aantallimit='15' WHERE text_id='12'
    [3] => UPDATE invultext SET aantallimit='15' WHERE text_id='13'
    [4] => UPDATE invultext SET text_border='1' WHERE text_id='12'
    [5] => UPDATE invultext SET text_border='1' WHERE text_id='13'
    [6] => UPDATE invultext SET text_title='1' WHERE text_id='12'
    [7] => UPDATE invultext SET text_title='1' WHERE text_id='13'
)



SanThe: Ik was niet aan het bumpen. Ik vroeg normaal om een oplossing na een foutmelding.

Reageren