Foutmelding in mijn script Undefined Variable

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior Java Developer Onderzoeksinstituut Architec

Bedrijfsomschrijving Als Senior Java Developer kom je te werken bij een internationaal gerenommeerd onderzoeksinstituut. Dagelijks is dit instituut verantwoordelijk voor de juiste samenwerking, toegankelijkheid en communicatie voor circa 9000 interne gebruikers. In een team van elf ontwikkelaars ben je als Senior Java Developer verantwoordelijk voor het ontwikkelen van functionele ontwerpen naar technische oplossingen. Deze projecten bestaan o.a. projecten zoals het implementeren van Elastic Search en het koppelen van CMS. Ook fungeer je als vraagbaak voor je collega’s op het gebied van backend softwareontwikkeling. Daarnaast denk je graag mee op het gebied van architectuur qua mogelijke oplossingen en innovatie. Momenteel zijn

Bekijk vacature »

Marco Hopster

Marco Hopster

24/03/2014 11:11:00
Quote Anchor link
Misschien kunnen jullie mij helpen.

Ik krijg in mijn script een foutmelding :

Undefined variable: naam in /u3/....... line 13


En dit doet hij dus met alle variabelen.

Ik zal een stuk van het script bijvoegen, iemand een idee waardoor dit komt?

[script]
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
64
65
<?php
header('Content-Type: text/html; charset=iso-8859-1');
if (!session_id()) { session_start(); };
$isal=$_SESSION['ingelogd'];
$oldsql=$_SESSION['sqletje'];
$admin=$_SESSION['admin'];
$onl=$_SESSION['online'];

error_reporting(E_ALL);
ini_set('display_errors', 1);

if (!$isal=="ja") { echo "<h3>Jij mag niet kom hier via die weg nie neah neah neah .... <br> Lekker Puh....<img src='images/lekkerpuh.jpg'>" ; die(); }
if ($naam !="") { $sql.=" AND naam like '%".$naam."%'";}
if ($geb_datum !="") { $sql.=" AND geb_datum like '%".$geb_datum."%'";}
if ($woonplaats !="") { $sql.=" AND woonplaats like '%".$woonplaats."%'";}
if ($profieltekst !="") { $sql.=" AND profieltekst like '%".$profieltekst."%'";}
if ($lengte !="") { $sql.=" AND jaar lengte '%".$lengte."%'";}
if ($gewicht !="") { $sql.=" AND gewicht like '%".$gewicht."%'";}
if ($land !="") { $sql.=" AND land like '%".$land."%'";}
if ($kleur_haar !="") { $sql.=" AND kleur_haar like '%".$kleur_haar."%'";}
if ($kleur_ogen !="") { $sql.=" AND kleur_ogen like '%".$kleur_ogen."%'";}

    include('ps_pagination.php');
        $conn = mysql_connect('localhost','***','***');
    if(!$conn) die("Failed to connect to database!");
        $status = mysql_select_db('***', $conn);
    if(!$status) die("Failed to select database!");
        $sql2="select * from members";
        $sql2.=" where id > 0 ";
        $sql2.=" order by id ";    
        $pager = new PS_Pagination($conn, $sql2, 4, 15);
        //$pager->setDebug(true);
        $rs = $pager->paginate();
    if(!$rs) { die(mysql_error());}
    // Dit is de zelfde functie als do { ... } while while($row = mysql_fetch_assoc($rs))
    include("tboven");
    echo "<br><center><span style=\"border: 1px solid black;\">".$pager->renderFullNav()."</span></center>";
        echo "<center>";
        echo '<table class="postmetadata" style="text-align:left"><tbody><tr class="lijst0">';
        $max_hor = 2;
        $hor=0;
        while($row = mysql_fetch_assoc($rs)) { // Per Item  een Regel in de Tabel toevoegen.
        $profieltekst=substr($row['profieltekst'],0,130)."......";
        $datum=date("d-m-Y \~ H:i:s",$row['toegevoegd']);
        $rec_nr=sprintf("[%'05s]\n",  $row['id']);
        $prefix="memberpics/";
        $openkiek="<a href=\"javascript:ajax1.run('prof_memberkiek.php?id={$row[id]} ','content');\">";
        if ($admin=="1") {
        $editknopje="<a href=\"javascript:ajax3.run('prof_wijzigwijzig.php?id={$row[id]}','content');\"><img src=\"images/b_edit.png\" height=12 border=\"0\">";
        }

        if ($onl == "0") $onlicoon='<img src="icons/offline.png">Offline';
        if ($onl == "1") $onlicoon='<img src="icons/online.png">Online';
        $leeftijd=bepaalleeftijd($row['geb_datum']);
        // Nieuwe Table voor foto / detiails
        echo '<td valign="right" style="border: 1px dotted SnowWhite;"><table width=560 class="postmetadata" cellSpacing=9 cellPadding=2 border=0 style="text-align:left;"><tbody><tr class="lijst0">';
        echo '<td width="200" valign="top" style="border-right:2px dotted SnowWhite;">';
        echo '<A class=a_image href="'.$prefix.$row['foto1'].'" target=_blank rel="lightbox['.$row['id'].']">';
        $cv=$prefix.''.$row['foto1'];
        $ca=$prefix.''.$row['foto2'];
        
        echo '<img border=0 src="'.$cv.'" height="220" width="180 ></A>';
        echo '<A class=a_image href="'.$prefix.$row['foto2'].'" target=_blank rel="lightbox['.$row['id'].']"></A>';
        echo '</td><td valign="top">';
       // Film Details
?>



Als ik daarna op de naam klik (dan moet eigenlijk een nieuw scherm openen met de gegevens van die persoon, alleen het scherm opent zich, alleen de gegevens neemt hij niet mee. Ik denk dat het aan:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$openkiek
="<a href=\"javascript:ajax1.run('prof_memberkiek.php?id={$row[id]} ','content');\">";
?>


ligt.

Heeft iemand enig idee?
De regel van de online icoon werkt ook niet.
Gewijzigd op 24/03/2014 11:14:09 door Marco Hopster
 
PHP hulp

PHP hulp

24/10/2020 02:15:30
 
Ivo P

Ivo P

24/03/2014 11:17:35
Quote Anchor link
Undefined variable: naam in /u3/....... line 13

je gebruikt op regel 13 de variabele $naam, en die bestaat niet.

Is een warning, geen error, maar je moet je wel afvragen waarom jij denkt dat $naam daar wél zou bestaan en hoe die dan aan zijn waarde was gekomen.

Nu zal php na de warning $naam beschouwen als een lege string/null/0/false
 
Marco Hopster

Marco Hopster

24/03/2014 11:31:36
Quote Anchor link
Oke duidelijk..

Maar hoe kan het dan, dat onlicoon regel 51 en 52 niet werkt?

En als ik dan op

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
echo '<table class="postmetadata2" width="100%" cellSpacing=3 cellPadding=0 style="text-align:left"><tbody><tr class="lijst0">';
            echo '<tr class="lijst1"><td><span class="numrood" >'.$rec_nr. '</span>'.$editknopje.'</td><td valign="top"><span float:left>'.$openkiek.''.$row[naam].'</a></td></tr>';
            echo '<tr class="lijst2"><td>Profieltekst:</td><td>'.$profieltekst.'</td></tr>';
            echo '<tr class="lijst1"><td>Woonplaats:</td><td>'.$row[woonplaats].'&nbsp;</td></tr>';
            echo '<tr class="lijst2"><td>Leeftijd:</td><td>'.$leeftijd.' &nbsp;jaar</td></tr>';
            echo '<tr class="lijst2"><td>Land:</td><td>'.$row[land].'&nbsp;</td></tr>';
            echo '<tr class="lijst1"><td>On/Off-Status:</td><td>'.$onlicoon.'&nbsp;</td></tr>';
            echo '</td></tr></table>';
            echo "</td></tr></table></td>";
                    $hor++;
                    if ($hor==$max_hor) { $hor=0; echo "</tr>\n".'<tr class="lijst0">'; }
?>


regel 2 klik.. (openkiek) dan krijg ik wel een nieuw scherm, alleen hij neemt de gegevens dus niet mee. Die is leeg.


- Aar -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken. De script-tags ondersteunen we hier niet.
Alvast bedankt!
Gewijzigd op 24/03/2014 11:43:10 door - Ariën -
 
- Ariën -
Beheerder

- Ariën -

24/03/2014 11:45:33
Quote Anchor link
Het kan overigens geen kwaad om de code even te fatsoeneren met wat tab's.
Ook hoef je niet voor elke regel een nieuwe echo te plaatsen.

Verder klopt dit ook niet: <span float:left>
Gewijzigd op 24/03/2014 11:46:21 door - Ariën -
 
Niek Kasius

Niek Kasius

27/03/2014 04:35:07
Quote Anchor link
waarom die(); } in regel 12?
Jij gaat toch ook niet dood als je een keer hoofdpijn hebt
 
Marco Hopster

Marco Hopster

27/03/2014 13:04:38
Quote Anchor link
Nee klopt, heb het ook weg gehaald nu :)

Maar oke, het werkt nog steeds niet. Ik heb nergens staan zoiets als $Post ofzo, dus denk dat het daardoor komt, maar waar moet ik het neer zetten? Is er iemand die mij kan helpen?
 
Ivo P

Ivo P

27/03/2014 13:06:18
Quote Anchor link
dus je zegt eigenlijk, dat die waarden uit een form komen dat gepost is?

Toevoeging op 27/03/2014 13:09:29:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if ($naam !="") {
    $sql.=" AND naam like '%".$naam."%'";
}

?>


wordt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if ($naam = filter_input(INPUT_POST, 'naam') {
   $sql.=" AND naam like '%".mysql_real_escape_string($naam, $conn)."%'";
}

?>


Waarbij het dan wel zaak is, om de connectie met de database, die je nu op regel 24 ev. maakt, verplaatst naar VOOR regel 13
Gewijzigd op 27/03/2014 13:11:29 door Ivo P
 
- SanThe -

- SanThe -

27/03/2014 13:10:05
Quote Anchor link
Waar komen die onbekende $vars dan vandaan?
 
Marco Hopster

Marco Hopster

27/03/2014 13:24:09
Quote Anchor link
Ik ben ondertussen ook door gaan zoeken na afgelopen maandag, heb die bovenste regels verwijderd, en het werkte. Ik heb die gegevens (dat had iemand mij tijdens een chat gezegd) niet nodig.

Heb die foutmeldingen nu allemaal weg.

Maar nu heb ik dus een scherm voor mij, met een profiel,met alleen de belangrijkste gegevens. Zodra ik dus op de naam klik, dan moet er een scherm openen met gedetaileerde gegevens. Het daadwerkelijk profiel dus.

De regel die zorgt dat het opent is de volgende:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
<td valign="top">'.$openkiek.''.$row['naam'].'</a></td></tr>';
?>


$openkiek moet dus geopend worden:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
$openkiek
="<a href=\"javascript:ajax1.run('prof_memberkiek.php?id={$row['id']}','content');\">";
?>


Nu opent er wel een nieuw scherm http://...../prof_memberkiek.php/?id= alleen hij zet "$id" er niet achter.

Ik zit zelf te denken, en ik denk omdat $id niet gepost wordt. Heb nu 2 dagen zitten zoeken op google of ik iets kan vinden of ik een fout in de regel heb, of waar ik $POST moet zetten.

Weet iemand waar dat moet?
 
Ivo P

Ivo P

27/03/2014 13:29:11
Quote Anchor link
na de klik op de link mis je dus een getal in de url.

Dan is de eerste stap om te kijken wat er in de bron van de pagina staat waar je op de link klikt.

daar staat ergens dat stuk javascript en ?id=

Aangezien je geen foutmelding kreeg (je hebt immers je error reporting aan gezet omdat je aan het debuggen bent (toch?))
zou $row['id'] hebben moeten bestaan.

Maar het zou ook goed kunnen dat het er aan ligt, dat je nogal lui om gaat met je quotes en duseen fout hebt gekregen op de '' die om id staan....


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php  /*  gebruik ?php en niet alleen ?  !!! */
$openkiek='<a href="javascript:ajax1.run(\'prof_memberkiek.php?id='. $row['id'] .'\',\'content\');">';
?>
 
Marco Hopster

Marco Hopster

27/03/2014 13:41:09
Quote Anchor link
Sorry, omdat ik hier de code copieer heb ik php weggelaten, die gebruik ik wel in mijn script.

Als ik in het adres balk bijvoorbeeld: ..../prof_memberkiek.php?id=1 in typ, dan krijg ik de gegevens wel.
Dus op een één of andere manier Post ie het id niet mee.
 
Ivo P

Ivo P

27/03/2014 13:44:01
Quote Anchor link
dus,
hij staat dus kennelijk niet in je link.
Dan moet je daar gaan zoeken.

Ofwel krijg je een foutmelding omdat $row['id'] niet bekend is,
ofwel is $row['id'] een lege string / false etc.

Dat is je beginpunt.

Zet op de regel voor $openkiek:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
echo 'debug row-id: ';
var_dump($row['id']);
?>


of zelfs:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
echo 'debug row-id: ';
var_dump($row);
?>


Op die manier begin je te zoeken naar de plek waar je var vermist is geraakt
 
Marco Hopster

Marco Hopster

27/03/2014 13:49:15
Quote Anchor link
debug row-id: array(53) { ['id']=> string(1) "1" ['naam']=> string(5) "Marco"...... etc.

P.S. het heeft altijd gewerkt, maar sinds php5.0 draait, niet meer.
 
Ivo P

Ivo P

27/03/2014 13:50:37
Quote Anchor link
eehh

jij bent nu geupgrade naar de inmiddels zwaar antieke PHP 5.0??

Toevoeging op 27/03/2014 13:52:59:

Maar staat die 1 nu wel of niet in de source bij de regel met ajax1.run ..... ?

Zo nee: dan moet je in php zoeken naar de missende waarde (var_dump geeft hem wel weer)
Zo ja: dan moet je in ajax1.run eens gaan zoeken.

Neemt die rechtstreeks de url over, of zit daar nog een redirect stap in php tussen?
 
Marco Hopster

Marco Hopster

27/03/2014 13:53:41
Quote Anchor link
euhm.. 5.4.6 draai ik nu

Toevoeging op 27/03/2014 14:03:44:

Mijn ajax1.run ziet er zo uit:

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
this.run=function (page,element)    {
            self = this;
            if (this.xmlhttp) {
                if (self.xmlhttp.readyState >= 1 && self.xmlhttp.readyState <= 3) { self.xmlhttp.abort();}
                this.now = new Date();
                this.xmlhttp.open("GET", page + "?t=" + this.now.getTime(), true);
                this.xmlhttp.onreadystatechange = function () {
                if(self.xmlhttp.readyState == 4){
                    document.getElementById(element).innerHTML = self.xmlhttp.responseText;
                    }
                }
                this.xmlhttp.send(null);
            }
    }


In die dump wat ie aangeeft zegt hij dus wel dat hij een 1 heeft..

Toevoeging op 27/03/2014 14:15:13:

Ik heb even een member toegevoegd, en gekeken wat hij dan doet met de var_dump:

debug row-id: array(53) { ['id']=> string(1) "1" ['naam']=> string(5) "Marco"...... etc
debug row-id: array(53) { ['id']=> string(1) "2" ['naam']=> string(4) "Kees"...... etc
 
Marco Hopster

Marco Hopster

03/04/2014 13:33:38
Quote Anchor link
Is er dan niemand die mij hier mee kan helpen?
 



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.