[PHP/SQL] var vergelijken met een tabel uit mysql *

Pagina: 1
Acties:
  • 228 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
als de var $host al bestaat in de tabel dan moet hij deze overslaan. Ik heb de hele my-sql al doorgeploetert maar kan het niet echt vinden.


PHP:
1
2
for($host = 145; $host <=150; $host++) 
    {

dus wat nu komt moet hij overslaan als $host al voorkomt in de tabel.

kan iemand my helpen of zeggen welke functie ik hiervoor moet gebruiken?

[ Voor 3% gewijzigd door Verwijderd op 29-07-2003 14:02 ]


Acties:
  • 0 Henk 'm!

  • Neman
  • Registratie: September 2000
  • Laatst online: 08:58

Neman

Een uit de lucht gegrepen naam

Het is zeer onduidelijk wat je bedoelt, gaarne meer informatie. Je wilt voor elke $host een SELECT doen en iets overslaan als die waarde in de tabel staat? Dan kijk je toch gewoon naar de grootte van de resultset van je query? Gebruik bijvoorbeeld mysql_num_rows().

[ Voor 65% gewijzigd door Neman op 29-07-2003 14:06 ]


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Nu online
Bedoel je nu dat je geen dubbele waarden in een bepaalde column wilt?

Kijk dan eens naar UNIQUE constraints. Daarmee kan je die beperking afdwingen op DB level. Als er dan een waarde geinsert wordt die al eens voorkomt, dan wordt er een error gegeven en wordt het record niet ingevoegd.

Zorg in het vervolg ook dat je titel de taal waarmee je werkt bevat, en zorg -zoals reeds gezegd- voor meer informatie in je startpost. De P&W Quickstart (die je vind in de P&W FAQ) is een goeie leidraad om een goeie startpost te maken.

[ Voor 30% gewijzigd door whoami op 29-07-2003 14:07 ]

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

*knip*
verkeerde window :o

[ Voor 90% gewijzigd door justmental op 29-07-2003 14:13 ]

Who is John Galt?


Acties:
  • 0 Henk 'm!

Verwijderd

In PHP bestaat er de functie: mysql_list_tables

Hier kan je eenvoudig mee kijken denk ik of de var $host reeds bestaat als table name, veel succes!

edit: sorry, ik had het verkeerd begrepen, je kan het best werken met mysql_num_rows..

[ Voor 20% gewijzigd door Verwijderd op 29-07-2003 14:10 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik zal het wat duidelijker vertellen.

eerst ff een gedeelte van mn script hieronder
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
for($host = 145; $host <=150; $host++)
    {
        
        if(@$fd=fopen('http://pc0'.$host.':2301/DMIAGENT/CFSYSINF.TPL',"r"))
        {
            
            while (!feof($fd) )
                {
                    $line = fgets($fd, 1000);
    
                    if(strpos($line, 'Number[1]' )>0)
                    {
                        $pcser = explode(" = ", $line); 
                        $pcser = substr($pcser[1], 1, -4);


dus als $host al in mn database bestaat dan moet hij deze overslaan. Hierdoor wil ik tijdwinst halen bij het opnieuw uitvoeren van de script.
De bedoeling is dat ik een paar keer per dag deze script uitvoer en telkens minder hosts hoef te scannen.

hmm.. het is misschien nog niet helemaal duidelijk maar dit is ff het beste wat ik ervan kan maken.

ik heb mysql_num_rows al geprobeerd maar daarmee is het me niet gelukt.. ik krijg daarmee het aantal value's wat in mn database zit..

Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
gewoon een selectje doen op $host in je mysql-table, en dan checken of je iets van een resultaat krijgt, lijkt me...

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


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Nu online
Grijze Vos schreef op 29 July 2003 @ 23:20:
gewoon een selectje doen op $host in je mysql-table, en dan checken of je iets van een resultaat krijgt, lijkt me...
UNIQUE constraints (zoals ik eerder al zei) lijken mij performanter en beter. Laat de database doen waarvoor ze gemaakt is, en dat is oa het zorgen voor de integriteit van de data. Dit kan je afdwingen door een unique constraint op dat veld te leggen.
Als er een record wordt geinserted, of een record wordt upgedated, en de constraint wordt geviolated, dan geeft het DBMS een error die jij in je applicatie kunt opvangen en wordt de insert of de update niet doorgevoerd.

Doe je het door een select te doen op die tabel, dan verlies je performance en ben je ook niet zeker over de integriteit van je data. Stel nl. dat iemand een aanpassing wil doen op die tabel buiten je PHP applicatie om, dan heb je die check niet.

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
poe... erhmm.. misschien erg goeie uitleg maar ik snap er niet veel van.. ben ook maar een php guru in training (3e week).
Ik heb het script ff helemaal veranderd. lekker simpel gehouden zeg maar.

in de tabel staan 3 waardens 2,5,8. dus als overeen komen met $host dan wil ik iets uitvoeren en zo niet dan weer wat anders. Ik zit het nu ook een paar keer goed door te lezen en vermoed dat ik ff veel te moeilijk bezig ben.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php 

$db = mysql_connect("localhost", "root", "") 
    or die ("unable to connect"); 
mysql_select_db("toppie", $db) 
    or die ("unable to find database"); 
$query = mysql_query("SELECT host FROM serial")or die( mysql_error() ); 

$pe = 1;

do 
    {
    list($pc) = mysql_fetch_array($query);
    echo "$pc<br />";
    $pe++;
        ($pc == $pe) ? print "They match<br />" : print "They don't match<br />"; 
    }
    while ($pe <= 10);
?> 

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Nu online
Verwijderd schreef op 30 July 2003 @ 08:49:
poe... erhmm.. misschien erg goeie uitleg maar ik snap er niet veel van.. ben ook maar een php guru in training (3e week).
Ik heb het script ff helemaal veranderd. lekker simpel gehouden zeg maar.
Doe dan misschien ff de moeite om de documentatie erbij te pakken en ff te lezen over unique indexes in MySQL.
Je kan altijd uit jezelf ook bijleren.
in de tabel staan 3 waardens 2,5,8. dus als overeen komen met $host dan wil ik iets uitvoeren en zo niet dan weer wat anders. Ik zit het nu ook een paar keer goed door te lezen en vermoed dat ik ff veel te moeilijk bezig ben.
Idd, je bent veel te moeilijk bezig. (Terwijl je net zei dat je het simpel gehouden hebt).
Nu verlies je zeeeeer veel tijd. Je gaat nl. alles uit de tabel lezen, en dan in PHP de volledige recordsset overlopen. Dit gaat echt supertraag.
Gebruik gewoon de DB waarvoor hij gemaakt is. Gebruik een unique index.
Wil je echt koppig zijn, en toch zelf controleren of er al een record bestaat met die waarde, zorg dan dat je enkel uitleest op die waarde. (filteren met WHERE dus).

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • mr.inno
  • Registratie: April 2003
  • Laatst online: 14-09 18:19
select distingd.. of zo iets was het..
dan kijkd mysql of er dubbelle wardes in zitten .. maar geeft elke waade maar een keer weer.
als je nu gewoon de eerst alle host van die dag ophaald..
in een array frot.
en dan gewoon
in_array(); gebruikt. om te check of ie er in staat. staat ie er in doe je niks. en anders voer je je script uit.

het is misschien handig als je eerst eens je post bekijkt voordat je op submit klikt. Er staan nogal wat typo's in, en echt helder is het ook niet. Dat leest een beetje ongemakkelijk

[ Voor 24% gewijzigd door whoami op 30-07-2003 11:20 ]

inno


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Nu online
mr.inno schreef op 30 juli 2003 @ 11:04:
select distingd.. of zo iets was het..
dan kijkd mysql of er dubbelle wardes in zitten .. maar geeft elke waade maar een keer weer.
Dat is de oplossing niet voor zijn probleem. De topicstarter wil dat er geen dubbele waarden kunnen ge-inserted worden in z'n tabel.
als je nu gewoon de eerst alle host van die dag ophaald..
in een array frot.
en dan gewoon
in_array(); gebruikt. om te check of ie er in staat. staat ie er in doe je niks. en anders voer je je script uit.
Waarom blijft iedereen moeilijk doen, en gaat iedereen zo'n dingen controleren dmv code? De database is er niet alleen om gegevens op te slaan, maar kan ook perfect de integriteit van de gegevens bewaren. Daar heeft een DBMS bepaalde technieken voor. Dit zorgt ervoor dat het geheel veel sneller gaat, veel veiliger is en je minder kans op fouten gaat hebben.

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • mr.inno
  • Registratie: April 2003
  • Laatst online: 14-09 18:19
whoami schreef op 30 July 2003 @ 11:22:
[...]

Dat is de oplossing niet voor zijn probleem. De topicstarter wil dat er geen dubbele waarden kunnen ge-inserted worden in z'n tabel.
dan meot ie dus gewoon zijn kolom op unike zetten.

ja idd als je dat kunt kijken met je db dan zou het dat heel handig zijn..
maar weet jij de funcgtie om dat met mysql te checken..

inno


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Nu online
mr.inno schreef op 30 July 2003 @ 11:29:
[...]

dan meot ie dus gewoon zijn kolom op unike zetten.
Dat loop ik al de hele tijd te blaten. ;)
ja idd als je dat kunt kijken met je db dan zou het dat heel handig zijn..
maar weet jij de funcgtie om dat met mysql te checken..
Dat is niet met 'functies', maar met indexes.
SQL:
code:
1
CREATE UNIQUE INDEX [indexname] ON [tabel(veld)]

https://fgheysels.github.io/

Pagina: 1