PHP/MYSQL: (double) quotes en backticks ???
- Aar - op 12/07/2015 19:50:48:
Okay dus als ik het goed begrijp verwacht je iets met een if conditie. Kan ik dat indelen in een aantal standaard verwachtingen? Jij noemt boolean, string, integer of array. Bedoel je dat ik voor iedere van deze (en evt. andere) een aparte if conditie moet maken? Op welke manier zou dat moeten dan?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
// boolean = true of false
if($logged_in == true)
{
// string = tekens
if($mode == "delete")
{
// integer = getal, geheel getal zonder komma etc
if(is_int($id))
{
// array = meerdere velden in 1 rij
if(is_array($woorden))
{
// nog een controle, op int (count() telt)
if(count($woorden) == 2)
{
// doe hier iets
}
}
}
}
}
?>
// boolean = true of false
if($logged_in == true)
{
// string = tekens
if($mode == "delete")
{
// integer = getal, geheel getal zonder komma etc
if(is_int($id))
{
// array = meerdere velden in 1 rij
if(is_array($woorden))
{
// nog een controle, op int (count() telt)
if(count($woorden) == 2)
{
// doe hier iets
}
}
}
}
}
?>
gecombineerd, wel elke voorwaarde nieuwe regel
Code (php)
Of in 1 zin:
gegevens uit 2 verschillende formulieren halen?
Anders kan je ook een tweede conditie in je if gebruiken, waarbij je ook (AND) controleert op de [/i]name[/i] van de submitknop.
- Aar - op 13/07/2015 12:33:38:
Een submit-knop triggert alleen de data uit zijn eigen formulierveld, voor zover ik weet.
Tenzij je het met javascript oplost
Gewijzigd op 13/07/2015 12:58:09 door Randy vsf
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
If (isset($_POST['linkoms']) && (is_array($_POST['linkoms'])) && ($linkoms = " ") && isset($_POST['linkadd']) && (is_array($_POST['linkadd'])) && ($linkadd = " ") )
{
echo "test"; // word geechoed
var_dump($tab); // wordt afgedrukt
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
echo "test"; // word geechoed
var_dump($tab); // wordt afgedrukt
if (!isset($_POST['kolom2']) && !isset($tab) ) {
echo "test"; // niet geechoed bij isset, wel geechoed bij !isset
$tab = $_POST['kolom2'];
var_dump($tab); // deze dump geeft null zowel bij isset als !isset.
foreach($_POST['linkoms'] as $key => $dummy) {
$oms = $conn->real_escape_string($_POST['linkoms'][$key]);
$add = $conn->real_escape_string($_POST['linkadd'][$key]);
$sql = "INSERT INTO $tab (linkoms, linkadd) VALUES ('$oms', '$add')" ; // het ligt niet aan de manier van schrijven. de foutmelding komt doordat $tab geen waarde bevat.
{
echo "test"; // word geechoed
var_dump($tab); // wordt afgedrukt
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
echo "test"; // word geechoed
var_dump($tab); // wordt afgedrukt
if (!isset($_POST['kolom2']) && !isset($tab) ) {
echo "test"; // niet geechoed bij isset, wel geechoed bij !isset
$tab = $_POST['kolom2'];
var_dump($tab); // deze dump geeft null zowel bij isset als !isset.
foreach($_POST['linkoms'] as $key => $dummy) {
$oms = $conn->real_escape_string($_POST['linkoms'][$key]);
$add = $conn->real_escape_string($_POST['linkadd'][$key]);
$sql = "INSERT INTO $tab (linkoms, linkadd) VALUES ('$oms', '$add')" ; // het ligt niet aan de manier van schrijven. de foutmelding komt doordat $tab geen waarde bevat.
Ik krijg dus de melding undefined index.
$tab is leeg. Eerder in het script is het wel te echoen of printen. Maar hier niet. Ik heb 2 formulieren in 2 verschillende files om het in te lezen. Je kunt toch met $_POST iets uit een formulier halen zo vaak je wilt indien je action in de html tag heb?
Toevoeging op 14/07/2015 13:40:36:
Het probleem is dat als ik isset gebruik, de variabele niet is ingesteld zodat de code na de { niet wordt uitgevoerd.
Dus gebruik ik !Isset, dan wordt het uitgevoerd, maar helaas is de variabele dan niet ingesteld.
Ik kan me niet voorstellen dat het aan de formulier input ligt.
Dus als die beiden niet bestaan ga jij er mee verder.
Zeer vreemd.
Johan West op 13/07/2015 22:44:15:
Het probleem is dat als ik isset gebruik, de variabele niet is ingesteld zodat de code na de { niet wordt uitgevoerd.
Dus gebruik ik !Isset, dan wordt het uitgevoerd, maar helaas is de variabele dan niet ingesteld.
Ik kan me niet voorstellen dat het aan de formulier input ligt.
Dus gebruik ik !Isset, dan wordt het uitgevoerd, maar helaas is de variabele dan niet ingesteld.
Ik kan me niet voorstellen dat het aan de formulier input ligt.
Dus als je !isset gebruikt, kijk je of deze nog niet bestaat.
En als hij niet bestaat, ga je verder... maar vind je het gek dat hij niet bestaat?
Hij moet wel bestaan. En zo niet: maak hem aan?
En je gaat dus hier de fout in:
Code (php)
Je zegt dat het aan $tab ligt, maar bestaat $_POST['kolom2'] ? Zo ja, dan gaat dit dus niet.
Wellicht bedoel je dit:
Gewijzigd op 14/07/2015 16:31:50 door Eddy E
Welke opties heb ik nog over voor if?
alternatief:
of als je bijvoorbeeld wilt controleren dat $tab een integer, of een email adres wordt:
Code (php)
1
2
3
4
2
3
4
<?php
$tab = filter_input(INPUT_POST, 'kolom2', FILTER_VALIDATE_INT);
$tab = filter_input(INPUT_POST, 'kolom2', FILTER_VALIDATE_EMAIL);
?>
$tab = filter_input(INPUT_POST, 'kolom2', FILTER_VALIDATE_INT);
$tab = filter_input(INPUT_POST, 'kolom2', FILTER_VALIDATE_EMAIL);
?>
Bestaat $_POST['kolom2'] niet of kom je niet door de test, dan is $tab FALSE
Nog een variant: probeer er een invoer van te maken die wel voldoet. Bijvoorbeeld van 123abc kun je het getal 123 maken en van [email protected]%&* kun je [email protected] maken
Code (php)
1
2
3
4
2
3
4
<?php
$tab = filter_input(INPUT_POST, 'kolom2', FILTER_SANITIZE_NUMBER_INT);
$tab = filter_input(INPUT_POST, 'kolom2', FILTER_SANITIZE_EMAIL);
?>
$tab = filter_input(INPUT_POST, 'kolom2', FILTER_SANITIZE_NUMBER_INT);
$tab = filter_input(INPUT_POST, 'kolom2', FILTER_SANITIZE_EMAIL);
?>
http://php.net/filter-input
http://php.net/manual/en/filter.filters.validate.php
http://php.net/manual/en/filter.filters.sanitize.php
Zijn er situaties die jullie je kunnen voorstellen of herinneren waarin een variabelen ineens binnen een conditie niet meer werkte?
Welke reden heeft PHP om de werking niet meer bruikbaar te maken?
Dingen echoën kan dus ik zie dat de if conditie werkt, maar zodra ik var_dump gebruik is het resultaat null dus is de mysql query leeg dus heb i k een error melding.
Ivo P op 14/07/2015 18:21:06:
Ik begrijp niet helemaal het doel van het gebruik van filter_input. Ik heb het eens getest en ik ben ineens wel van die vervelende Undefined Variabele meldingen af.
Maar var_dump geeft nog steeds null.
Ik word er helemaal niet blij van en het is niet motiverend.
Lever de volgende stukken informatie aan:
1. het script / de code met je formulier
2. het script / de code die het formulier verwerkt
3. de stappen die je doorloopt die leiden tot een bepaald resultaat
4. een omschrijving van wat er daadwerkelijk gebeurt en wat je verwacht dat er zou moeten gebeuren
De hele tijd gaan er flarden van de puzzel heen en weer en dit heeft tot nu toe niet zoveel opgeleverd.
Een onvolledige situatieschets van een probleem analyseren (laat staan oplossen) is nagenoeg onmogelijk.
Gewijzigd op 31/07/2015 15:03:40 door Thomas van den Heuvel