2016-03-26 2 views
1

Ich habe eine Tabelle user_bio genannt, die die folgenden Spalten:Giving eine Variable zwei Werte, wenn keine Zeile in der Datenbank vorhanden ist

id 
    age 
    studying 
    relationship_status 
    username 
    about_me 

Derzeit diese Tabelle hat eine Zeile für Benutzer conor:

id; 1 
    age: 30 
    studying: test 
    relationship_status: single 
    username: conor 
    about_me: test 

Wenn ich mich als Conor anmelden und zu bio.php/conor gehen, wird die Bio für Conor fein angezeigt. Aber wenn ich mich als Alice anmelde und zu bio.php/alice gehe, erhalte ich undefinierte variable Fehler außer dem Alter, das richtig zeigt (mit dem richtigen Wert für jeden Benutzer).

Hier ist mein Code, und wie ich die Daten am Anzeige:

<?php 
/****************************************/ 
// Getting data to display on bio page for user 
$get_bio = mysqli_query($connect, "SELECT * FROM user_bio WHERE username ='$user'"); 
$row_returned = mysqli_num_rows($get_bio); 
if ($row_returned == 1){ 
    while ($get_bio_data = mysqli_fetch_assoc($get_bio)){ 
     $about_me = $get_bio_data['about_me']; 
     $age = $get_bio_data['age']; 
     $studying = $get_bio_data['studying']; 
     $lang = $get_bio_data['language']; 
     $rel_status = $get_bio_data['relationship_status']; 
     /*****************************************/ 
     // change data held by vars 
     // if no bio for the user exists in the db (no rows in db)s 
     if ($row_returned == 0){ 
      if ($about_me == ""){ 
       $about_me = "None set.."; 
      } else { 
       $about_me = $get_bio_data['about_me']; 
      } // else closed 
     } // if closed 
    } // while closed 
} // if closed 
/*********************************************/ 
?> 
<div id="userposts_panel"> 
    <div class="bio_here"> 
     <p> <b> About me: </b> <?php echo $about_me; ?> </p> 
     <p> <b> Age: </b> <?php echo $age; ?> </p> 
     <p> <b> Studying: </b> <?php echo $studying; ?> </p> 
     <p> <b> Language(s): </b> <?php echo $lang; ?> </p> 
     <p> <b> Relationship Status: </b> <?php echo $rel_status; ?> </p> 
    </div> 
</div> 

Ich denke, weil es keine Zeile in der Datenbank ist username alice zu entsprechen, das den Fehler verursacht. In diesem Fall möchte ich die Variable meine ausgewählte Zeichenfolge neu definieren, zum Beispiel, wenn about_me für den Benutzer existiert, dann zeige es an, sonst wird $ about_me gleich none set. Aber ich bekomme immer noch undefinierte Fehler?

Antwort

0

Sie nicht nur in if ($row_returned == 1){ eingeben, wenn kein Benutzer Alice sind. Also müssen Sie vorher Variablen ($ about_me, $ age, ...) initialisieren, wenn.

diesen Code Versuchen:

<?php 
/****************************************/ 

// change data held by vars if no bio for the user exists in the db (no rows in db)s 
$about_me = "None set.."; 
$age = "None set.."; 
$studying = "None set.."; 
$lang = "None set.."; 
$rel_status = "None set.."; 

// Getting data to display on bio page for user 
$get_bio = mysqli_query($connect, "SELECT * FROM user_bio WHERE username ='$user'"); 
$row_returned = mysqli_num_rows($get_bio); 
if ($row_returned == 1){ 
    while ($get_bio_data = mysqli_fetch_assoc($get_bio)){ 
     $about_me = $get_bio_data['about_me']; 
     $age = $get_bio_data['age']; 
     $studying = $get_bio_data['studying']; 
     $lang = $get_bio_data['language']; 
     $rel_status = $get_bio_data['relationship_status']; 
     /*****************************************/ 
    } // while closed 
} // if closed 
/*********************************************/ 
?> 
<div id="userposts_panel"> 
    <div class="bio_here"> 
     <p> <b> About me: </b> <?php echo $about_me; ?> </p> 
     <p> <b> Age: </b> <?php echo $age; ?> </p> 
     <p> <b> Studying: </b> <?php echo $studying; ?> </p> 
     <p> <b> Language(s): </b> <?php echo $lang; ?> </p> 
     <p> <b> Relationship Status: </b> <?php echo $rel_status; ?> </p> 
    </div> 
</div> 
0

können Sie isset()-Methode verwenden, um zu überprüfen, ob eine Variable oder nicht, wie unten festgelegt ist:

<div id="userposts_panel"> 
        <div class="bio_here"> 
          <p> <b> About me: </b> <?php if(isset($about_me)){ echo $about_me;} else{ echo "none";} ?> </p> 
          <p> <b> Age: </b> <?php if(isset($age)){ echo $age;} else{echo "none";} ?> </p> 
          <p> <b> Studying: </b> <?php if(isset($studying)){ echo $studying;} else{ echo "none";} ?> </p> 
          <p> <b> Language(s): </b> <?php if(isset($lang)){ echo $lang;} else { echo "none";} ?> </p> 
          <p> <b> Relationship Status: </b> <?php if(isset($rel_stautus)){ echo $rel_status;} else{ echo "none";} ?> </p> 
        </div> 
0

Try this:

<?php 
/****************************************/ 
// Getting data to display on bio page for user 
$get_bio = mysqli_query($connect, "SELECT * FROM user_bio WHERE username ='$user'"); 
$row_returned = mysqli_num_rows($get_bio); 
if ($row_returned == 1){ 
    while ($get_bio_data = mysqli_fetch_assoc($get_bio)){ 
     $about_me = $get_bio_data['about_me']; 
     $age = $get_bio_data['age']; 
     $studying = $get_bio_data['studying']; 
     $lang = $get_bio_data['language']; 
     $rel_status = $get_bio_data['relationship_status']; 
    } // while closed 
} // if closed 
else { 
    $about_me = "Not set..."; 
    $age = "Not set..."; 
    $studying = "Not set..."; 
    $lang = "Not set..."; 
    $rel_status = "Not set..."; 
} // else closed 
/*********************************************/ 
?> 
<div id="userposts_panel"> 
    <div class="bio_here"> 
     <p> <b> About me: </b> <?php echo $about_me; ?> </p> 
     <p> <b> Age: </b> <?php echo $age; ?> </p> 
     <p> <b> Studying: </b> <?php echo $studying; ?> </p> 
     <p> <b> Language(s): </b> <?php echo $lang; ?> </p> 
     <p> <b> Relationship Status: </b> <?php echo $rel_status; ?> </p> 
    </div> 
</div> 
0
<?php 
function checkValue($getValue) { 
    return isset($getValue) ? $getValue : "N/A"; 
} 
?> 

<div id="userposts_panel"> 
    <div class="bio_here"> 
     <p> <b> About me: </b> <?php echo checkValue(&$about_me); ?> </p> 
     <p> <b> Age: </b> <?php echo checkValue(&$age); ?> </p> 
     <p> <b> Studying: </b> <?php echo checkValue(&$studying); ?> </p> 
     <p> <b> Language(s): </b> <?php echo checkValue(&$lang); ?> </p> 
     <p> <b> Relationship Status: </b> <?php echo checkValue(&$rel_status); ?> </p> 
    </div> 
</div> 

Sie & als ignorant und verwenden, um eine Funktion zu überprüfen, ob der Wert eingestellt ist, und wenn nicht gesetzt angezeigt werden einige erforderliche Text verwenden könnte.

Verwandte Themen