selectie mysql als input voor meer info.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Koos jansen

koos jansen

29/01/2012 08:29:30
Quote Anchor link
Hoi,
Ik zou graag de keuze uit een mysql query willen gebruiken als input voor meer informatie maar weet niet hoe.

oftewel,
als de eerste query bv als resultaat heeft
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
persoon 1
persoon 2
persoon 3

dan wil ik dus graag dat als ik op persoon 2 klik,
ik alleen informatie van persoon 2 krijg, bv
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
persoon 2 adres
persoon 2 telefoonnummer
persoon 2 postcode

en dus niet
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
persoon 1 adres
persoon 1 telefoonnummer
persoon 1 postcode
persoon 2 adres
persoon 2 telefoonnummer
persoon 2 postcode
persoon 3 adres
persoon 3 telefoonnummer
persoon 3 postcode


De eerste pagina heb ik al, de resultaten van de eerste query vormen ook al links naar een tweede php pagina, maar wat ik niet weet is wat ik op die tweede pagina moet zetten zodat ik alleen de resultaten van die ene persoon krijg.
het moet neerkomen op
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$query="SELECT * FROM test WHERE id='2'";

maar hoe krijg ik dat id dynamisch en het product van de persoon selectie?

ik hoop dat iemand mij kan helpen.
 
PHP hulp

PHP hulp

19/01/2022 13:57:57
 
Wouter J

Wouter J

29/01/2012 08:56:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$id
= 2; // deze verander je
$query = "SELECT veld1, veld2, veld3 FROM test WHERE id = ".(int) $id."";
 
Koos jansen

koos jansen

29/01/2012 09:27:54
Quote Anchor link
dat snap ik niet helemaal.
dat $id heb je op dezelfde pagina gedefinieerd en is daarmee dus statisch.
in regel 3 $id snap ik, maar wat is de functie van .(int) ?


voor de duidelijkheid paste ik hieronder hoe mijn hoofdpagina er ongeveer uit ziet. Als ik op 1 van die linken klik, dient er dus verdere informatie te openen over slechts die persoon waar ik op klik.

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
<?
$username
="root";
$password="1";
$database="test";

mysql_connect('127.0.0.1',$username,$password);
@
mysql_select_db($database) or die( "Unable to select database");
$query="SELECT * FROM personen";
$result=mysql_query($query);

$num=mysql_numrows($result);

mysql_close();



?>


<?
$i
=0;
while ($i < $num) {

$persoon1=mysql_result($result,$i,"persoon1");
$persoon2=mysql_result($result,$i,"persoon2");
$persoon3=mysql_result($result,$i,"persoon3");

?>


<table border="0" cellspacing="2" cellpadding="2">
<tr>
<td>persooninfo 1 is:</td>
</tr>
<td><a href="http://127.0.0.1/persooninfo.php"><? echo $persoon1; ?></a></td>

<td>persooninfo 2 is:</td>
</tr>
<td><a href="http://127.0.0.1/persooninfo.php"><? echo $persoon2; ?></a></td>

<td>persooninfo 3 is:</td>
</tr>
<td><a href="http://127.0.0.1/persooninfo.php"><? echo $persoon3; ?></a></td>
<?
$i
++;
}



echo "</table>";

[
/code]



Ik heb het idee dat je mijn vraag niet begreep
en mij iets anders uitlegde dan ik moest weten.
Zou je als ik mij daarin vergis mij iets duidelijker
willen uitleggen hou jouw antwoord de oplossing is,
want zoals het er nu staat begrijp ik het niet.
(mijn code hierboven is trouwens gewoon van een
tutorial ergens gepikt en is zeker geen indicatie voor mijn niveau;)

Toevoeging op 29/01/2012 10:23:13:

ok, ik snap nu dat dat int nodig is om dat id als variabele te gebruiken,
maar hoe krijg ik dat id van de ene pagina naar de andere,
zoiets ls dit lijkt me op de persooninfo.php pagina,
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$id=$_POST['id'];

maar dat werkt dus niet. althans, het id wordt niet gepost
(overigens wordt het id met auto incrment gemaakt in de database.)

waarschijnlijk moet ik dus nu alleen nog weten hoe ik dat id mee
post als ik op een link klik.
Gewijzigd op 29/01/2012 10:25:13 door koos jansen
 
Obelix Idefix

Obelix Idefix

29/01/2012 10:40:10
Quote Anchor link
Probeer eens:

a href="http://127.0.0.1/persooninfo.php?id=".$id

Waarom * gebruiken, selecteer het veld wat je nodig hebt.
Waarom @ gebruiken; fouten niet onderdrukken, maar oplossen/voorkomen.
Waar is de foutafhandeling van je query's? Die is geen foutafhandeling.
Gebruik een shorttags voor php
Volgens mij kan het gedeelte tussen regel 21 en 44 efficienter (in een while-lus). Wat als je straks nog tien personen extra wilt? Ga je dan voor al die tien het apart aanmaken?
 
Koos jansen

koos jansen

29/01/2012 11:04:13
Quote Anchor link
a href="http://127.0.0.1/persooninfo.php?id=".$id
a href="http://127.0.0.1/persooninfo.php?id="$id
werkt niet, dan opent hij

http://127.0.0.1/persooninfo.php?id=.$id
http://127.0.0.1/persooninfo.php?id=$id
en heeft hij geen variabele aangemaakt

$id=$_POST['.id'];
$id=$_POST['id'];
geeft dan
Notice: Undefined index
Notice: Undefined variable


(overige slordigheden maken voor mij in deze fase trouwens niet veel uit. Ik moet een demo maken die net genoeg werkt om een idee te presenteren aan echte vakmannen.
en die @ heb ik gewoon overgenomen uit een tutorial, ik had geen idee wat het deed ;)
Gewijzigd op 29/01/2012 11:07:12 door koos jansen
 
Frank WD

Frank WD

29/01/2012 11:13:16
Quote Anchor link
@Koos,

Je hebt de persoon 1,2 en 3 waar je die ophaalt staan niet tussen <form> tags.
Als je die in <form></form> zult zetten en de value van jou persoon 1,2 en 3 zet je dan de id neer. Zo post je altijd de id mee. Deze kan je dan in je select query ophalen als
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php id='".mysql_real_escape_string($_GET[ 'id' ])."'?>


- Let wel even in bovenstaande script op *. Je kunt beter de velden voluit type die je nodig hebt. Zo voorkom je overbodige geheugen gebruik tijdens selecteren van velden die je niet nodig bent.
- Pas een goede foutafhandeling toe. Want jij gaat ook niet dood als je iets fout doet.
 
Obelix Idefix

Obelix Idefix

29/01/2012 12:32:48
Quote Anchor link
Koos jansen op 29/01/2012 11:04:13:
(overige slordigheden maken voor mij in deze fase trouwens niet veel uit.


Die slordigheden kunnen er de oorzaak van zijn dat iets niet werkt.....

Zie al waar het in mijn voorbeeld mis gaat. $id hoort bij php en die is op dat moment nog niet 'geopend'. Uit mijn hoofd:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
http://127.0.0.1/persooninfo.php?id=<?php echo $id; ?>"><? echo $persoon2; ?>


@Frank: je gaat een variabele kopiëren? mysql_real_escape_string gebruik je in query's.
Gewijzigd op 29/01/2012 12:36:40 door Obelix Idefix
 
Koos jansen

koos jansen

29/01/2012 12:57:45
Quote Anchor link
ok, dus in pagina 2 kan ik dan
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT fields FROM table WHERE id = ".mysql_real_escape_string($_POST['id']);

doen,
maar ik snap niet waar ik die forms in pagina 1 moet plaatsen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<td>persooninfo 1 is:</td>
</tr>
<td><a href="http://127.0.0.1/persooninfo.php"><? echo $persoon1; ?></a></td>



Toevoeging op 29/01/2012 13:01:34:

woohoo.. bedankt, dat was hem. Ik had zelf al
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
http://127.0.0.1/persooninfo.php?id=<? $id; ?>"

geprobeerd maar nog niet met echo zoals jij en dat was de oplossing. super!
iedereen heel erg bedankt. :D



Toevoeging op 29/01/2012 13:08:59:

Voor de goede orde en anderen die evt dezelfde vraag hebben,
de oplossing was dus:
pagina1
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<td><a href="http://127.0.0.1/persooninfo.php?id=<?php echo $id; ?>"><? echo $persoon1; ?></a>
</td>


pagina2
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$id = $_GET["id"];
$query = "SELECT * FROM personen WHERE id = ".(int) $id."";


nogmaals heel erg bedankt! :D
Gewijzigd op 29/01/2012 13:09:43 door koos jansen
 
Obelix Idefix

Obelix Idefix

29/01/2012 13:18:36
Quote Anchor link
bijna goed: gebruik geen*, waarom zou je $id = $_GET["id"]; aanmaken en waarom "" aan het einde? Onderstaande zou volgens mij ook moeten werken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$query = "SELECT hier, de, veldnamen
    FROM personen
    WHERE id = ".(int) $_GET['id'];
 
Koos jansen

koos jansen

29/01/2012 13:27:50
Quote Anchor link
mooi, dat werkt ook, dankjewel!

De reden dat ik * doe is omdat
ik helemaal niets van php begrijp
(overigens begrijp ik wel wat je voorstelt, maar eenmaal ingevoerd is het weer 1 extra plaats waar het mis kan gaan)
en ik de details die opgehaald worden nog niet definitief heb besloten (ze kunnen anders gaan heten, aangevuld worden of verwijderd.)
en het op dit moment al zon 50 details zijn

De reden dat ik personen en persoonsinfo heb genomen was puur ten behoeve van de vraag op dit forum, dat leek mij het minst abstract.
Gewijzigd op 29/01/2012 13:29:51 door koos jansen
 
Obelix Idefix

Obelix Idefix

29/01/2012 13:52:17
Quote Anchor link
Het gebruik van * kan juist ook tot problemen leiden. ;-)
Om te testen zou je dan * kunnen gebruiken, maar in de definitieve versie zou ik het niet doen/accepteren van anderen. Heb je alle 50 details nodig?
 
Frank WD

Frank WD

29/01/2012 14:02:23
Quote Anchor link
@Obelix en Idefix,

Ja dat weet ik dat die daar hoor.
Ik zette er ook bij dat je in de query hem dan zo ophaalt, dan natuurlijk wel met een WHERE er voor.

Maar goed lees dat het probleem is al opgelost.
 
Koos jansen

koos jansen

29/01/2012 17:22:15
Quote Anchor link
@obelix
het gaat om een soort kennisboom die ik begonnen ben te maken in excel, het is een eerste keer dat ik zoiets doe en het troubleshooten ervan bleek in die vorm nogal tijdsintensief. Ik heb echt een doorloopbaar script nodig dus moest het daarom wel in mysql/php doen. Op dit moment is de database zelfs zo'n 200 entries breed, maar welke van die entries waar in de tree komen is nog niet definitief besloten, dat kan ik pas echt weten zodra de tree af is en ik hem meermaals heb doorlopen. Tot die tijd ben ik de enige user, zodra dit klaar is presenteer ik de opzet aan ervaren webdesigners, want het uiteindelijke doel is een pagina die nu.nl hoeveelheden logins te verwerken krijgt en die ook optimaal hackbestendig moet zijn. Niets voor iemand die vragen in het beginnerstopic stelt dus ;)
 



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.