2016-09-07 2 views
1

Ich suche eine Tabelle in meinem DB, um ein Häkchen zurückgeben, wenn ein Name eine $_GET['name'] Variable entspricht, die ich in der URL übergeben habe.Kann nicht einfach If/Else-Anweisung zu arbeiten

Ich möchte ein Häkchen angezeigt, wenn der Name existiert und ein Kreuz, wenn es nicht existiert.

Der Zweck besteht darin, einen Rota/Zeitplan der Verfügbarkeit zu füllen.

Der Code, den ich bisher habe;

<?php foreach($rota_sun as $rota_sunday): ?> 
     <?php if(strpos($rota_sunday['person_name'], $_GET['name']) !== false) { ?> 
       <span style="color:green; font-size:22px;"><i class="fa fa-check" aria-hidden="true"></i></span> 
       <?php } else { ?> 
       <span style="color:red; font-size:22px;"><i class="fa fa-times" aria-hidden="true"></i></span> 
     <?php } ?> 
<?php endforeach; ?> 

Mein Code für die Abfrage ist;

$query = "SELECT 
       rota_sunday.id AS rota_id, 
       rota_sunday.person_id, 
       rota_sunday.person_name 
      FROM rota_sunday WHERE rota_sunday.person_name = '$_GET['$name']' 
     "; 
    try 
    { 
     $stmt = $conn->prepare($query); 
     $stmt->execute(); 
    } 
    catch(PDOException $ex) 
    { 
     die("Failed to run query: " . $ex->getMessage()); 
    } 
    $rota_sun = $stmt->fetchAll(PDO::FETCH_ASSOC); 

Meine Tabelle enthält drei Reihen;

  1. ID
  2. person_id
  3. PERSON_NAME

Das Array I verwendet habe, ist;

Array 
(
    [0] => Array 
     (
      [rota_id] => 16 
      [person_id] => 0 
      [person_name] => Gina 
     ) 

) 

Sie werden sehen, dass Gina existiert - also, wenn ?name=Gina in meiner URL ist, sollte ein Häkchen angezeigt, aber ?name=Fred oder ?name=John etc ist in meiner URL sollte ein Kreuz angezeigt.

Problem: Das Häkchen wird angezeigt, wenn der Name existiert, aber das Kreuz wird nicht angezeigt, wenn der Name nicht existiert.

+0

Was ist das aktuelle Problem? Geht es immer ein wenn oder sonst? –

+0

haben Sie die Werte von $ rota_sunday ['person_name'] und $ _GET ['name'] überprüft?Sie sollten nach Leerzeichen und auch nach Fällen suchen. –

+0

Das Häkchen wird angezeigt, wenn der Name existiert, aber das Kreuz wird nicht angezeigt, wenn der Name nicht existiert. – Ben

Antwort

1

Ein Arbeitsbeispiel: -

<link rel="stylesheet" href="font-awesome-4.6.3/css/font-awesome.min.css"> 

<?php 
    error_reporting(E_ALL); //check all type of errors 
    ini_set('display_errors',1); // display those if any happen 
    $_GET['name'] = 'fiksun'; 
    $rota_sun = Array 
(
    '0' => Array 
     (
      'rota_id' => 16, 
      'person_id' => 0, 
      'person_name' => 'Gina' 
     ), 
    '1' => Array 
     (
      'rota_id' => 16, 
      'person_id' => 0, 
      'person_name' => 'fiksun' 
     ) 

) 
?> 
<?php foreach($rota_sun as $rota_sunday): ?> 
    <?php if($rota_sunday['person_name']== $_GET['name']) { ?> 
     <span style="color:green; font-size:22px;"><i class="fa fa-check" aria-hidden="true"></i><?php echo $rota_sunday['person_name'];?></span> 
     <?php } else { ?> 
     <span style="color:red; font-size:22px;"><i class="fa fa-times" aria-hidden="true"></i><?php echo $rota_sunday['person_name'];?></span> 
    <?php } ?> 
<?php endforeach; ?> 

Ausgang: - http://prntscr.com/cf4ecd

Hinweis: - download font-awesome Bibliothek von hier: - http://fontawesome.io/get-started/

Setzen Sie den kompletten Ordner in Ihrem aktuelles Arbeitsverzeichnis

Fügen Sie die CSS-Datei korr hinzu ectly.

das funktioniert Verzeichnisstruktur: - http://prntscr.com/cf4fuk

Ändern Sie Ihre Suche: -

$query = "SELECT rota_sunday.id AS rota_id, rota_sunday.person_id AS person_id, rota_sunday.person_name AS person_name FROM rota_sunday WHERE rota_sunday.person_name Like '%".$_GET['$name']."%'"; 
+0

Danke für die Antwort ... Ich denke, ich habe die Ursache des Problems gefunden, indem ich dein Beispiel benutzte - immer noch kann es jedoch nicht beheben - mein Array scheint nur ein Ergebnis aus der DB zurückzugeben. 'Array ([rota_id] => 17 [person_id] => 0 [person_name] => Gina)' obwohl es zwei Datensätze gibt. – Ben

+0

Es wird 1 Ergebnis wegen Ihrer Abfrage erhalten. –

+0

@Ben überprüfen Sie die Abfrage, die ich in meiner Antwort gegeben habe. Verwenden Sie es und überprüfen Sie –

0

Diese Abfrage wählt nur eine Person aus der Datenbank aus.

$query = "SELECT 
      rota_sunday.id AS rota_id, 
      rota_sunday.person_id, 
      rota_sunday.person_name 
     FROM rota_sunday WHERE rota_sunday.person_name = " . $_GET['name'] . "LIMIT 1"; 
try 
{ 
    $stmt = $conn->prepare($query); 
    $stmt->execute(); 
} 
catch(PDOException $ex) 
{ 
    die("Failed to run query: " . $ex->getMessage()); 
} 
$rota_sun = $stmt->fetch(PDO::FETCH_ASSOC); 

Wenn diese Person existiert dann rota_sun $ result enthalten, wenn nicht dann diese falsche zurückkehren wird, und Sie werden das rote Kreuz bekommen.

<?php if($rota_sun) { ?> 
      <span style="color:green; font-size:22px;"><i class="fa fa-check" aria-hidden="true"></i></span> 
    <?php } else { ?> 
      <span style="color:red; font-size:22px;"><i class="fa fa-times" aria-hidden="true"></i></span> 
    <?php } ?> 
+0

Das ist, was ich tue, aber mit einer if/else-Anweisung, um eine Sache zu zeigen, wenn sie übereinstimmt und etwas ese, wenn es nicht ist. Aber ich kann es nicht zur Arbeit bringen. – Ben

+0

Das Problem ist nicht mit meiner Abfrage - das funktioniert gut und speichert Werte als ein Array. Ich kann sie auf der Müllhalde sehen. Das Problem zeigt ein Kreuz an, wenn der Name in meiner DB-Tabelle nicht gefunden werden kann. – Ben

+0

Müssen Sie den Namen aller Personen oder nur eines davon anzeigen? – LkPark