Gå til innhold

finner ikke feil i if setning


Anbefalte innlegg

jeg har holdt på lenge nå med å finne ut hva som er feil med denne kodesnutten her. er mulig jeg overser noe veldig enkelt, men det virker hvertfall ikke.

if (!empty($navn) && !empty($kommentar)) {
  echo "<p>$navn skrev $date<br>
$kommentar</p>";
}
else{
echo"Det er ikke lagt til noen kommentarer til denne posten.
";
}

Det virker som om det ikke blir oppdaget at stringene er tomme og at else setningen ikke slår inn.

for når stringene inneholder noe får jeg skrevet det ut, mens når de er tomme blir ikke det siste echo'et skrevet.

noen som ser hvor feilen ligger?

Lenke til kommentar
Videoannonse
Annonse

Hvis defaulten er NULL bør du sjekke om de er empty eller == NULL. Eller for den saks skyld en annen default.

 

Noe a la:

if (!empty($navn) && $navn !== NULL && !empty($kommentar) && $kommentar !== NULL) {
 echo "<p>$navn skrev $date<br>
$kommentar</p>";
}
else{
echo"Det er ikke lagt til noen kommentarer til denne posten.
";
}

 

Sikkert lite elegant kodesnutt, men det burde virke...

Lenke til kommentar
jeg har holdt på lenge nå med å finne ut hva som er feil med denne kodesnutten her. er mulig jeg overser noe veldig enkelt, men det virker hvertfall ikke.

if (!empty($navn) && !empty($kommentar)) {
  echo "<p>$navn skrev $date<br>
$kommentar</p>";
}
else{
echo"Det er ikke lagt til noen kommentarer til denne posten.
";
}

Det virker som om det ikke blir oppdaget at stringene er tomme og at else setningen ikke slår inn.

for når stringene inneholder noe får jeg skrevet det ut, mens når de er tomme blir ikke det siste echo'et skrevet.

noen som ser hvor feilen ligger?

5819584[/snapback]

 

Jeg antar du henter kommentar fra en spørring... eks slik

$sql ="select * from kommentar where artikkelID = en_eller_annen_id"
// gjør masse greier, sjekker at spørringen faktisk blir utført

 

da kan du vise (eller ikke vise) de slik:

if(mysql_num_rows() >0){
while($resultat = mysql_fetch_array($sql)){
// gjør noe med kommentarene
}else{
echo "Det var ingen kommentarer til denne artikkelen";
}

 

Noe slikt.

Lenke til kommentar

Prøvde begge forslagene, men fikk det ikke til å virke.

Legger opp hele koden, kanskje feilen ligger et annet sted.

 

$query="SELECT * FROM kommentar WHERE art_id = '$art_id' order by komm_id asc";
$result= mysql_query($query, $connection) or die 
("Could not execute query : $query." . mysql_error());
while ($row=mysql_fetch_array($result))
{
//Annenhver listing skal ha grå bakgrunn i tabell
$count++;
if ($count & 1) {
  $tbl_class = 'tavle_tabell-sub';
}else {
      $tbl_class = 'tavle_tabell-sub-grey';
}

$navn=$row["navn"];
$date=$row["date"];
$kommentar=$row["kommentar"];
$mail=$row["mail"];

if(mysql_num_rows() >0){
while($result = mysql_fetch_array($query)){
  echo "<p>$navn skrev $date<br>
$kommentar</p>";
}
}else{
echo "Det var ingen kommentarer til denne artikkelen";
}}

 

jeg får nå opp feilmeldingen: Wrong parameter count for mysql_num_rows() in min/hjemmeside/ on line 32

Lenke til kommentar
Prøvde begge forslagene, men fikk det ikke til å virke.

Legger opp hele koden, kanskje feilen ligger et annet sted.

 

$query="SELECT * FROM kommentar WHERE art_id = '$art_id' order by komm_id asc";
$result= mysql_query($query, $connection) or die 
("Could not execute query : $query." . mysql_error());
while ($row=mysql_fetch_array($result))
{
//Annenhver listing skal ha grå bakgrunn i tabell
$count++;
if ($count & 1) {
  $tbl_class = 'tavle_tabell-sub';
}else {
      $tbl_class = 'tavle_tabell-sub-grey';
}

$navn=$row["navn"];
$date=$row["date"];
$kommentar=$row["kommentar"];
$mail=$row["mail"];

if(mysql_num_rows() >0){
while($result = mysql_fetch_array($query)){
  echo "<p>$navn skrev $date<br>
$kommentar</p>";
}
}else{
echo "Det var ingen kommentarer til denne artikkelen";
}}

 

jeg får nå opp feilmeldingen: Wrong parameter count for mysql_num_rows() in min/hjemmeside/ on line 32

5819775[/snapback]

$query="SELECT * FROM kommentar WHERE art_id = '$art_id' order by komm_id asc";
$result= mysql_query($query, $connection) or die
("Could not execute query : $query." . mysql_error());




$antall = mysql_num_rows($query);
if($antall >0){
while($result = mysql_fetch_array($query)){
$navn=$resultat["navn"];
$date=$resulat["date"];
$kommentar= $resultat["kommentar"];
$mail=$resultat["mail"];
 if($antall%2==0){
 	$tbl_class = 'tavle_tabell-sub';
 }else{
 	$tbl_class = 'tavle_tabell-sub-grey';
 }
 	echo "<p>$navn skrev $date<br /> $kommentar</p>";
}
}else{
echo "Det var ingen kommentarer til denne artikkelen";
}

 

prøv dette da.

Endret av CruellaDeVille
Lenke til kommentar

Men er det ikke uansett litt småfeil der? F. eks hvorfor kjøre to mysql_fetch_array for akkurat samme tingen? Og er det ikke bedre å bruke mysql_affected_rows(); enn mysql_num_rows(); for den funksjonen?

 

edit: Sjekk posten over så finner du det jeg ville fram til... Litt for treig igjen.

Endret av anners
Lenke til kommentar

tja, kan ikke si at det hjalp. får en annen feilmelding nå:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in min/hjemmeside/ on line 32

<?php  require"../dbconnect.php";
$art_id=47;
$query="SELECT * FROM kommentar WHERE art_id = '$art_id' order by komm_id asc";
$result= mysql_query($query, $connection) or die 
("Could not execute query : $query." . mysql_error());
while ($row=mysql_fetch_array($result))
{
//Annenhver listing skal ha grå bakgrunn i tabell
$count++;
if ($count & 1) {
 $tbl_class = 'tavle_tabell-sub';
}else {
     $tbl_class = 'tavle_tabell-sub-grey';
}

$navn=$row["navn"];
$date=$row["date"];
$kommentar=$row["kommentar"];
$mail=$row["mail"];

if(mysql_num_rows($query) >0){
while($result = mysql_fetch_array($query)){
 echo "<p>$navn skrev $date<br>
$kommentar</p>";
}
}else{
echo "Det var ingen kommentarer til denne artikkelen";
}}
?>

Lenke til kommentar

Blir litt mye rot her, mange som svarer og endrer innleggene sine ;) Men det som blir riktig burde vel da være:

 

$query="SELECT * FROM kommentar WHERE art_id = '$art_id' order by komm_id asc";
$result= mysql_query($query, $connection) or die
("Could not execute query : $query." . mysql_error());


$antall = mysql_num_rows($result);
if($antall >0){
while($result = mysql_fetch_array($query)){
$navn=$resultat["navn"];
$date=$resulat["date"];
$kommentar= $resultat["kommentar"];
$mail=$resultat["mail"];
if($antall%2==0){
 $tbl_class = 'tavle_tabell-sub';
}else{
 $tbl_class = 'tavle_tabell-sub-grey';
}
 echo "<p>$navn skrev $date<br /> $kommentar</p>";
}
}else{
echo "Det var ingen kommentarer til denne artikkelen";
}

Lenke til kommentar
Men er det ikke uansett litt småfeil der? F. eks hvorfor kjøre to mysql_fetch_array for akkurat samme tingen? Og er det ikke bedre å bruke mysql_affected_rows(); enn mysql_num_rows(); for den funksjonen?

 

edit: Sjekk posten over så finner du det jeg ville fram til... Litt for treig igjen.

5819936[/snapback]

 

Slik jeg har oppfattet det er mysql_affected_rows til update og insert, mens for å finne antall valgte rader i en select bruker en mysql_num_rows().

Ikke helt usannsynlig at jeg er på jorde, kanskje til og med på feil jorde.

Lenke til kommentar
Hvis defaulten er NULL bør du sjekke om de er empty eller == NULL. Eller for den saks skyld en annen default.

 

Noe a la:

if (!empty($navn) && $navn !== NULL && !empty($kommentar) && $kommentar !== NULL) {
 echo "<p>$navn skrev $date<br>
$kommentar</p>";
}
else{
echo"Det er ikke lagt til noen kommentarer til denne posten.
";
}

 

Sikkert lite elegant kodesnutt, men det burde virke...

5819696[/snapback]

 

En kommentar vil aldri vær NULL, siden en kommentar-entry ikke vil bli lagret med mindre det faktisk er en kommentar til en artikkel...

Lenke til kommentar
Blir litt mye rot her, mange som svarer og endrer innleggene sine ;) Men det som blir riktig burde vel da være:

 

$query="SELECT * FROM kommentar WHERE art_id = '$art_id' order by komm_id asc";
$result= mysql_query($query, $connection) or die
("Could not execute query : $query." . mysql_error());


$antall = mysql_num_rows($result);
if($antall >0){
while($result = mysql_fetch_array($query)){
$navn=$resultat["navn"];
$date=$resulat["date"];
$kommentar= $resultat["kommentar"];
$mail=$resultat["mail"];
if($antall%2==0){
 $tbl_class = 'tavle_tabell-sub';
}else{
 $tbl_class = 'tavle_tabell-sub-grey';
}
 echo "<p>$navn skrev $date<br /> $kommentar</p>";
}
}else{
echo "Det var ingen kommentarer til denne artikkelen";
}

5819978[/snapback]

 

Sorry! Men det er så lett å miste oversikt over hva en har skrevet i denne &/(%&/%¤RV lille inndatafeltet.

Lenke til kommentar

med følgende kode skjer dette.

hvis det ikke finnes noen kommentarer med riktig art_id skjer alt som det skal; "Det er ingen kommentarer til denne artikkelen" blir skrevet ut.

men dersom det finnes noen kommentarer med riktig art_id skjer dette:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in min/hjemmeside/ on line 25

 

<?php  require"../dbconnect.php";
$art_id=47;
$query="SELECT * FROM kommentar WHERE art_id = '$art_id' order by komm_id asc";
$result= mysql_query($query, $connection) or die
("Could not execute query : $query." . mysql_error());

$q="SELECT COUNT(komm_id) AS AntallPoster  from kommentar WHERE art_id = '$art_id'";
$result= mysql_query($q, $connection) or die
("Could not execute query : $q." . mysql_error());

$antall = mysql_result($result,0,"AntallPoster");
/*$antall = mysql_num_rows($query);*/
if($antall >0){
while($result = mysql_fetch_array($query)){
$navn=$resultat["navn"];
$date=$resulat["date"];
$kommentar= $resultat["kommentar"];
$mail=$resultat["mail"];

 echo "<p>$navn skrev $date<br /> $kommentar</p>";
}
}else{
echo "Det er ingen kommentarer til denne artikkelen";
}
?>

linje 25 er: while($result = mysql_fetch_array($query)){

Endret av Smidt
Lenke til kommentar
Hvis defaulten er NULL bør du sjekke om de er empty eller == NULL. Eller for den saks skyld en annen default.

 

Noe a la:

if (!empty($navn) && $navn !== NULL && !empty($kommentar) && $kommentar !== NULL) {
 echo "<p>$navn skrev $date<br>
$kommentar</p>";
}
else{
echo"Det er ikke lagt til noen kommentarer til denne posten.
";
}

 

Sikkert lite elegant kodesnutt, men det burde virke...

5819696[/snapback]

 

En kommentar vil aldri vær NULL, siden en kommentar-entry ikke vil bli lagret med mindre det faktisk er en kommentar til en artikkel...

5820077[/snapback]

Poenget hans var jo uansett bare å sjekke at ikke kommentar-raden var tom. Tenkte ikke særlig mye på hva slags system som lå rundt. Mulig systemet tillater å faktisk lagre kommentarer selv om selve tekstfeltet er tomt?

Lenke til kommentar
linje 25 er:  while($result = mysql_fetch_array($query)){

5820102[/snapback]

 

Problemet er er at du bruker $query og $result om hverandre.

 

$query == det du spørrer etter

$result == linken til det du har spurt etter..

 

dvs at du bare skal bruke $query en gang her mysql_query( $query );

 

resten skal du bruke $result .. mysql_fetch_assoc( $result) mysql_num_rows( $result ).. osv.

Endret av trondes
Lenke til kommentar

okei. jeg har rettet det opp, men nå får jeg ikke skrevet ut noe.

selv om det er noe med riktig art_id som skulle blitt vist.

 

edit:

jeg får opp feilmelding:Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

<?php  require"../dbconnect.php";
$art_id=47;
$query="SELECT * FROM kommentar WHERE art_id = '$art_id' order by komm_id asc";
$result= mysql_query($query, $connection) or die
("Could not execute query : $query." . mysql_error());

$q="SELECT COUNT(komm_id) AS AntallPoster  from kommentar WHERE art_id = '$art_id'";
$res= mysql_query($q, $connection) or die
("Could not execute query : $q." . mysql_error());

$antall = mysql_result($res,0,"AntallPoster");
/*$antall = mysql_num_rows($query);*/
if($antall >0){
while($result = mysql_fetch_array($result)){
$navn=$resultat["navn"];
$date=$resulat["date"];
$kommentar= $resultat["kommentar"];
$mail=$resultat["mail"];

echo "<p>$navn skrev $date<br /> $kommentar</p>";
}
}else{
echo "Det er ingen kommentarer til denne artikkelen";
}
?>

Endret av Smidt
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...