portseven: Select %Like% with PDO

tag,

weiß eventuell jemand wie man hier den Operatoren "Like" anwendet?

Ich habe keinen Schimmer wie ich es mit PDO anwende.

$names = $_POST['names'];

$select = $pdo->prepare("
SELECT * FROM daten WHERE name = :names;");

$select->BindParam(':names', $names);

if(!$select->execute()) {
	print_r($select->errorInfo());
}

akzeptierte Antworten

  1. Tach!

    weiß eventuell jemand wie man hier den Operatoren "Like" anwendet?

    Genauso, nur LIKE statt =. Die Jokerzeichen % gehören zum Wert und müssen also in $names eingefügt werden.

    dedlfix.

    1. Top hat geklappt.

      Kannst du mir eventuell noch eine Frage beantworten bezüglich Javascript Events?

      Gibt es eine Function das bei jedem eingegeben Buchstaben er einen SQL Befehl ausführt?

      Wenn ich z.b "Alex" schreibe, dann sollen ja alle Namen angezeigt werden wo der Name Alex drin ist. Aber kann man das auch so machen wie bei Instagram, dass sobald ein Buchstabe eingeben wird, direkt schon Einträge angezeigt werden,? Bzw das man nicht immer auf Submit drücken muss

      	<div>
      		<form action="" name="myform" id="form">
      			<input type="text" name="names" placeholder="Names">
      			<input type="submit" value="Suche" name="suche">
      		</form>
      	</div>
      	
      	<div id="output"></div>
      
      	
      	<script>
      		$('#form').submit(function(event) {
      			event.preventDefault();
      			$.ajax({
      				type: 'POST',
      				url: 'load.php',
      				data: $(this).serialize(),
      				success: function(data) {
      					$('#output').html(data);
      				}
      			});
      		});
      	</script>
      

      Load.php:

      <?php
      include 'config/connect.php';
      if(isset($_POST["names"])) {
      
      	$names = $_POST["names"];
      	$select = $pdo->prepare("
      	SELECT * FROM `daten` WHERE `name` LIKE :names;");
      	
      	$param = 
      	[':names' => "%{$names}%"];
      	
      	if(!$select->execute($param)) {
      		print_r($select->errorInfo());
      	}
      	
      	while($row = $select->fetch()):
      	
      	echo 'Name: ' . $row['name'] . '<br>';
      	
      	endwhile;
      }
      
      ?>
      
      1. Tach!

        Kannst du mir eventuell noch eine Frage beantworten bezüglich Javascript Events?

        Gibt es eine Function das bei jedem eingegeben Buchstaben er einen SQL Befehl ausführt?

        Kann nicht. SQL läuft auf dem Server, Javascript auf dem Client. Da muss erstmal ein Request zum Server, der dort die Datenbankabfrage macht. Es gibt aber garantiert irgendwo Lösungen oder Beschreibungen, wie die beiden Teile aussehen müssen.

        Wenn du lediglich das Javascript-Event suchst, das auf jeden Tastendruck gefeuert wird, das heißt input.

        dedlfix.

        1. Aso ja ok gut.

          Wieso zeigt er mir aber diese Fehlermeldung an, wenn ich input ansatt Submit eintrage?

          Uncaught TypeError: $(...).input is not a function

          	<script>
          		$('#form').input(function(event) {
          			event.preventDefault();
          			$.ajax({
          				type: 'POST',
          				url: 'load.php',
          				data: $(this).serialize(),
          				success: function(data) {
          					$('#output').html(data);
          				}
          			});
          		});
          	</script>
          
          1. Hallo portseven,

            für das input Event gibt es keinen Shortcut in jQuery. Du musst mit .on arbeiten. Genaueres steht unter https://api.jquery.com.

            Rolf

            --
            sumpsi - posui - clusi
        2. Hat geklappt mit keyup().

          Trotzdem vielen dank euch beiden für die Hilfe.

          1. Tach!

            Hat geklappt mit keyup().

            Es geht auch mit input, aber jQuery hat nicht für jedes Event eine Shortcut-Funktion. Für die anderen Events, wie input, muss man on() nehmen. Für die mit Shortcut kann man beides nehmen.

            .change(function...) ist das gleiche wie .on('change', function...). .input() gibt es nicht, also geht dafür nur .on('input', function...).

            dedlfix.

            1. Ok das mit on.Input ist viel besser da es nur beim Tastendrück passiert. Super, danke dir!