[PHP/SQL] Onbegrijpelijk: geen output meer vanaf id x

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Theske
  • Registratie: Februari 2003
  • Laatst online: 14-05-2017
Goedemorgen,

Ik heb onlangs een webbased projectendatabase gemaakt en dat werkte allemaal hartstikke goed.
Er zijn verschillende mogelijkheden waaronder onder andere het opvragen van alle projectgegevens en het opgeven van wijzigingen.
Dit ging tot dusver helemaal goed. Nu heeft iemand weer nieuwe projecten toegevoegd aan de database en deze staan wel in het overzicht en de gegevens zijn op te vragen (dus ze staan correct in de database en de gegevens zijn op te halen), maar zodra er naar het wijzigings formulier wordt gegaan geeft hij aan dat dit project niet bestaat. En dit is dus alleen met de nieuwste projecten. De gegevens worden opgehaald aan de hand van het meegestuurde projectnummer.
Ik heb al verschillende dingen geprobeerd:::

Ik heb in de query gewoon het projectnummer hard ingeklopt
geeft niks weer
Ik heb in de query de projectnaam gezet
geeft niks weer
Ik heb de plaatsnaam in de query gezet
geeft alle projecten weer in plaats X behalve in dit geval het testproject.
Ik heb de query met het hard ingeklopte projectnummer getest in sql, en dat werkt wel gewoon.

Nogmaals, de projectinformatie wordt wel gewoon weergeven, maar in het wijzigingsformulier niet terwijl dit wel bij de overige projecten werkt.
Kortom, ik snap er helemaal niks van. :/
Ik hoop dat jullie misschien weten wat er aan de hand is. De code hieronder is eigenlijk alle relevante code en verder heb ik nergens een limiet of iets dergelijks neergezet :|

Hier maar even de betreffende code.
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
<?


if (isset($_GET['nr']))
{
  $Projectnr = $_GET['nr'];
  $Naam = $_SERVER['AUTH_USER'];
  $Naam = substr($Naam, 16);

    if (isset($_POST['send'])) 
 { 
    // blaaat
 }
  else
  {
    $db = "C:\Inetpub\wwwroot\Projectdb\Projecttabellen.mdb";
    $conn = odbc_connect('DRIVER={Microsoft Access Driver (*.mdb)}; DBQ='.$db, '', '');

    
// dit gebruikt om te testen
$qry = "SELECT * FROM Projecten WHERE Projectnr = '30000'"; // hier vind hij dus al niks!
if( $res = odbc_exec($conn, $qry) )
{
  while( $obj = odbc_fetch_array($res) )
  { 
  $naam1 = $obj['Projectnaam'];
  }
  echo "naaaaaam iss::::".$naam1;  

}
// einde test stuk

// de 'normale' code

 $qryCheck = "SELECT * FROM Projecten WHERE Projectnr = '".$Projectnr."'";  // hier vind hij dus al niks!
 $result = odbc_exec($conn, $qryCheck);
 $result = odbc_fetch_row($result);
 if ($result < 1) { echo"Dit project bestaat niet, kies alstublieft een andere"; }
else 
 {
// blaaat
 }

}
}

Proud member of the Cosmic Cows


Acties:
  • 0 Henk 'm!

  • Arto
  • Registratie: November 2005
  • Laatst online: 11-09 14:11
probeer eens

PHP:
4
5
6
7
8
 if ($result <= 1) { echo"Dit project bestaat niet, kies alstublieft een andere"; }
else 
 {
// blaaat
 }

Acties:
  • 0 Henk 'm!

  • Theske
  • Registratie: Februari 2003
  • Laatst online: 14-05-2017
Dat maakt helemaal niks uit, nu werkt het juist helemaal niet meer ;)
Want nu geeft hij geen een project meer weer. In mijn teststuk staat die if() er niet. Het gaat dus om het ophalen van de gegevens.

Proud member of the Cosmic Cows


Acties:
  • 0 Henk 'm!

  • ChaZy
  • Registratie: September 2004
  • Laatst online: 02-09 21:34
Nee dat laatste van artorozenga gaat niet want dan zeg je dat als hij kleiner of gelijk aan 1 is en als hij 1 is lijkt me dat hij goed is.

PHP:
1
2
3
4
5
6
7
<? 
 if ($result > 0) {  zet hier neer wat je er neer moet zetten} 
else  
 { 
echo"Dit project bestaat niet, kies alstublieft een andere";  
 } 
?>

[ Voor 5% gewijzigd door ChaZy op 12-12-2005 09:08 ]


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 10:03

Creepy

Tactical Espionage Splatterer

Is je ProjectNr een string? Zo nee, haal dan die quotes eens weg en kijk eens of het dan wel werkt. Overigens zie ik geen enkele check of je odbc_exec_ wel goed is gegaan. Check dat eerst eens.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • ChaZy
  • Registratie: September 2004
  • Laatst online: 02-09 21:34
kijk anders even of er uberhaupt wel wat in $Projectnr staat,

PHP:
1
2
3
4
5
6
echo $projectnr;
 
$qryCheck = "SELECT * FROM Projecten WHERE Projectnr = '".$Projectnr."'";  // hier vind hij dus al niks! 
 $result = odbc_exec($conn, $qryCheck); 
 $result = odbc_fetch_row($result); 
 if ($result < 1) { echo"Dit project bestaat niet, kies alstublieft een andere";

Acties:
  • 0 Henk 'm!

  • Theske
  • Registratie: Februari 2003
  • Laatst online: 14-05-2017
Het is gewoon een string en hij werkt dus wel bij de andere projecten, dat is het probleem dus niet.
En met de odbc_exec check, bedoel je daarmee?? ::
PHP:
1
if( $res = odbc_exec($conn, $qry) )

Voor zover ik denk ligt het probleem niet aan de wijze waarop ik de informatie ophaal (gezien hij het dus welll bij de overige projecten doet) maar wat het dan wel kan zijn..... :|

Edit::: Er staat wel degelijk iets in projectnummer, ik heb de query ge ecood en krijg het verwachte resultaat: met projectnummer dus. en ook met het harde inkloppen van het projectnummer doet hij het niet

[ Voor 22% gewijzigd door Theske op 12-12-2005 09:14 ]

Proud member of the Cosmic Cows


Acties:
  • 0 Henk 'm!

  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

Hoe ziet de query waarmee het overzicht en de gegevens worden opgehaald eruit (waar het dus wel goed gaat)?

[ Voor 16% gewijzigd door Confusion op 12-12-2005 09:16 ]

Wie trösten wir uns, die Mörder aller Mörder?


Acties:
  • 0 Henk 'm!

  • Theske
  • Registratie: Februari 2003
  • Laatst online: 14-05-2017
PHP:
1
2
3
4
5
6
7
8
9
10
11
 $nr = $_GET['nr'];     

    $db = "C:\Inetpub\wwwroot\Intranet\Projectdb\Projecttabellen.mdb";
    $conn = odbc_connect('DRIVER={Microsoft Access Driver (*.mdb)}; DBQ='.$db, '', '');
//Controle op verkeerde waarde  
     $qryCheck = "SELECT * FROM Projecten WHERE Projectnr = '".$nr."'";
     $result = odbc_exec($conn, $qryCheck);
     $result = odbc_fetch_row($result);
     if ($result < 1) { echo"Dit project bestaat niet, kies alstublieft een andere"; }
     else 
 {

Proud member of the Cosmic Cows


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 10:03

Creepy

Tactical Espionage Splatterer

Gebruik je PHP5? Zo ja, dan zijn $projectnr en $Projectnr twee verschillende zaken.

En welke query gebruik je nu precies? Zet de query eens in een variabele en druk deze eens af.

En nogmaals: check eens op errors! Pak de documentatie van odbc_exec er eens bij en lees die eens door. Daar staat in dat als odbc_exec een false teruggeeft er iets mis is gegaan. Deze return value check je nergens. Indien deze een false teruggeeft dan kan je met odbc_error() de fout opvragen.
Zaken op het scherm afdrukken en fouten opvangen zijn de eerste paar stappen in het debug proces (alhoewel, die fouten moet je zoiezo altijd afvangen ;) ). Zie ook P&W FAQ - Leer **** debuggen!!

[ Voor 20% gewijzigd door Creepy op 12-12-2005 09:43 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

Edit: nee, wacht, dat is voorbarig als het hardcoded ook niet werkt.

Overigens, die tweede query gebruikt een andere DB?! :? Dan is het me alleen een raadsel waarom het voorheen wel gewerkt zou hebben...

PHP:
1
$db = "C:\Inetpub\wwwroot\Projectdb\Projecttabellen.mdb";

vs
PHP:
1
$db = "C:\Inetpub\wwwroot\Intranet\Projectdb\Projecttabellen.mdb";

[ Voor 162% gewijzigd door Confusion op 12-12-2005 09:54 ]

Wie trösten wir uns, die Mörder aller Mörder?


Acties:
  • 0 Henk 'm!

  • RuudBurger
  • Registratie: Oktober 2003
  • Laatst online: 10-09 16:02
mensen, hij zegt toch dat het bij de rest van de projecten wel werkt..

kijk anders eens of er geen rare tekens ofzo inzitten die de query voortijdig stoppen.. bij het project wat het niet doet..
of maak eens een backup en her/over schrijf het hele project eens met de hand..

Acties:
  • 0 Henk 'm!

  • dajappie
  • Registratie: Januari 2005
  • Laatst online: 11-09 20:39
Theske schreef op maandag 12 december 2005 @ 09:32:
PHP:
1
2
     $result = odbc_exec($conn, $qryCheck);
     $result = odbc_fetch_row($result);
Waaarom gebruik je $result twee keer? De eerste is een verwijzing naar je resultset, de tweede keer overschrijf je dit met een row uit je database. Misschien niet heel handig omdat dan je verwijzing naar je resultset weg is?

Acties:
  • 0 Henk 'm!

  • Theske
  • Registratie: Februari 2003
  • Laatst online: 14-05-2017
Confusion schreef op maandag 12 december 2005 @ 09:46:
Edit: nee, wacht, dat is voorbarig als het hardcoded ook niet werkt.

Overigens, die tweede query gebruikt een andere DB?! :? Dan is het me alleen een raadsel waarom het voorheen wel gewerkt zou hebben...

PHP:
1
$db = "C:\Inetpub\wwwroot\Projectdb\Projecttabellen.mdb";

vs
PHP:
1
$db = "C:\Inetpub\wwwroot\Intranet\Projectdb\Projecttabellen.mdb";
:o
Ikkuh dit nog nakijken, maar het was allemaal gelijk enzo. Had ik de directory van een andere $db genomen ietsjes eerder in het script, die wel gelijk was.
Owww |:(
Waarom hij het eerst wel deed::: de website stond eerst in een andere directory en ik dacht dat ik alle verwijzingen inmiddels wel had veranderd. Deze bestanden zijn momenteel nog niet verwijderd en in de database stonden de vorige projecten dus al
Ow ow ow... ik snapte er al niks van. :/
Deep Shame!

Maar bedankt iig allemaal voor de hulp! danku danku danku! bedankt!

Proud member of the Cosmic Cows


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Gebruik daarom ook niet volledige paden in dat soort gevallen. Maak gewoon een define aan met daarin je rootpad, werkt veel beter.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info

Pagina: 1