join() function wil niet werken
Ik zit met een nieuw probleem waarbij ik de fout maar niet kan achterhalen.
Ik heb een scriptje waarmee ik doormiddel van checkboxen, meerdere dingen tegelijk kan verwijderen uit de database.
Dit is het script:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if ( $_POST["delete_items"] ) {
$delete_items = join(",", $_POST["delete_items"]);
$result = $DB->query("DELETE FROM pb WHERE pb_id IN ($delete_items)");
} else {
(de for enz.)
echo '<form method="POST" name="delete">
(De inhoud van de rij)
<input type="checkbox" name="delete_items[]" value="'. $messages[$i]['pb_id'] .'">';
}
echo '<input type="submit" value="Verwijder" name="delete">
</form>';
$delete_items = join(",", $_POST["delete_items"]);
$result = $DB->query("DELETE FROM pb WHERE pb_id IN ($delete_items)");
} else {
(de for enz.)
echo '<form method="POST" name="delete">
(De inhoud van de rij)
<input type="checkbox" name="delete_items[]" value="'. $messages[$i]['pb_id'] .'">';
}
echo '<input type="submit" value="Verwijder" name="delete">
</form>';
Ik heb de overige inhoud van het script even weg gelaten.
De error die wordt gegeven:
Warning: join() [function.join]: Invalid arguments
Ik hoop dat iemand mij kan helpen.
Gewijzigd op 01/01/1970 01:00:00 door Bas verhagen
$_POST['delete_items'] is een array? (check het even met is_array())
Maar als ik met is_array() test, zegt hij dat het geen Array is maar een string.
Het probleem zit dus ergens in het formuliertje.. maar waar :S
En als je print_r() gebruikt? Dan zie je wat er in de array staat.
Wat ook erg vreemd is, is dat het hele script op mijn huidige website wel werkt, maar niet op mijn nieuwe site waar ik gebruik maak van OOP Classes en objecten enz. Zou het hier aan kunnen liggen? Lijkt me wel raar eigenlijk.
Gewijzigd op 01/01/1970 01:00:00 door bas verhagen
print_r($_POST['delete_items']);
SanThe schreef op 19.07.2008 15:03:
print_r($_POST['delete_items']);
Dat heb ik idd geprobeerd :)
Zijn de values van de checkboxes wel goed? Check de source eens en post 's wat de values zijn ( $messages[$i]['pb_id'])..
Notice: Undefined index: delete
Notice: Undefined index: delete_items
Maar dat is gewoon van de GET en de POST die in het script staan.
Daarnaast is $messages[$i]['pb_id'] gewoon het id nummer van de PB. En die werkt gewoon.
Gewijzigd op 01/01/1970 01:00:00 door bas verhagen
Op een of andere manier maakt hij er zelf geen array van ofzo :l
Gewijzigd op 01/01/1970 01:00:00 door bas verhagen
Het vreemde is dat het op mijn site zonder OOP objecten en classes, wel werkt, maar op miijn nieuwe site met OOP's objecten en classes, niet!
Zou het met een class te maken kunnen hebben of praat ik nu onzin?
(sorry voor 3 posts achter elkaar)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(!empty($_POST['options']))
{
foreach($_POST['options'] as $option)
{
echo $option.'<br>';
}
}
}
?>
<form method="post" action="#">
<input type="checkbox" name="options[]" value="1" />
<input type="checkbox" name="options[]" value="2" />
<input type="checkbox" name="options[]" value="3" />
<input type="checkbox" name="options[]" value="4" />
<input type="submit" value="Verstuur" />
</form>
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(!empty($_POST['options']))
{
foreach($_POST['options'] as $option)
{
echo $option.'<br>';
}
}
}
?>
<form method="post" action="#">
<input type="checkbox" name="options[]" value="1" />
<input type="checkbox" name="options[]" value="2" />
<input type="checkbox" name="options[]" value="3" />
<input type="checkbox" name="options[]" value="4" />
<input type="submit" value="Verstuur" />
</form>
Het echte probleem is dat op 'sommige servers' een array van checkboxes in $_POST wordt opgeslagen met de waarde 'Array' (puur string), die op geen enkele wijze uit te lezen valt. Echter wordt in $_REQUEST de waardes wel goed erin gezet.
Ik vind het nogal raar dat mijn oude site (op dezelfde server) dit probleem niet heeft.
Maar ik heb het dus kunnen oplossen door $delete_items = join(', ', $_POST['delete_items']);
te veranderen in: $delete_items = join(', ', $_REQUEST['delete_items']);
Bedankt voor de hulp iedereen!