Avatar billede mrbs Nybegynder
08. marts 2006 - 12:21 Der er 19 kommentarer og
1 løsning

Tjek om der er data i en tabel

Hej!

Kan det gøres sådan, når man skal se om der er data i en tabel?

$query1 = mysql_query("SELECT * FROM {$table_prefix}content WHERE menuid='$id'");

$row1 = mysql_fetch_array($query1)

if ($row1 == NULL){ //hvis den er tom
//så sker der det her
};
Avatar billede drizz Nybegynder
08. marts 2006 - 13:04 #1
Jeg tror det er sådan her, men ikke sikkert:

$query1 = mysql_query("SELECT * FROM {$table_prefix}content WHERE menuid='$id'");

$row1 = mysql_fetch_array($query1)

if ($row1 == NULL){ //hvis den er tom
//så sker der det her
} else {
print "Der er ikke fundet nogle.";
}

O.B.S - Det er ikke sikkert :-)
Avatar billede mrbs Nybegynder
08. marts 2006 - 13:29 #2
hvad er forskellen på den og den jeg har lavet?

BTW. så skal der ; efter $row1 = mysql_fetch_array($query1)
Avatar billede drizz Nybegynder
08. marts 2006 - 15:22 #3
Hov, misforstod spørgsmålet. Undskylder.

- Ved ikke om man kan :P
Avatar billede arne_v Ekspert
08. marts 2006 - 15:45 #4
hvorfor ikke

SELECT COUNT(*) AS n FROM tabelnavn

og se om antal er 0 ?

(det vil ihvertfald vaere noget som er nem at laese ...)
Avatar billede _darkstar_ Nybegynder
09. marts 2006 - 21:22 #5
...eller den endnu hurtigere forespørgsel

SELECT * FROM <tabel> LIMIT 1
Avatar billede mrbs Nybegynder
09. marts 2006 - 21:35 #6
Mit umiddelbare problem er at jeg skal have den til at tjekke om der er indhold i tabellen med det aktuelle id og derefter reagere på resultatet:

Altså, hvis der IKKE er nogen felter i den kolonne der hedder menuid med værdien §id, skal den gøre et, hvis der ER felter med den $id, skal den gøre noget andet...
Avatar billede mrbs Nybegynder
09. marts 2006 - 21:50 #7
Bliver det: ??

$query1 = mysql_query("SELECT COUNT(*) AS {$id} FROM {$table_prefix}content");

$row1 = mysql_fetch_array($query1)

if ($row1 == NULL){

//så sker dette
Avatar billede mrbs Nybegynder
09. marts 2006 - 21:50 #8
Jeg mente:

if ($row1 == 0){
Avatar billede _darkstar_ Nybegynder
09. marts 2006 - 21:51 #9
SELECT * FROM <tabel> WHERE menuid=<id>

I PHP-sprog:

$sql = "SELECT * FROM <tabel> WHERE menuid=$id";
$rh = mysql_query($sql);
if(mysql_num_rows($rh) > 0) {
    <gør noget>
} else {
    <gør noget andet>
}
Avatar billede mrbs Nybegynder
09. marts 2006 - 21:53 #10
OK... Takker!

Ville mit forslag virke?
Avatar billede _darkstar_ Nybegynder
09. marts 2006 - 21:56 #11
Nej.

Jeg ved ikke om du ville slippe afsted med at putte klammer omkring variable (altså {$id} i stedet for $id eller ${id}), men det er sikkert at hvis du prøver at checke om $row1 er lig 0, så bør det gå galt.
Avatar billede mrbs Nybegynder
09. marts 2006 - 22:00 #12
Ja, det er klart! Læg et svar :)
Avatar billede _darkstar_ Nybegynder
09. marts 2006 - 22:15 #13
Ok.
Avatar billede mrbs Nybegynder
10. marts 2006 - 10:42 #14
Den siger at det ikke kan lade sig gøre:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource

Brugte følgende:

$sql = "SELECT * FROM {$table_prefix}content WHERE menuid=$id";
$rh = mysql_query($sql);
if(mysql_num_rows($rh) > 0) { //hvis den er tom
Avatar billede _darkstar_ Nybegynder
10. marts 2006 - 11:10 #15
Prøv lige at skrive strengen $sql ud, før du kører forespørgselen.
Avatar billede mrbs Nybegynder
10. marts 2006 - 13:28 #16
Sådan?

$sql = "SELECT * FROM {$table_prefix}content WHERE menuid=$id";
$rh = mysql_query($sql);

echo "$rh";
       
if(mysql_num_rows($rh) == 0) { //hvis den er lig 0

//så sker der det her
echo "Lalala, den er tom";

} else {
// hvis den er forskellig fra 0
?>
<span class="RedBoxHighlight">Menupunktet indeholder emner!</span><br />
Slet disse før du sletter menupunktet, eller deaktiver punktet midlertidigt.<br />

<a href="menus.php">Tilbage til oversigten.</a>

<?php
};



Den skriver ikke noget ved >> echo "$rh";
Avatar billede mrbs Nybegynder
10. marts 2006 - 13:29 #17
Fejlmeddelelsen er:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /free1go/a/s/www.asign.1go.dk/admin/menus_delete.php on line 37

hvor linie 37 er:
if(mysql_num_rows($rh) == 0) { //hvis den er tom
Avatar billede mrbs Nybegynder
10. marts 2006 - 13:33 #18
Virker heller ikke:

$check = mysql_num_rows("SELECT * FROM {$table_prefix}content WHERE menuid=$id");
       
if($check == 0) { //hvis den er tom
Avatar billede _darkstar_ Nybegynder
10. marts 2006 - 13:37 #19
Skift

echo "$rh";

ud med

echo "$sql";

og se hvad for forespørgsel, der faktisk bliver sendt til databasen.
Avatar billede mrbs Nybegynder
10. marts 2006 - 13:47 #20
Ups.. Har fundet ud af at det er fordi $id var tom :)

Du får dine point - takker :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB

Danske Spil A/S

Senior backend-udvikler

Cognizant Technology Solutions Denmark ApS

Azure Architect

ENVO IT A/S

Hardware Specialist

AURA A/S

IT-administrator