While loop in query
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)
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
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"\>([^"]*)\ <\/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>';
}
}
}
?>
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"\>([^"]*)\ <\/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>';
}
}
}
?>
Quote:
Maar je wilt juist weten wát er fout gaat, aan deze onduidelijke foutmelding heb je dus niets!Sorry, er ging iets mis bij het updaten van de database!
Als een query niet lukt, geef dan een foutmelding met mysql_error() zodat je tenminste de database foutmelding te zien krijgt.
In de array staat een ' in een van de namen...ik zal htmlentities gebruiken om dat op te lossen.
Quote:
Nee, geen htmlentities()!ik zal htmlentities gebruiken om dat op te lossen.
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...