PHP/MYSQL variabele geeft ander resultaat dan zijn inhoud als string

Status
Niet open voor verdere reacties.

Gilbert3

Nieuwe gebruiker
Lid geworden
6 mrt 2012
Berichten
4
Beste allemaal,

Ik tast volledig in het duister en had graag wat verlichting!

Ik ben aan het programmeren in PHP / MYSQL. Ik heb een formulier gemaakt waarmee ik bestellingen kan wijzigen. Het formulier heeft twee "submit"-knoppen: een om enkel en alleen de database te updaten en een om de database te updaten en ook een aantal gegevens weer te geven op het scherm. Het updaten werkt perfect. Alleen heb ik een probleem met de weergave van sommige informatie.

In het formulier heb ik een lijstje, gemaakt op basis van een database, met klantnamen. Dat formulierveld heet 'klant'. In mijn script haal ik die waarde op met

PHP:
$klant = $_POST['klant'];
.

In mijn script geeft de regel

PHP:
echo $klant;

het gewenste resultaat, namelijk de naam van de klant.

Nu wil ik op basis van die naam het adres halen uit een van de tabellen van de database. Ik gebruik hiervoor

PHP:
$query_adresregel_1 = "SELECT adresregel_1 FROM klanten WHERE naam = '$klant' ";
$query_adresregel_1_uitgevoerd = mysql_query($query_adresregel_1);
$rij_adresregel_1 = mysql_fetch_array($query_adresregel_1_uitgevoerd);
$adresregel_1 = $rij_adresregel_1['adresregel_1'];

Ik weet dat dit korter kan, maar ben graag nogal expliciet om te weten wat ik precies aan het doen ben. Deze regels geven echter geen resultaat, terwijl diezelfde regels perfect werken in het script waarmee ik de oorspronkelijke bestelling plaats. Meer nog, als ik in plaats van de variabele $klant gewoonweg de naam van de klant type als string, dan werkt het wel perfect. Dus, met de variabele $klant heeft $adresregel_1 geen waarde, maar met een string zoals Klant1 bijvoorbeeld, heeft $adresregel_1 wel de juiste waarde.

Ik vermoed dat ik iets doms over het hoofd zie, maar slaag er niet in om te ontdekken wat.

Alvast bedankt voor alle hulp!
 
ik denk niet dat dit de volledige code is maar er moeten wel inloggegevens voor de sql database staan, en misschien kun je je manier van query iets veranderen:

ik hoop dat je wat aan deze mysql code hebt, dit is hoe ik dit probleem daarmee heb opgelost:

PHP:
//naam en wachtwoord van de MySQL server, ook de desbetreffende database vanwaar de informatie moet komen
$username='';
$passwordserver='';
$database='';

//jouw klant variabele
$klant = $_POST['klant'];

//het verbinden met MySQL server (op localhost!!) en het selecteren van de database
//gegevens worden ingevoerd bij de variabelen voor overzicht
mysql_connect('localhost',$usernameserver,$passwordserver);
@mysql_select_db($database) or exit( "Unable to select database");

//
//Hier het stuk om de regel die je wilt te selecteren
//

mysql_close();

ik kan je dus alleen niet helpen met het stukje om die regel te selecteren maar verder kan ik je niet helpen
 
Wellicht ....
PHP:
$query_adresregel_1 = "SELECT adresregel_1 FROM klanten WHERE naam = '" . $klant ."' ";
??

Anders even een echo op $query_adresregel_1. Misschien kan je daar uit halen of de query er wel goed komt.

F.
 
Beste helpers,

Eerst even antwoorden op de vragen. Ik heb inderdaad aanmeldgegevens die correct zijn want alles werkt in andere scripts. Ook het formaat van mijn query zou moeten kloppen, want ook dat werkt in andere scripts. Ik heb echter het voorstel van FHG1969 overgenomen om het toch te proberen, maar het resultaat blijft hetzelfde.

Misschien even wat meer context. In mijn formulier heb ik een veld "klant". Dat is een dropdownlist die aangemaakt is op basis van een van de tabellen van mijn database, waar alle klantgegevens zitten. Aangezien het formulier bestemd is om bestellingen te wijzigen, is de correcte klant al geselecteerd in de dropdownlist.

Ik heb momenteel dit als script voor de verwerking van het formulier:

PHP:
<?php

include ('aanmeldgegevens.php');

$klant = $_POST['klant'];

mysql_connect($host, $gebruikersnaam, $wachtwoord);
@mysql_select_db($database) or die ("Kan database niet openen.");

//adresregel 1
$query_adresregel_1 = "SELECT adresregel_1 FROM klanten WHERE naam = '$klant' ";
$query_adresregel_1_uitgevoerd = mysql_query($query_adresregel_1);
$rij_adresregel_1 = mysql_fetch_array($query_adresregel_1_uitgevoerd);
$adresregel_1 = $rij_adresregel_1['adresregel_1'];

echo "Klant: ".$klant;
echo '<br>';
echo "Adresregel 1: ".$adresregel_1;
echo '<br>';
echo "Query adresregel 1: ".$query_adresregel_1;

mysql_close();

?>

Als de selecteerde klant in het formulier "Klant1" is, dan krijg ik het volgende in de browser:

Klant: Klant1
Adresregel 1:
Query adresregel 1: SELECT adresregel_1 FROM klanten WHERE naam = ' Klant1 '

Klant1 komt zeker voor in mijn tabel "klanten", want anders kon ik de naam niet selecteren in het formulier.
Als ik trouwens de variabele $klant vervang door de string Klant1 in mijn query, is het resultaat wel juist en krijg ik het juiste adres!

Zou het kunnen dat er nog andere, onzichtbare informatie "kleeft" aan de variabele $klant, waardoor er zogezegd geen overeenstemming wordt gevonden in de database?

Alvast bedankt voor jullie hulp!

[Aangepast omdat ik mysql_close() was vergeten, maar met hetzelfde resultaat.]
 
Laatst bewerkt:
Ik weet niet of je de Query adresregel 1 zo geplakt hebt, maar het lijkt of er spaties voor en na Klant1 staan tussen de '

F.
 
Je hebt volkomen gelijk, FHG1969. Ik heb de fout dankzij jouw inbreng kunnen terugvinden. In mijn script waarmee ik in het formulier een dropdownlist genereer met alle klanten in, had ik spaties staan in de string, eentje vóór en eentje na de naam van de klant. Uiteraard wordt dan geen overeenkomst gevonden in de tabel. Het zit soms in een klein hoekje. Hartelijk dank aan zowel FHG1969 en WHDeveloper voor de hulp!
 
mooi dat je probleem is opgelost:)

misschien nog even op het knopje drukken dat de vraag is opgelost,
dan hoeven andere mensen niet meer naar je probleem te kijken om vervolgens te lezen dat het al is opgelost;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan