Array_flip
Hallo ik gebruik de functie array_flip. Alleen zit er een nadeel aan array_flip:
Als ik deze waardes heb:
En ik flip dit (heb ik nodig voor het invoegen van de 'VALUES' in mijn database). dan verdwijnt veld2, omdat er maar één '1' kan zijn.
Hoe zou ik zoiets kunnen oplossen?
Als ik deze waardes heb:
En ik flip dit (heb ik nodig voor het invoegen van de 'VALUES' in mijn database). dan verdwijnt veld2, omdat er maar één '1' kan zijn.
Hoe zou ik zoiets kunnen oplossen?
Hoezo zou je array_flip() nodig hebben als het gaat om het uitlezen van een array om waarden in een database te stoppen?
@Blance, het gaat om het invoegen van gegevens op deze manier:
Ik zie dat het met array_flip helemaal niet kan op de manier die ik wil. Zou het ook op een andere manier kunnen?
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$brieftotaal = "'" .implode("','",$_POST). "'";
$postbodetotaal = implode(",",array_flip($_POST));
$sql="INSERT INTO tabel ($postbodetotaal) VALUES($brieftotaal)";
?>
$brieftotaal = "'" .implode("','",$_POST). "'";
$postbodetotaal = implode(",",array_flip($_POST));
$sql="INSERT INTO tabel ($postbodetotaal) VALUES($brieftotaal)";
?>
Ik zie dat het met array_flip helemaal niet kan op de manier die ik wil. Zou het ook op een andere manier kunnen?
Het is heel logisch dat die ene verdwijnt omdat je geen dubbele keys/ids mag hebben. Ik snap ook niet hoe je dit dan wilt gaan oplossen. Je kan b.v. geen array_flip meer gaan gebruiken maar handmatig via foreach en dan een controle uitvoeren en als het bestaat er een _ (o.i.d.) achter gooien maar dan blijf je bezig.
Je kunt met een for-lus werken die begint op het getal van de grootte van je array en dan steeds 1 eraf. Als je dan alles in een nieuwe array zet in de lus krijg je dezelfde array maar dan omgekeerd.
@Zim: maar sinds wanneer sla jij meerdere gegevens gescheiden door een komma op in 1 veld? Ik krijg het vermoeden dat het datamodel dat je dan gebruikt niet helemaal juist is...
ps. @Mark: dan kun je dus net zo goed een foreach loop gebruiken om je array uit te lezen. En ook dan zal je tegen hetzelfde probleem aanlopen dat je geen dubbele keys in je array mag hebben.
ps. @Mark: dan kun je dus net zo goed een foreach loop gebruiken om je array uit te lezen. En ook dan zal je tegen hetzelfde probleem aanlopen dat je geen dubbele keys in je array mag hebben.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Opzich is het op te lossen Maarten, alleen dan moet het gelijk uit de array.
Ik heb een idee ffies kijken of ik eruit kom.
@blance, dat doe ik toch niet? of zie ik dat verkeerd?
Ik heb een idee ffies kijken of ik eruit kom.
@blance, dat doe ik toch niet? of zie ik dat verkeerd?
Gewijzigd op 01/01/1970 01:00:00 door Zim Zim
Ik liep toevallig van de week tegen het zelfde probleem aan en heb het toen zo opgelost:
Code (php)
1
2
3
4
5
2
3
4
5
$aCols = array();
foreach($aRow as $sColName => $sValue){
$aCols[] = $sColName;
}
echo implode(';',$aCols)."\r\n";
foreach($aRow as $sColName => $sValue){
$aCols[] = $sColName;
}
echo implode(';',$aCols)."\r\n";
Gewijzigd op 01/01/1970 01:00:00 door Bo az
'Zim:
Oh, ik zit niet op te letten, mijn fout ;)@blance, dat doe ik toch niet? of zie ik dat verkeerd?
PHP maakt op zich geen onderscheid tussen associative arrays:
array (
"a" => "b",
"c" => "d",
"e" => "f"
)
en arrays:
Array("a","b","c","d");
Terwijl het verschil best groot is.
De functies die jij zoekt heten array_values en array_keys.
Ik raad het overigens van harte af om direct de $_POST variabelen in je database te knikkeren.
array (
"a" => "b",
"c" => "d",
"e" => "f"
)
en arrays:
Array("a","b","c","d");
Terwijl het verschil best groot is.
De functies die jij zoekt heten array_values en array_keys.
Ik raad het overigens van harte af om direct de $_POST variabelen in je database te knikkeren.
Ik heb het nu zo opgelost:
@Arend
Waarom zou je het afraden om $_POST gelijk erin te knikkeren? Het zijn toch jou $POST's? Die worden van jou server toch verstuurd? of heb ik dat verkeerd?
Waarom zou je het afraden om $_POST gelijk erin te knikkeren? Het zijn toch jou $POST's? Die worden van jou server toch verstuurd? of heb ik dat verkeerd?
Dat kan ook user-input zijn, dus die moet je altijd checken.
Dat klopt, maar het is wel input van de gebruiker. Als jij daar verder niets mee doet is jouw script gevoelig voor sql inject. Minimaal hoor je over de input van gebruikers een functie als mysql_real_escape_string() te halen...
@Jan Hoe checken?
Ik heb er wel een mysql_real_escape_string() in. En ze kunnen alleen iets invullen door de juiste veldnamen te weten, anders krijgen ze een error. En als ze de juiste veldnamen weten en er waardes invullen, krijg ik gewoon data binnen, en dat wil je toch bij een formulier?
Ik heb er wel een mysql_real_escape_string() in. En ze kunnen alleen iets invullen door de juiste veldnamen te weten, anders krijgen ze een error. En als ze de juiste veldnamen weten en er waardes invullen, krijg ik gewoon data binnen, en dat wil je toch bij een formulier?
Minimaal dus door mysql_real_escape_string() te gebruiken. Dat voorkomt al dat queries mislukken of dat er sql injectie plaats kan vinden...




