[php/MySQL] Loopt maar een keer :(

Pagina: 1
Acties:

  • Woef
  • Registratie: Juni 2000
  • Niet online
Titel is wat vaag, spreekt zichzelf wat tegen,
want als dit wel loopte was het geen probleem.
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
<?
$news_query_result = mysql_query("SELECT * FROM categorie_reakties ORDER BY timestamp DESC LIMIT 0, 100");
$news_id=mysql_result($news_query_result,0,"news_id");

$test_query = mysql_query("SELECT * FROM categorie_sub where id='$news_id'");
$title = $test_query["naam"];
if ($test_array = mysql_fetch_array($test_query)){
        // start do statement, to create the list of headlines
        do  {
                if (strlen($test_array["naam"]) >= 28 ) {
                // if so, make it shorter
                $news_headline = substr ($test_array["naam"], 0 , 22) . "...";
                } else {
                // if not so, just do it
                $news_headline = $test_array["naam"];
                }
                $headline = "<a href='tijdschrift.php?id=$news_id'>$news_headline</a>";
               echo "&amp;nbsp;[img]'$pic'>&amp;nbsp;$headline<br[/img]\n";
}
        while ($test_array = mysql_fetch_array($test_query));
        } else {
        echo "";
        }
?>

waarom maakt hij maar een keer een resultaat, wat doe ik fout?

Verwijderd

geeft mysql een foutmelding?

  • Woef
  • Registratie: Juni 2000
  • Niet online
nope niks,
alleen hij pakt hem maar een keer !
Er zijn veel meer reacties in de DB !

  • JoostBaksteen
  • Registratie: December 2000
  • Laatst online: 27-03 19:32
PHP:
1
2
3
<?
while ($test_array = mysql_fetch_array($test_query));        } else {       
?>

Volgens mij klopt dit niet helemaal ;)

  • Woef
  • Registratie: Juni 2000
  • Niet online
Wat moet dat worden dan?

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Op zondag 30 september 2001 21:08 schreef Ruben_Pruim het volgende:
Wat moet dat worden dan?

;


(; weghalen )

Doet iets met Cloud (MS/IBM)


  • Grum
  • Registratie: Juni 2001
  • Niet online
hoe komt men toch op deze BARRE constructies :? ;(
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?
// liever geen * gebruiken in je query
$news_query_result = mysql_query("SELECT * FROM categorie_reakties ORDER BY timestamp DESC LIMIT 0, 100");
 
// als je alleen item 1 wilt .. waarom haal je dan in GODSNAAM alle andere op 
$news_id = mysql_result($news_query_result,0,"news_id");
 
// goede/betere query zou dus zijn:
// select news_id from categorie_reakties ORDER BY timestamp DESC LIMIT 1
 
// same goes here, alleen de velden ophalen die je nodig hebt (dus NIET *)
// een goede/betere query mag je zelf maken
$test_query = mysql_query("SELECT * FROM categorie_sub where id='$news_id'");
 
// nu komt het enge pas ...
 
// NEEM DIT DUS NIET OVER WAT HIER ONDER STAAT OOK VOOR DE MENSEN DIE DIT OOIT TERUG LEZEN 
// (dit is namelijk code die al eerder hier is geplaatst en waar dus dezelfde 
// domme dingen in zitten (no offence))
 
//--------------------------------------------------------
// wat ik denk dat ooit de bedoeling was:
// heb ik rows ? zo jah .. print ze .. zo nee .. print nix
  
// waarom haal je los 1 titel op ?
$title = $test_query["naam"];
 
// deze constructie AUB vergeten .. dit is inefficient + slordig
//-->8---->8---->8---->8---->8---->8---->8---->8--- 
if ($test_array = mysql_fetch_array($test_query)){
        // start do statement, to create the list of headlines
        do  {
                if (strlen($test_array["naam"]) >= 28 ) {
                // if so, make it shorter
                $news_headline = substr ($test_array["naam"], 0 , 22) . "...";
                } else {
                // if not so, just do it
                $news_headline = $test_array["naam"];
                }
                $headline = "<a href='tijdschrift.php?id=$news_id'>$news_headline</a>";
               echo "&amp;amp;amp;nbsp;[img]'$pic'>&amp;amp;amp;nbsp;$headline<br[/img]\n";
}
        while ($test_array = mysql_fetch_array($test_query));
} else {
    echo "";
}
//-->8---->8---->8---->8---->8---->8---->8---->8--- 
// vanaf hier is het weer enigszins veilig :P

// dan nu hoe wel
 
if(mysql_num_rows($test_query))
{
    // yippie! .. we hebben results
    while ($test_array = mysql_fetch_array($test_query))
    {
        if (strlen($test_array['naam']) >= 28 ) 
            $news_headline = substr($test_array['naam'], 0, 22).'...';
        else 
            $news_headline = $test_array['naam'];
 
        echo '&amp;amp;nbsp;[img]"'.$test_array['pic'].'">&amp;amp;nbsp;
[/img]'.
              $news_headline.'</a><br>';
    }
}
else
{
    // eigelijk niet nodig als je nix wilt printen .. maar voor de stijl dan :P
}
?>

voor de topic starter .. lees AUB alle posts door in een thread voor je een stuk copied/paste

en deze code hierboven gaat niet werken als je niet zelf eerst even er naar kijken (HINT: query)

HTH :'( :+

  • Woef
  • Registratie: Juni 2000
  • Niet online
oke heel erg bedankt :),
ik heb er dit van gemaakt:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?
$news_id = mysql_query("select news_id from categorie_reakties ORDER BY timestamp DESC LIMIT 5");
$test_query = mysql_query("SELECT * FROM categorie_sub where id='$news_id'");
if(mysql_num_rows($test_query))
{
while ($test_array = mysql_fetch_array($test_query))
{
if (strlen($test_array['title']) >= 28 ) 
$news_headline = substr($test_array['title'], 0, 22).'...';
else 
$news_headline = $test_array['title'];
echo '&amp;amp;nbsp;[img]"'.$pic.'">&amp;amp;nbsp;
<a[/img]'.
$news_headline.'</a><br>';
}
}
else
{
}
?>

Alleen nu krijg ik geen results :(
alles blijft leeg :(

Verwijderd

je moet denk ik ook het nieuws terugkrijgen en niet het nieuwsid....


SQL query dus aanpassen.

  • Arnim
  • Registratie: Juni 2001
  • Laatst online: 04-09 15:49
[b]Op zondag 30 september 2001 22:21 schreef ik heb er dit van gemaakt:
PHP:
1
2
3
4
5
<?
$news_id = mysql_query("select news_id from categorie_reakties ORDER BY timestamp DESC LIMIT 5");
$test_query = mysql_query("SELECT * FROM categorie_sub where id='$news_id'");
...
?>

Alleen nu krijg ik geen results :(
alles blijft leeg :(
Je wil het resultaat van de eerste query ($news_id) rechtstreeks in de tweede query stoppen, maar je moet eerst de werkelijke waarde uit de query halen met bv mysql_result voordat je dit kan doen.
Dus zoiets als:
PHP:
1
2
3
4
5
6
<?
$news_result = mysql_query( "select news_id from categorie_reakties ORDER BY timestamp DESC LIMIT 5" );
$news_id     = mysql_result( $news_result );
$test_query  = mysql_query("SELECT * FROM categorie_sub where id='$news_id'");
...
?>

edit:

typo

Team ColdFusion


  • Woef
  • Registratie: Juni 2000
  • Niet online
precies volgens jou manier gedaan en dan geeft ie dit aan :?
code:
1
Warning: Wrong parameter count for mysql_result()

  • me1299
  • Registratie: Maart 2000
  • Laatst online: 12:13

me1299

$ondertitel

Tip: Installeer phpmyadmin, en paste de query, dan zie je iig of je query goed is.

Dat heeft mij onderhand ook een hoop tijd gescheelt.

Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Op zondag 30 september 2001 22:21 schreef Ruben_Pruim het volgende:
oke heel erg bedankt :),
ik heb er dit van gemaakt:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?
$news_id = mysql_query("select news_id from categorie_reakties ORDER BY timestamp DESC LIMIT 5");
$test_query = mysql_query("SELECT * FROM categorie_sub where id='$news_id'");
if(mysql_num_rows($test_query))
{
while ($test_array = mysql_fetch_array($test_query))
{
if (strlen($test_array['title']) >= 28 ) 
$news_headline = substr($test_array['title'], 0, 22).'...';
else 
$news_headline = $test_array['title'];
echo '&amp;amp;amp;nbsp;[img]"'.$pic.'">&amp;amp;amp;nbsp;
<a[/img]'.
$news_headline.'</a><br>';
}
}
else
{
}
?>

Alleen nu krijg ik geen results :(
alles blijft leeg :(
* LuCarD wijst op de FAQ mbt tot debbugging van scripts?

Oke... zet de alle queries eens in een variable en dump die op het scherm. Stop deze vervolgens in phpMyAdmin (Ander SQL beheer tool mag ook) en bekijk het resultaat.

Wat ik persoonlijk verwacht: is dat de eerste query 5 resultaten terug geeft en de tweede maar 1.

Wat gaat er dan fout?
PHP:
1
2
3
<?
$news_id = mysql_query("select news_id from categorie_reakties ORDER BY timestamp DESC LIMIT 5");
?>


Deze geeft vijf verschillende waarden terug deze moeten dus ook vijf keer worden opgehaald.
PHP:
1
2
3
<?
$test_query = mysql_query("SELECT * FROM categorie_sub where id='$news_id'");
?>

Deze geeft naar mijn vermoeden maar 1 waarde terug, dus deze query zou je 5 keer moeten uitvoeren.

Dat geeft dus het volgende script:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?
$news_result = mysql_query("select news_id from categorie_reakties ORDER BY timestamp DESC LIMIT 5");
while($news_id  = mysql_result( $news_result ))
{
$test_query = mysql_query("SELECT * FROM categorie_sub where id='$news_id'");
if ($test_array = mysql_fetch_array($test_query)) // JE VERWACHT MAAR 1 RESULTAAT
{
    if (strlen($test_array['title']) >= 28 ) 
        $news_headline = substr($test_array['title'], 0, 22).'...';
    else 
        $news_headline = $test_array['title'];
    echo '&amp;amp;nbsp;[img]"'.$pic.'">&amp;amp;nbsp;<a[/img]'.$news_headline.'</a><br>';
} // END IF
} // END WHILE
?>

Programmer - an organism that turns coffee into software.

Pagina: 1