Query goed, slechts 1 record output ipv 20 waar zit fout?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Cor S

Cor S

29/12/2011 17:44:50
Quote Anchor link
Hallo mensen,

Ik heb een import script voor mezelf geschreven dat op basis van 2 tabellen data ophaalt en de categorienaam uit tabel 1 gebruikt om categorie id uit tabel 2 te vinden.
Zodra hij dat gedaan heeft kan hij een insert doen in tabel 3.

Ik heb een limit ingesteld op 20 stuks, echter hij haalt me maar 1 record op en insert er dus ook maar 1.

Onderstaand de php code die ik heb gemaakt:

Aub laten zien wat ik fout doe, ben geen programmeur.
Alvast bedankt.

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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?

//DATABASE VARIABELEN
$host="127.0.0.1"; // De MySQL host van de server
$gebruiker = "blabla";  // De gebruikersnaam van de MySQL database op de server
$wachtwoord = "123456"; // Het wachtwoord van de MySQL database op de server
$dbnaam="blabla"; // De naam van de database op uw server

mysql_connect($host, $gebruiker, $wachtwoord);  // Niet wijzigen
mysql_select_db($dbnaam) or die (mysql_error());  // Niet wijzigen


// stap 1. ophalen data uit tabel met de te importeren links en ophalen van alle data nodig stap 2 en stap 3.
// Nu even een limit gezet op de insert voor testen, klaar met testen dan LIMIT 5 verwijderen uit query.


$links_qry=
"SELECT
*
FROM
cities_link
LIMIT 20"
;

$exec_links = mysql_query($links_qry) or die ('Ojee, foutieve query das lullig!: '.mysql_error());
while($veld = mysql_fetch_assoc($exec_links)){

        $catname = $veld["Catnaam"];
        $sURL = $veld["Url"];
        $sTitle = $veld["Linktitel"];
        $sDesc = $veld["Linkomschrijving"];

}


// stap 2. verbinden met tabel met categorien voor ophalen catid  >> catid nodig voor de insert van links in nieuwe tabel links stap 3.
$select_catid =
    
        "SELECT
            *
        FROM
            page_categories
        WHERE
            sCatName = '"
.$catname."'
        "
;

$exec_catid = mysql_query($select_catid) or die ('Ojee, foutieve query!: '.mysql_error());
while ($veld = mysql_fetch_assoc($exec_catid)) {
        $catid = $veld["iCatID"];

}


// stap 3. hier komt de insert in de tabel links



echo "INSERT INTO `blabla`.`links` (`iLinkID`, `iCatID`, `sURL`, `sTitle`, `sDesc`, `iStyle`, `iPos`, `iImage`) VALUES (NULL, '$catid', '$sURL', '$sTitle', '$sDesc', '1', '0', '0')";


mysql_query("INSERT INTO `blabla`.`links` (`iLinkID`, `iCatID`, `sURL`, `sTitle`, `sDesc`, `iStyle`, `iPos`, `iImage`) VALUES (NULL, '$catid', '$sURL', '$sTitle', '$sDesc', '1', '0', '0') ") or die(mysql_error());
        




?>
Gewijzigd op 29/12/2011 17:47:50 door Cor S
 
PHP hulp

PHP hulp

22/12/2024 16:36:09
 
- SanThe -

- SanThe -

29/12/2011 17:49:55
Quote Anchor link
Je doet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
while()
{
    ...
}

while()
{
    ...
}
...

?>

Terwijl je moet doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
while()
{
    ...

    while()
    {
        ...
        ...
    }
}

?>
Gewijzigd op 29/12/2011 17:57:16 door - SanThe -
 
Cor S

Cor S

29/12/2011 17:56:17
Quote Anchor link
Bedankt SanThe


Ik ga eens proberen of ik dat snel draaiend krijg, ik was al getipt op een while probleem, echter zien is beter dan horen.
 
- SanThe -

- SanThe -

29/12/2011 17:58:08
Quote Anchor link
Regel 31 en 48 achteraan zetten en klaar.

Toevoeging op 29/12/2011 17:59:49:

En NIET twee keer dezelfde $veld gebruiken in de verschillende while()'s.
 
Cor S

Cor S

29/12/2011 18:04:30
Quote Anchor link
Heb er nu onderstaand van gemaakt, script werkt nog, echter nog steeds maar 1 record.

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

$exec_links
= mysql_query($links_qry) or die ('Ojee, foutieve query das lullig!: '.mysql_error());
while($veld = mysql_fetch_assoc($exec_links)){

        $catname = $veld["Catnaam"];
        $sURL = $veld["Url"];
        $sTitle = $veld["Linktitel"];
        $sDesc = $veld["Linkomschrijving"];


// stap 2. verbinden met tabel met categorien voor ophalen catid  >> catid nodig voor de insert van links in nieuwe tabel links stap 3.
$select_catid =
    
        "SELECT
            *
        FROM
            page_categories
        WHERE
            sCatName = '"
.$catname."'
        "
;

$exec_catid = mysql_query($select_catid) or die ('Ojee, foutieve query!: '.mysql_error());
while ($veld = mysql_fetch_assoc($exec_catid)) {
        $catid = $veld["iCatID"];




        }
    }




// stap 3. hier komt de insert in de tabel links

echo "INSERT INTO `corsegers_paggev`.`links` (`iLinkID`, `iCatID`, `sURL`, `sTitle`, `sDesc`, `iStyle`, `iPos`, `iImage`) VALUES (NULL, '$catid', '$sURL', '$sTitle', '$sDesc', '1', '0', '0')";


mysql_query("INSERT INTO `corsegers_paggev`.`links` (`iLinkID`, `iCatID`, `sURL`, `sTitle`, `sDesc`, `iStyle`, `iPos`, `iImage`) VALUES (NULL, '$catid', '$sURL', '$sTitle', '$sDesc', '1', '0', '0') ") or die(mysql_error());
        



?>
Gewijzigd op 29/12/2011 18:06:10 door Cor S
 
Erwin H

Erwin H

29/12/2011 18:06:48
Quote Anchor link
En daarna gaan we het nog over joins hebben zodat we niet tig queries hoeven te draaien, maar maar 1 query?

En dat ene record komt omdat je maar een keer in de insert query terecht komt. Als je per record uit de 2e query een insert wilt doen, zal je dat dus ook binnen de while loop moeten zetten.
Gewijzigd op 29/12/2011 18:08:01 door Erwin H
 
- SanThe -

- SanThe -

29/12/2011 18:15:19
Quote Anchor link
- SanThe - op 29/12/2011 17:58:08:
Regel 31 en 48 achteraan zetten en klaar.

Toevoeging op 29/12/2011 17:59:49:

En NIET twee keer dezelfde $veld gebruiken in de verschillende while()'s.


Regel 31 en 48 HELEMAAL achteraan zetten, als laatste dus.
En: NIET twee keer dezelfde $veld gebruiken in de verschillende while()'s. Maak daar $veld1 en $veld2 van. Nu overschrijven ze elkaar.
 
Cor S

Cor S

29/12/2011 18:17:57
Quote Anchor link
Ok,


Het werkt nu, $veld hernoemt en } aan het einde gezet, 20 records opgehaald en geinsert.

Volgende stap voor mij is het leren maken van joins in 1 query, en meer oefenen met loops.

Alle records staan op juiste paginas.


Bedankt voor de hulp en de les maar weer.
 



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.