Array uitlezen
$string = "bananen, appels, peren, aardbeien';
Hoe kan ik nu checken of bijvoorbeeld 'bananen' voorkomt in de $string?
Een if in array krijg ik niet aan de praat....
Het is ook geen array. Het is een nietszeggende string voor een database. Ga normaliseren, dus de waarden als aparte records in een nieuwe tabel. Dan kun je gewoon joinen.
In MySQL zelf (in een query) zou je dit met de MySQL functie LOCATE() kunnen bereiken denk ik, maar ja, je tabel een betere structuur geven is wellicht een beter idee (al kan het serialiseren van data soms ook wel een goed idee zijn, maar hier wellicht niet).
Het enige geval dat ik zo snel kan bedenken waar serialiseren handig kan zijn is wanneer je 100% zeker weet dat je niet in de data hoeft te zoeken. Maar dan zou ik niet gaan scheiden met komma's, maar een json string in de database zetten, of serialize() gebruiken. Echter, dit zijn gegevens waar je waarschijnlijk in wilt zoeken, bijvoorbeeld "welke mensen hebben o.a. voor banaan gekozen?" Dat is alleen fatsoenlijk op te lossen door goed te normaliseren.
Dan moet ik alleen een array zien te maken vanuit een formulier:
Code (php)
1
2
3
4
2
3
4
echo "<input type=\"checkbox\" name=\"audio[]\" value=\"Z1\">Microfoon - zender 1<br>";
echo "<input type=\"checkbox\" name=\"audio[]\" value=\"Z2\">Microfoon - zender 2<br>";
echo "<input type=\"checkbox\" name=\"audio[]\" value=\"Z3\">Microfoon - zender 3<br>";
echo "<input type=\"checkbox\" name=\"audio[]\" value=\"Z4\">Microfoon - zender 4<br><br>";
echo "<input type=\"checkbox\" name=\"audio[]\" value=\"Z2\">Microfoon - zender 2<br>";
echo "<input type=\"checkbox\" name=\"audio[]\" value=\"Z3\">Microfoon - zender 3<br>";
echo "<input type=\"checkbox\" name=\"audio[]\" value=\"Z4\">Microfoon - zender 4<br><br>";
De aangevinkte microfoons moeten in een array worden opgeslagen in een database. Hoe krijg ik dat voor elkaar?
Na het versturen van je formulier heb je al je data in een array staan in $_POST['audio']. Deze kan je met foreach() uitlezen en gebruiken in een INSERT-querie.
Gewijzigd op 06/12/2015 12:47:47 door - Ariën -
Hoe ziet die foreach() er bij mij uit dan?
// hier je query met $item als value.
}
Op deze manier gaat het fout:
Code (php)
1
2
3
2
3
foreach($_POST['audio'] as $audio) {
$update_item = mysql_query("UPDATE items SET audio = '".$audio."' WHERE itemID ='".$itemID."'");
}
$update_item = mysql_query("UPDATE items SET audio = '".$audio."' WHERE itemID ='".$itemID."'");
}
Dan komt alleen de laatst aangevinkte microfoon in de database te staan.
dan moet je een INSERT INTO query gebruiken.
De hele rits audio moet in de kolom audio komen bij een bepaald ID.
En dan dus op de volgende manier: "Z1", "Z3", "Z4"
Hoe doe ik dat dan?
http://www.phphulp.nl/php/tutorial/overig/normaliseren/150/ is een goed begin.
De basis is dat je een aparte tabel gebruikt om de "audio" in op te slaan, met een verwijzing naar het ID dat je al hebt.
De hele rits? Dat wil je niet, dan kun je er niks meer mee. Nogmaals, ga normaliseren. De basis is dat je een aparte tabel gebruikt om de "audio" in op te slaan, met een verwijzing naar het ID dat je al hebt.
Desnoods met cijfers, ipv tekst....
Gewijzigd op 11/12/2015 09:48:51 door - Ariën -
Code (php)
1
2
3
4
5
2
3
4
5
echo "<input type=\"checkbox\" name=\"audio[]\" value=\"VID-C\">VIDEO COMPLEET<br>";
echo "<input type=\"checkbox\" name=\"audio[]\" value=\"VID-M\">VIDEO MEELEES<br>";
echo "<input type=\"checkbox\" name=\"audio[]\" value=\"UNDERSCORE\">UNDERSCORE<br><br>";
Als ik de eerste twee checkboxen aanvink krijg ik dit terug:
Array ( [0] => VID-C [1] => VID-M )
En in die twee variabelen staan de key en de value
Hoe krijg ik daar zo'n mooie lijst van, zoals:
"VID-C", "VID-M"
Want die regel moet m'n database in....
En dan steeds een INSERT INTO uitvoeren in de loop.
Het lijkt mij niet logisch om alle waardes in één record te plaatsen.
Gewijzigd op 11/12/2015 11:04:22 door - Ariën -
Dus ik moet er van tevoren al zo'n regel als: "VID-C", "VID-M" van hebben....
Hoe krijg ik die met zo'n foreach loop?
Zo wordt het later lastig om te tellen wanneer of door wie er het product/voorwerp/item VID-C of VID-M is gebruikt.
Zo een opsomming is leuk om te tonen, maar waardeloos voor databases.
Gewijzigd op 11/12/2015 11:17:27 door - Ariën -