PHP list niet volledig uitgevoerd

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Tom geen

Tom geen

15/09/2011 13:39:06
Quote Anchor link
Hallo,

Ik heb een probleem. Ik wil namelijk een lijst uit mysql halen en daarvoor de volgende regels geschreven:

<link href="List.css" rel="stylesheet" type="text/css" />

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

require_once"database_connect.php";

$sql = mysql_query("SELECT * FROM producten ORDER BY id ASC");
$run = mysql_query($sql);

echo '<ul>';
while ($rows = mysql_fetch_assoc($sql)){
$name = "Product title";
$comments = "Product info";

echo '<li />' .'Name: ' . $rows[$name] . '<br />'
. 'Comment: ' . $rows[$comments] ;

echo '</ul>';

}


?>


Echter krijg ik dan wel een lijst met alle gegevens uit mysql maar alleen het eerste item uit de lijst heeft de opmaak van de css regel. (met een background e.d.) en de overige hebben dat niet. Maar het vreemde is dat de andere items weer wel de hover effect uit de css regels hebben. Ter verduideling hier de css regels:

#wrapper ul {
list-style:none;
cursor: pointer;
}

#wrapper ul li{
font-size:16px;
font-family:"Times New Roman", Times, serif;
background:#F00;

}

Iemand enig idee hoe ik dit kan verhelpen?

Ik kan ook nog een plaatje ter verduideling van de situatie bijvoegen maar dan moet iemand mij even vertellen hoe dat hier in zijn werking gaat.

Bvd Tom
Gewijzigd op 15/09/2011 13:40:14 door Tom geen
 
PHP hulp

PHP hulp

20/11/2024 16:40:01
 
- SanThe -

- SanThe -

15/09/2011 13:47:29
Quote Anchor link
Foutafhandeling query's ontbreekt.
Regel 6 geeft een dikke error.
Zo te zien heb jij in de database veldnamen gebruikt met spaties. NOOIT doen.
 
Tom geen

Tom geen

15/09/2011 13:52:39
Quote Anchor link
Regel 6 geeft een dikke fout?
Ik ben nog niet zo heel lang bezig met php, dus ik zie nog niet echt wat er allemaal wel en niet fout gaat.

Dus als je me op weg zou willen helpen dan ben ik je zeer dankbaar.

Tom
 
- SanThe -

- SanThe -

15/09/2011 13:55:48
Quote Anchor link
- SanThe - op 15/09/2011 13:47:29:
Foutafhandeling query's ontbreekt.


Als je dat inbouwt komt de error vanzelf te voorschijn.
http://www.phphulp.nl/php/tutorial/data-verwerking/foutafhandeling-query-sql/735/
 
Tom geen

Tom geen

15/09/2011 14:22:30
Quote Anchor link
Ik heb nu die foutafhandeling query's toegevoegd en krijg de volgende melding:

Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Resource id #5' at line 1Resource id #5

Enig idee wat dit is?
 
- SanThe -

- SanThe -

15/09/2011 14:36:59
Quote Anchor link
Netjes gedaan.

$sql = mysql_query("SELECT * FROM producten ORDER BY id ASC");
In $sql zit nu het resultaat van de query (resource id)

En op de volgende regel ga jij daar nogmaals mysql_query() op loslaten. Dat gaat uiteraard niet goed.
$run = mysql_query($sql);
 
Tom geen

Tom geen

15/09/2011 14:47:54
Quote Anchor link
Maar als ik de regel:

$run = mysql_query($sql);

er uit haal dan blijft die zelde error staan. Wat moet ik dan doen om die error eruit te krijgen?
 
- SanThe -

- SanThe -

15/09/2011 15:06:06
Quote Anchor link
Als regel 6 weg is dan zou de error ook weg moeten zijn.

Laat je script met de wijzigingen eens zien.
 
Tom geen

Tom geen

15/09/2011 15:08:07
Quote Anchor link
<link href="List.css" rel="stylesheet" type="text/css" />

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
<?php
# errors weergeven
ini_set('display_errors',1); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);
# sql debug
define('DEBUG_MODE',true);  // true == aan, false == uit

# functie voor sql debug

    function showSQLError($sql,$error,$text='Error')
    {

        if (DEBUG_MODE)
        {

            return  '<pre>Error: ' . $error . '<br />' . $sql . '</pre>';
        }

        else
        {
            return $text;
        }
    }

    
require_once"database_connect.php";

$sql = mysql_query("SELECT * FROM producten ORDER BY id ASC");
if (($result = mysql_query($sql)) === false)
{

    echo showSQLError($sql,mysql_error(),'Fout met database.');
}




echo '<ul>';
while ($rows = mysql_fetch_assoc($sql)){
$name = "Product_title";
$comments = "Product_info";


echo '<li />' .'Name: ' . $rows[$name] . '<br />'
. 'Comment: ' . $rows[$comments] ;

echo '</ul>';

}


?>
 
- SanThe -

- SanThe -

15/09/2011 15:13:20
Quote Anchor link
Je voert weer een query over een query-result uit.

$sql = mysql_query("SELECT * FROM producten ORDER BY id ASC");
if (($result = mysql_query($sql)) === false)


Beter is eerst de sql in een var en dan de query.

$sql = "SELECT * FROM producten ORDER BY id ASC";
if (($result = mysql_query($sql)) === false)

Toevoeging op 15/09/2011 15:15:06:

Aangezien nu het resultaat in $result zit moet je deze regel even aanpassen:

while ($rows = mysql_fetch_assoc($sql)){
Naar
while ($rows = mysql_fetch_assoc($result)){

Toevoeging op 15/09/2011 15:20:40:

Het benoemen van $vars die verder niet zullen veranderen doe je NOOIT in een (while)loop. Dat kost alleen maar extra tijd. Dus regels 33 en 34 horen vóór de while(). Beter nog: Gewoon helemaal niet aanmaken, maar gewoon de namen in $rows['hier_de_naam'] zetten.
 
Tom geen

Tom geen

15/09/2011 15:21:06
Quote Anchor link
Ow, werkt dat zo. (het kwartje moest even vallen)

Maar nu is de error opgelost (bedankt daarvoor), maar heb ik nog steeds de vraag:

Ik krijg wel een lijst met alle gegevens uit mysql maar alleen het eerste item uit de lijst heeft de opmaak van de css regel. (met een background e.d.) en de overige hebben dat niet. Maar het vreemde is dat de andere items weer wel de hover effect uit de css regels hebben.

Weet je hoe dit zit?
 
- SanThe -

- SanThe -

15/09/2011 15:25:23
Quote Anchor link
Deze: <li /> bestaat niet.
Wel: <li>met tekst ertussen</li>
 
Tom geen

Tom geen

15/09/2011 15:53:04
Quote Anchor link
Ik heb nu de code gewijzigd naar:

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
echo '<ul>';
while ($rows = mysql_fetch_assoc($result)){
$name = "Product_title";
$comments = "Product_info";


echo '<li>' . 'Name: ' . $rows[$name] . '<br />'
. 'Comment: ' . $rows[$comments] . '</li>';
echo '</ul>';

}


?>


met de css regels:

#wrapper ul {
list-style:none;
cursor: pointer;
}

#wrapper li {
font-size:16px;
font-family:"Times New Roman", Times, serif;
background:#F00;

}

#wrapper li:hover{
font-size:16px;
font-family:"Times New Roman", Times, serif;
background:#03F;

}

Ik heb nu de css een beetje aangepast en nu hebben alle items een background:#F00 en een hover effect background:#03F

Maar nu is de eerste item ongeveer 25px naar rechts uitgelijnd en de rest niet en heeft het eerste item een pointer (zoals opgegeven in de css) en de rest ook niet.

Ik vindt het vooral vreemd dat alleen de eerste item aan alle voorwaarde voldoet en de daarop volgende niet meer.

Wat zie ik over het hoofd?
 
- SanThe -

- SanThe -

15/09/2011 16:01:21
Quote Anchor link
Volgorde klopt niet.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
echo '<ul>';
while (.......){
    echo '<li>' .
    '</li>';
    echo '</ul>';
}

?>


Je opent <ul> slechts 1 keer.
Je sluit </ul> net zo vaak als dat de while() loopt.
Gewijzigd op 15/09/2011 16:02:04 door - SanThe -
 
Tom geen

Tom geen

15/09/2011 16:05:54
Quote Anchor link
aha...ik heb nu:

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
while ($rows = mysql_fetch_assoc($result)){
$name = "Product_title";
$comments = "Product_info";

echo '<ul>';
echo '<li>' . 'Name: ' . $rows[$name] . '<br />'
. 'Comment: ' . $rows[$comments] . '</li>';
//'<li>' '</li>'
echo '</ul>';

}


?>


en nu werkt hij zoals ik hem wil hebben!

-SanThe- je bent de beste!

Tnx, Tom
 
- SanThe -

- SanThe -

15/09/2011 16:12:55
Quote Anchor link
- SanThe - op 15/09/2011 15:13:20:
Het benoemen van $vars die verder niet zullen veranderen doe je NOOIT in een (while)loop. Dat kost alleen maar extra tijd. Dus regels 33 en 34 horen vóór de while(). Beter nog: Gewoon helemaal niet aanmaken, maar gewoon de namen in $rows['hier_de_naam'] zetten.


Nou dit nog even doen.
 
Tom geen

Tom geen

15/09/2011 16:40:01
Quote Anchor link
Als ik de $vars niet aanmaak maar alleen in $rows['hier_de_naam'] plaats is dat ook sneller dan dat ik ze boven de loop neer zet of maakt dat niet uit?

Want ik vindt het zelf overzichteljker om ze in $vars neer te zetten.
Gewijzigd op 15/09/2011 16:42:26 door Tom geen
 
- SanThe -

- SanThe -

15/09/2011 16:45:51
Quote Anchor link
Het zal een heeeeeeeeel klein beetje sneller zijn, maar dat is te verwaarlozen. Maar haal het definiëren zeker buiten de loop, want dat kost ietsje meer tijd.
 



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.