Versio

hoe query maken?

Overzicht Reageren

Orhan T

Orhan T

23/12/2007 14:29:00
Quote Anchor link
Ik heb nu allemaal verschillende selectboxen met de name position[] . Nu wil ik een query maken om deze in de database te stoppen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
$sql = "INSERT INTO POSITION (
        Name )
        VALUES (
        '".$_POST["position"]."' )
        ";

Dit gaat duidelijk dus niet werken omdat wanneer de gebruiker meerdere selecteerd ik allerlei namen krijgen in een kolom. Hoe moet ik het dan doen?
Een lus is de oplossing maar ik weet niet hoe ik dit in elkaar zou moeten zetten.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
while ($rij = $_POST["position"])
{
     $sql = "INSERT INTO POSITION (
        Name )
        VALUES (
        '"$rij"' )
                                ";    
mysql_query($sql);
}


Zoiets misschien?
 
PHP hulp

PHP hulp

24/05/2012 21:25:08
Gesponsorde koppelingen:
 
Jan Koehoorn

Jan Koehoorn

23/12/2007 14:33:00
Quote Anchor link
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
<?php
    foreach ($_POST['position'] as $position) {
        $sql = "
            INSERT INTO POSITION
            (
                Name
            )
            VALUES
            (
                '"
. $position . "'
            )
            "
;
    }

?>

Edit:
En dan natuurlijk binnen de foreach de query uitvoeren en error checking toepassen
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
 
Orhan T

Orhan T

23/12/2007 14:36:00
Quote Anchor link
Is dat alles? Bedankt ! Ik moet me toch wat meer verdiepen in de foreach lus..
 
Jan Koehoorn

Jan Koehoorn

23/12/2007 14:39:00
Quote Anchor link
Zeker aan te raden. Je hebt hem veel nodig ;-0
 
Orhan T

Orhan T

23/12/2007 14:41:00
Quote Anchor link
Kan je me misschien ook uit leggen waarom het nou juist niet kan met bijvoorbeeld een while loop of een van de andere loops?

Edit:
Ik kan toch ook in de loop :
$aorid[] = mysql_insert_id(); in zetten ?
Het dan later in de loop ook nog in een ander tabel inserten door ".$aorid."
Maar wordt dan wel de eerste array gepakt en daarna weer de tweede en hoef ik niet een [] achter de variabele te zetten? Dit doe ik nog natuurlijk allemaal in de loop, je kan toch wel een if plaatsen in een foreach?
Veel vragen maar ik hoop op een antwoord
Gewijzigd op 01/01/1970 01:00:00 door Orhan T
 
Jan Koehoorn

Jan Koehoorn

23/12/2007 14:47:00
Quote Anchor link
Het kan met een for loop ook, maar waarom zou je?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
    for ($i = 0, $n = count($_POST['position']); $i < $n; $i++ ) {
        $sql = "INSERT INTO ..."; // enzovoort
    }
?>

Je ziet dat die syntax veel lastiger is.
 
Orhan T

Orhan T

23/12/2007 14:51:00
Quote Anchor link
Kan je misschien ook nog de vragen onder mijn edit beantwoorden. Ik plaats ze hier wel even:
Ik kan toch ook in de loop :
$aorid[] = mysql_insert_id(); in zetten ?
Het dan later in de loop ook nog in een ander tabel inserten door ".$aorid."
Maar wordt dan wel de eerste array gepakt en daarna weer de tweede en hoef ik niet een [] achter de variabele te zetten? Dit doe ik nog natuurlijk allemaal in de loop, je kan toch wel een if plaatsen in een foreach?
Veel vragen maar ik hoop op een antwoord(en)
 
Arend a

Arend a

23/12/2007 14:51:00
Quote Anchor link
Het kan ook prima met een while loop:

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
<?
while ($value = array_shift($_POST['position'])) {
        $sql = "
            INSERT INTO POSITION
            (
                Name
            )
            VALUES
            (
                '"
. $value . "'
            )
            "
;
}

?>


of met een for loop

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

foreach ($i = 0; $i < count($_POST['position']); $i++) {
        $sql = "
            INSERT INTO POSITION
            (
                Name
            )
            VALUES
            (
                '"
. $_POST['position'][0] . "'
            )
            "
;
}


?>


Wat je ziet is dat de notatie van foreach het makkelijkste is om een lijst mee te doorlopen. De while loop is handig wanneer je iets steeds wil herhalen tot je aan een bepaalde conditie voldoet, en de for loop is practischer voor een sequentie (1,2,3,4,5).

In de praktijk kan je ze allemaal door elkaar gebruiken met een iets andere notatie.
 
Orhan T

Orhan T

23/12/2007 14:57:00
Quote Anchor link
@arend, kan je achter '".$_POST["position"][0]."' niet de [0] weglaten?
Hier nog de vragen die ik hiervoor ook stelde:
Kan je een if plaatsen in een foreach loop?
$aorid[] = mysql_insert_id wanneer ik dat in de loop zet en er later om terug vraag in de loop, mag ik het dan zo typen $aorid of moet het als een array: $aorid[]?
Bedankt voor de reacties :D
 
Jeroen Spaans

Jeroen Spaans

21/02/2008 20:04:00
Quote Anchor link
moet de mysql_query buiten de { }?
 
Frank -

Frank -

21/02/2008 20:08:00
Quote Anchor link
Jeroen Spaans schreef op 21.02.2008 20:04:
moet de mysql_query buiten de { }?
Nee, anders voer je de query maar 1x uit, alleen de laatste.

Voor je eigen gemak maak je eerst een query string aan, $query en ga je die daarna pas uitvoeren in de functie mysql_query(), controleren of het is gelukt, etc. etc.

Ps. Het is wel een oud topic en niet eens je eigen topic...
 



Overzicht Reageren