join() function wil niet werken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bas verhagen

bas verhagen

19/07/2008 12:14:00
Quote Anchor link
Hallo,

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)
PHP script in nieuw venster Selecteer het PHP script
1
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>';


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
 
PHP hulp

PHP hulp

27/12/2024 13:13:06
 
PHP Newbie

PHP Newbie

19/07/2008 12:40:00
Quote Anchor link
$_POST['delete_items'] is een array? (check het even met is_array())
 
Bas verhagen

bas verhagen

19/07/2008 14:32:00
Quote Anchor link
Vreemd, als ik $_POST['delete_items'] echo, dan zegt hij 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
 
Mark L

Mark L

19/07/2008 14:46:00
Quote Anchor link
En als je print_r() gebruikt? Dan zie je wat er in de array staat.
 
Bas verhagen

bas verhagen

19/07/2008 14:53:00
Quote Anchor link
Als ik print_r() erop los laat zegt hij (onafhankelijk van hoeveel checkboxen ik aanklik): Array1

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
 
- SanThe -

- SanThe -

19/07/2008 15:03:00
Quote Anchor link
print_r($_POST['delete_items']);
 
Bas verhagen

bas verhagen

19/07/2008 15:08:00
Quote Anchor link
SanThe schreef op 19.07.2008 15:03:
print_r($_POST['delete_items']);


Dat heb ik idd geprobeerd :)
 
- SanThe -

- SanThe -

19/07/2008 15:10:00
Quote Anchor link
Zet dit bovenin je script.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);

// rest
?>
 
B a s
Beheerder

B a s

19/07/2008 15:11:00
Quote Anchor link
Zijn de values van de checkboxes wel goed? Check de source eens en post 's wat de values zijn ( $messages[$i]['pb_id'])..
 
Bas verhagen

bas verhagen

19/07/2008 15:12:00
Quote Anchor link
ik krijg de volgende errors:

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
 
B a s
Beheerder

B a s

19/07/2008 15:16:00
Quote Anchor link
Maak er 's een array van, voor je formulier:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$delete_items
= Array();
?>


En geef je <form> ook ff een 'action' mee :).
 
Bas verhagen

bas verhagen

19/07/2008 15:21:00
Quote Anchor link
Dit geeft ook geen verbetering..

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
 
Bas verhagen

bas verhagen

20/07/2008 16:13:00
Quote Anchor link
Ik bump hem even omhoog want ben er altijd nog niet uit.

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?
 
Bas verhagen

bas verhagen

20/07/2008 18:26:00
Quote Anchor link
Is er misschien nog een andere manier om alle id's van de aangevinkte checkboxen in een Array te krijgen?

(sorry voor 3 posts achter elkaar)
 
Joren de Wit

Joren de Wit

20/07/2008 18:33:00
Quote Anchor link
Dit is wel de meest basale manier:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>
 
Bas verhagen

bas verhagen

20/07/2008 18:53:00
Quote Anchor link
Ik ben er na 2 dagen einelijk achter gekomen hoe ik mijn probleem heb kunnen oplossen.

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!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.