uitlezen MySQL wel in WAMP, niet op hostserver.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Tortuga web

tortuga web

03/02/2014 12:35:40
Quote Anchor link
En alweer een beginnendePHP-er.
Met behulp van al jullie wijze raad en scripts, heb ik een website gebouwd, met een eenvoudig nieuwssysteem. In mijn locale WAMP-server werkt dit perfect, maar nadat ik de site geupload heb naar de host-server, werkt het niet meer. Kan dit door een verschil in PHP5.3 en PHP5.4 zitten?
De code is deze:
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
<?php
        ini_set('display_errors', 'On');
        error_reporting(E_ALL | E_STRICT);
      
        $aErrors = array();
        require_once ('script/db_config.php');

            //  Construeer een opdracht voor de database
            $sQuery = "SELECT * FROM nieuws
                       ORDER BY nieuws_id"
;
            //  Stuur de opdracht op
            $rResult = mysql_query($sQuery, $rLink);
            //  Controleer of het gelukt is
            if ($rResult === false) {
              $aErrors[] = 'Er zijn nog geen nieuwsberichten.';
            }

            elseif (mysql_num_rows($rResult) == 1) {
              $aErrors[] = 'Er zijn geen nieuwsberichten!';
            }

          
        
        //  Als er dingen fout zijn gegaan, vertel het
        if (count($aErrors) > 0) {
          echo '<p class="error">';
          foreach ($aErrors as $sError) {
            print $sError . '<br />';
          }

          echo '</p>';
        }

        //  Geen fouten? Dan maken we een lijst!
        else {
          echo '<dl>';
          while ($aBericht = mysql_fetch_assoc($rResult)) {
            //  We moeten vanwege de speciale tekens in de titel htmlspecialchars() gebruiken
            //  Dit zorgt ervoor dat bijvoorbeeld < en " onschadelijk worden gemaakt

            echo '<li>';
            echo ($aBericht['datum']);
            echo '</li>';
            echo '<li id="titel">';
            echo htmlspecialchars($aBericht['titel']);
            echo '</li>';
            echo ('</br>');
            echo '</li>';
            echo nl2br($aBericht['bericht']);
            echo '</li>';
            echo ('</br></br></br>'). PHP_EOL;
          }

          echo '</dl>';
        }

?>

Er wordt verbinding gemaakt met de database en er zijn berichten, maar toch krijg ik een error en wordt dit stukje script uitgevoerd.

$sQuery = "SELECT * FROM nieuws
ORDER BY nieuws_id";
// Stuur opdracht op
$rResult = mysql_query($sQuery, $rLink);
// Controleer of het gelukt is
if ($rResult === false) {
$aErrors[] = 'Er zijn nog geen nieuwsberichten.';
}

Iemand enig idee?
 
PHP hulp

PHP hulp

29/03/2024 10:55:51
 
- Ariën  -
Beheerder

- Ariën -

03/02/2014 12:41:04
Quote Anchor link
Die melding 'Er zijn nog geen nieuwsberichten' klopt niet.
Op dit punt moet er een error zijn die aangeeft dat de data niet kan worden opgehaald, vanwege een fout.

Kijk ook eens naar mysql_error(), en houd in je achterhoofd dat in toekomstige PHP-versies geen mysql_*() functies meer zullen slikken, en dat je over moet stappen naar de functiesets van PDO of MySQLi.
 
Erwin H

Erwin H

03/02/2014 12:46:50
Quote Anchor link
Beide foutmeldingen kloppen niet. Zoals Aar al zegt betekent de eerste dat er iets fout is gegaan met de query en kan je dus niets zeggen over het aantal berichten. Bij de tweede haal je er 1 op en zeg je dat er geen zijn. Dat klopt dus ook niet, want er is er wel 1.
 
Tortuga web

tortuga web

03/02/2014 12:47:36
Quote Anchor link
Dat klopt wel, dat van die errormelding, maar daar gaat het niet om, dat is even tijdelijk om te maskeren dat er een fout optreedt. Het probleem is dat de opdracht niet goed uitgevoerd wordt op de hostserver, maar wel in de wampserver.

En ja, die 1 in de tweede foutmelding moet 0 zijn, dat had ik nog niet teruggezet na allerlei testpogingen om de zaak aan de praat te krijgen.
Er staan dus wél berichten in de database, er wordt ook verbinding mee gemaakt, maar de data wordt niet opgehaald en kan niet ontdekken waarom niet.
Gewijzigd op 03/02/2014 12:50:39 door tortuga web
 
- Ariën  -
Beheerder

- Ariën -

03/02/2014 12:53:37
Quote Anchor link
Wat zegt mysql_error()?
 
Tortuga web

tortuga web

03/02/2014 12:57:06
Quote Anchor link
uhmmm, waar zet ik dat in het script???
 
- Ariën  -
Beheerder

- Ariën -

03/02/2014 13:00:52
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
if ($rResult === false) {
$aErrors[] = 'Error: '.mysql_error();


Op zo een manier, i.p.v..:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
if ($rResult === false) {  
$aErrors[] = 'Er zijn nog geen nieuwsberichten.';


Uiteraard tijdelijk, en laat je deze melding bezoekers niet zien.
Gewijzigd op 03/02/2014 13:01:46 door - Ariën -
 
Michael -

Michael -

03/02/2014 13:13:34
Quote Anchor link
Verander * nog even naar de velden die je daadwerkelijk wilt ophalen.
Zoals al was gezegd vervallen de mysql_* functies. Kijk eens naar MySQLi of PDO.
Het hele lijstje van echo's om je lijst te generen kan ook eenvoudiger en overzichtelijker.
bijvoorbeeld
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
echo '<li>' . $aBericht['datum'] . '</li>'
.'<li id="titel">' . htmlspecialchars($aBericht['titel']) . '</li>'
.'<li>' . nl2br($aBericht['bericht']) . '</li>';
?>
Gewijzigd op 03/02/2014 13:20:39 door Michael -
 
Tortuga web

tortuga web

03/02/2014 13:15:35
Quote Anchor link
Error: Unknown column 'nieuws_id' in 'order clause'....
O boy, ga even wat verbetering aanbrengen, want er zit een foutje in mijn database-columnnaam. Ben wel blij met dit comando, dat maakt een hoop duidelijk. Dank je wel en als het dan toch nog niet lukt kom ik weer terug.
 
Michael -

Michael -

03/02/2014 13:17:24
Quote Anchor link
nieuws_id bestaat dus helemaal niet. Geef daarom ook je velden op ipv *. Dat maakt het veel overzichtelijker welke velden je tot je beschikking hebt.
 



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.