récupération et affichages de données d'une requête

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : récupération et affichages de données d'une requête

Re: récupération et affichages de données d'une requête

par yann18 » 01 août 2013, 19:49

il faut plutôt protéger la chaîne de caractères avec la fonction mysql_real_escape_string et non strval:
public function afficheTable($Nom) {
                $requete = 'SELECT * FROM Generale WHERE Com = "'.mysql_real_escape_string($Nom).'" ' );
                $q = $this->db->query($requete);
               return $q;
        }
Dans ta vue pour tester si tu retournes bien les données il suffit de faire var_dump sur le tableau de données provenant de la bd:
<?php
 var_dump($this->afficheTable);

        foreach($this->afficheTable as $key => $value) {
                echo '<tr>';
                echo '<td>' . $value['id'] . '</td>';
                echo '<td>' . $value['Com']    . '</td>';
        }
?>

Re: récupération et affichages de données d'une requête

par Cécile » 01 août 2013, 16:16

Oui , je ne vous ai pas affiché le controller.
MAis le problème venait de la définition de L'id dans ma requête. J'ai changé par $requete = 'SELECT * FROM Commerciaux WHERE id = ' . intval($id);
et ça marche tout de suite mieux.

Mais du coup, lorsque j'ai une chaine de caractère, je ne sais pas comment faire.

Par exemple dans ce code :
	public function afficheTable($Nom) {
		$array = array();
		$requete = 'SELECT * FROM Generale WHERE Com = ' . strval($Nom);
		$q = $this->db->query($requete);
		while($r = $q->fetch_assoc()) {
			$array[] = $r;
		}
		return $array;
	}
<?php
	foreach($this->afficheTable as $key => $value) {
		echo '<tr>';
		echo '<td>' . $value['id'] . '</td>';
		echo '<td>' . $value['Com']    . '</td>';
	} 
?>
Le foreach ne fonctionne pas...

Le controller est le suivant :
	
public function view() {
		$Nom = $_POST['Nom'];
		$this->view->afficheTable = $this->model->afficheTable($Nom);
		$this->view->render('consult/view');
	}

Re: récupération et affichages de données d'une requête

par yann18 » 01 août 2013, 15:21

bonjour,
<?php $result = $this->user; ?>
tu définis une méthode user() qui prend pour paramètre $id, sauf qu'au moment de l'appeler tu lui transmets aucun paramètre.
A quoi correspond finalement le paramètre $id?

Re: récupération et affichages de données d'une requête

par Mazarini » 01 août 2013, 15:11

Le code d'affichage est dans une méthode ? (à cause du $this->user). J'ai du mal à comprendre ton utilisation des objets (manque du code ?).

récupération et affichages de données d'une requête

par Cécile » 01 août 2013, 14:52

Bonjour,

Cela fait maintenant plusieurs jours que je suis bloquée sur une même erreur qui revient assez fréquemment.

Je n'arrive en effet pas à afficher les champs de ma ligne à partir de ma requête php.

En gros, voilà ma fonction et ma vue :

public function user($id) {

$requete = 'SELECT * FROM Commerciaux WHERE "id"="' . "$id" .'"';

$q = $this->db->query($requete);

$r = $q->fetch_assoc();

return $r;

}

<h1><?php echo _t( 'Utilisateur: Edit' ); ?></h1>

<?php $result = $this->user; ?>

<form method="post" action="<?php echo BASE_URL;?>user/editSave/<?php echo $result['id']; ?>">

<label><?php echo _t( 'Nom' ); ?></label><input type="text" name="Nom" value="<?php echo $result['Nom']; ?>" /><br />

<label><?php echo _t( 'Password' ); ?></label><input type="text" name="Password" /><br />

<label><?php echo _t( 'Division' ); ?></label>

<select name="Division">

<option value = "Grands comptes" <?php if($result['Division'] == 'Grands comptes') echo 'selected'; ?>><?php echo _t( 'Grands comptes' ); ?></option>

<option value = "Comptes décentralisés" <?php if($vresult['Division'] == 'Comptes décentralisés') echo 'selected'; ?>><?php echo _t( 'Comptes décentralisés' ); ?></option>

<option value = "Indirect" <?php if($result['Division'] == 'Indirect') echo 'selected'; ?>><?php echo _t( 'Indirect' ); ?></option>

</select><br />

<label>&nbsp;</label><input class="btn" type="submit" />

</form>

Et lorsque je retourne un tableau (grâce à une fonction while qui récupère toutes les valeurs potentielles) dans ma fonction user et que j'utilise donc une boucle foreach, une erreur s'affiche. Si je comprends bien, ma fonction ne retourne pas un tableau parce qu'une seule ligne est résultat de ma requête.

Merci d'avance pour votre aide.