While loop in query

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Martijn Roverts

Martijn Roverts

11/05/2008 16:39:00
Quote Anchor link
Hej hallo,

Ik heb de onderstaande query gemaakt omdat ik diverse array's naar een db wil inserten.

Ik heb hem eerst opgebouwd door hem de echoen en daar loopt ie als een trein...maar nu wil ik hem in een database stoppen. Ik heb de opbouw hetzelfde gelaten alleen de HTML tekens verwijderd en op regel 30 een controle toegevoegd om de het einde van een array te vinden en daar een actie aan te verbinden.

Hij insert nu helemaal niks in de DB als en geeft de volgende melding:
Sorry, er ging iets mis bij het updaten van de database!

Kan iemand mij helpen om te kijken waar ik iets fout doe....de while loop is goed dat weet ik zeker. Maar ik denk dat ik iets fout doet met de controle op regel 30.

INSERT INTO stand ( standID, standPoule, standTeam, standStand, standVereniging, standWedstrijden, standPunten, standStrafpunten, standSetsaldo, standDiverse, standDatum ) VALUES (
NULL , 'Regiodivisie', 'Heren 1', '1', 'Team 1', '20', '86', '0', '55', 'K', '2008-05-11 11:53:55'
),(
NULL , 'Regiodivisie', 'Heren 1', '2', 'Team 2', '20', '84', '0', '47', ' ', '2008-05-11 11:53:55'
),(
NULL , 'Regiodivisie', 'Heren 1', '3', 'Team 3', '20', '73', '0', '40', ' ', '2008-05-11 11:53:55'
);


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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
include 'connect.php';
if($_SERVER['REQUEST_METHOD'] == "POST")
{

if(isset($_POST['categorie']))
{

    $categorie     = $_POST['categorie'];
    $url = "http://websitemetdestanden/Standen.php?".$categorie."";
    $file_contents = file_get_contents($url);
        preg_match_all('/\<p class=\"subkop\"><a name=\"([^"]*)\\"><\/a>([^"]*)\<\/p>/', $file_contents, $poule); // zoeken naar combinatie
        preg_match_all('/\width="17%"\>([^"]*)\<\/td\>/', $file_contents, $teams); // zoeken naar combinatie
        preg_match_all('/\width="10%"\>([^"]*)\<\/td\>/', $file_contents, $diverse); // zoeken naar combinatie
        preg_match_all('/\width="5%" align="right"\>([^"]*)\&nbsp;&nbsp;<\/td\>/', $file_contents, $standen); // zoeken naar combinatie
        $diverse = array_slice($diverse[1], 1);// haalt de eerste match weg, dit is de tekst Diversen
        $teams = array_slice($teams[1], 1);// haalt de eerste match weg, dit is de tekst Team

        //De query opbouwen

        $query =    "INSERT INTO stand ( standID, standPoule, standTeam, standStand, standVereniging, standWedstrijden, standPunten, standStrafpunten, standSetsaldo, standDiverse, standDatum ) VALUES (";
        $i = 0;
        $standen_i = 0;
        while(!empty($teams[$i]) ) // door de arrays heen gaan met een while loop
        {
        $query .=    "NULL , '".$poule[2][0]."', 'Heren 1', '".$standen[1][$standen_i]."', '".$teams[$i]."', ";
        $standen_i++;
            while($standen_i < (($i+1)*5)) // met 5 stappen de $standen array doorlopen.
            {
                $query .=    "'".$standen[1][$standen_i]."', ";
                $standen_i++;
            }

            $query .=    "'".$diverse[$i]."', now()";
                if(!empty($teams[$i]) )// als $teams niet leeg is zorgen dat de query doorloopt.
                {
                $query .=    "),(";
                }

                $i++;
        }

        $query .=    ");"; //query afsluiten maar
        $resultaat = mysql_query($query);
            if($resultaat) // controle of query gelukt is.
            {
                echo '<p>De standen zijn succesvol toegevoegd!</p>';
            }
else{
                echo '<p>Sorry, er ging iets mis bij het updaten van de database!</p>';
            }
    }
}

?>
 
PHP hulp

PHP hulp

05/11/2024 11:34:03
 
Joren de Wit

Joren de Wit

11/05/2008 16:47:00
Quote Anchor link
Quote:
Sorry, er ging iets mis bij het updaten van de database!
Maar je wilt juist weten wát er fout gaat, aan deze onduidelijke foutmelding heb je dus niets!

Als een query niet lukt, geef dan een foutmelding met mysql_error() zodat je tenminste de database foutmelding te zien krijgt.
 
Martijn Roverts

Martijn Roverts

11/05/2008 16:53:00
Quote Anchor link
Mmm je hebt gelijk ik zie nu gelijk wat er fout gaat.
In de array staat een ' in een van de namen...ik zal htmlentities gebruiken om dat op te lossen.
 
Joren de Wit

Joren de Wit

11/05/2008 16:55:00
Quote Anchor link
Quote:
ik zal htmlentities gebruiken om dat op te lossen.
Nee, geen htmlentities()!

Deze functie gebruik je als je html code in je browser wilt weergeven en dus alleen bij output. Bij het invoegen in je database gebruik je mysql_real_escape_string() om problemen met quotes (en SQL injectie) te voorkomen...
 



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.