Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/10/2011, 03h28   #1
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
Par défaut Retour d'un tableau php

Bonjours

J'essaye de faire en sorte de retourné un tableau pour faire propre.

Voici mon

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
 
<?php
class News extends odbc
{
	function get() {
		$conn = new odbc();
		$conn->connect('xxxx');
		$sql = 'SELECT *
				FROM news';
		$conn->executer($sql);
		while (($rows = $conn->tableauAssoc()) != false) { ?>
				$this->row = array($rows);	
		<?php }
 
	}
}
 
?>
Comment faire pour recuperer tous le contenu de la table dans le genre.
Code :
1
2
3
4
5
 
foreach (news->rows as n)
{
$n[title]
}
Desolé il ne me reste plus de batterie j'epsere sue vous comprendrai.


A la place de faire un while tous moche avec du html/php

Cordialement
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 10h34   #2
Rédacteur/Modérateur
 
Avatar de Thes32
 
Homme
Développeur Web
Inscription : décembre 2006
Messages : 2 335
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2006
Messages : 2 335
Points : 3 774
Points : 3 774
Pourquoi ceci ?

Code :
1
2
3
while (($rows = $conn->tableauAssoc()) != false) { ?>
				$this->row = array($rows);	
		<?php }
__________________
Développeur | Zend Certified Engineer

Étapes Pour mieux se servir du forum:
1. Commencez par lire les cours et tutoriels ;
2. Faites une recherche;
3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

Nix>_Rien n'est plus pratique que la théorie
Thes32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 15h57   #3
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 661
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 661
Points : 5 388
Points : 5 388
Et surtout pourquoi fermer les balises php avant le $this->row = array($rows); ?

Au passage, faire $this->row = array($rows); implique que tu recrées le tableau à chaque tour de boucle, donc que tu ne vas conserver que le dernier résultat de ta requête...
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 19h04   #4
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
Comment fait t'on s'il vous avec un exemple de news par exemple ?
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 19h26   #5
Membre Expert
 
Inscription : septembre 2010
Messages : 1 242
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 242
Points : 1 564
Points : 1 564
Avec mysql et mysqli tu dois créer ton tableau de récupération avec un while. Si tu utilises pdo tu peux utiliser directement fetchall. ça va dans le sens de ta question ?
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2011, 22h23   #6
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
Merci.
En faite doit faire un while
Code :
1
2
3
4
5
6
 
while .. {
?>
bon bjours bonjours
<?
}
Moi ce que j'aielmerai c'est faire un forach deans ma vue

Code :
1
2
3
4
views/news.php
foreach ($tjost>rows = $rows){
echo $titls.
}
Cest deja mieu se se seare le model de la vue,

Mais je n'y arrive pas

Voici le code actuel :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
class News extends odbc
{
	function get() 
	{
		$conn = new odbc();
		$conn->connect('xxx');
		$sql = 'SELECT *
			  FROM news';
		$conn->executer($sql);
		$this->rows = $conn->tableauAssoc();	
	}
}
Et l'appel dans la vue :
Code :
1
2
3
4
5
6
7
8
 
 
$news = new News;
$news->get();
$news = array($news->rows);
 
foreach ($news as $n) { ?
<?php echo $n['date']?>]
Sauf que la 3 ieme new aparait et pas toutes
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2011, 23h19   #7
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 461
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 461
Points : 2 551
Points : 2 551
Envoyer un message via Skype™ à rawsrc
Bonsoir,

plusieurs remarques :
Code :
class News extends odbc
Tu fais de l'héritage fonctionnel : tu dérives la classe odbc afin de récupérer uniquement ses fonctions dans la classe enfant. C'est une erreur conceptuelle sévère. Une news n'est pas une connexion odbc. Ta classe News doit avoir une dépendance avec ta classe odbc (composition/agrégation/association) mais en aucun cas elle ne doit être sa dérivée.

Pour tes problèmes de récupération des données, tu dois nous indiquer quelle approche tu utilises : PDO/PDOStatement ou les fonction mysql_*
Pour PDOStatement tu as à ta disposition :
Code :
$pdoStatement->fetchall()
et pour les fonctions mysql_* : mysql_fetch_row()/mysql_fetch_array()/mysql_fetch_assoc() :
Code :
1
2
3
while($row = mysql_fetch_assoc($res)) {
   $all[] = $row;
}
Enfin pour ton affichage, il t'est possible d'utiliser les méthodes alternatives :
un exemple pour t'inspirer :
Code :
1
2
3
4
5
6
7
<html>
   <?php foreach($news as $new): ?>
   <span><?php echo $new['date']; ?></span>
   <span> --- </span>
   <span><?php echo $new['titre']; ?></span>
   <?php endforeach; ?>
</html>
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/10/2011, 02h03   #8
Membre Expert
 
Inscription : septembre 2010
Messages : 1 242
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 242
Points : 1 564
Points : 1 564
Citation:
Envoyé par rawsrc Voir le message
Enfin pour ton affichage, il t'est possible d'utiliser les méthodes alternatives :
un exemple pour t'inspirer :
Code :
1
2
3
4
5
6
7
<html>
   <?php foreach($news as new): ?>
   <span><?php echo $new['date']; ?></span>
   <span> --- </span>
   <span><?php echo $new['titre']; ?></span>
   <?php endforeach; ?>
</html>
Oui bon c'est une alternative, mais cela n'apporte rien de plus que les accolades, sinon de ne pas faire comme "tout le monde". C'est un détail insignifiant quand à la conception du code, et je me dis qu'avec les débutants il faut avoir le sens des priorités
Ce que je veux dire c'est que ce que tu dis auparavant dans ton message est bien plus important et instructif pour le sujet de thebarbarius et que c'est là dessus qu'il faut qu'il se concentre
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 02
Vieux 08/10/2011, 10h37   #9
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 461
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 461
Points : 2 551
Points : 2 551
Envoyer un message via Skype™ à rawsrc
Citation:
Envoyé par ABCIWEB Voir le message
Oui bon c'est une alternative, mais cela n'apporte rien de plus que les accolades, sinon de ne pas faire comme "tout le monde".
Enfin, rien de plus... Tu y gagne en lisibilité parce que quand t'as des éléments imbriqués en pagaille, tu repères plus facilement les blocs avec un endforeach, endwhile ou toute autre syntaxe alternative qu'avec une simple accolade fermante. Pour peu que tu repasse après quelqu'un (qui code comme un cochon), crois-moi c'est appréciable.

Et puis l'argument qui tue "ne pas faire comme tout le monde", bon là je ne dis rien parce que je vais faire monter ma tension pour rien
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 21
Vieux 08/10/2011, 15h03   #10
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
Merci.

Peut t'on rester sur mon code ?

Car il fonctionne mais me retounr qu'un resutat.

Je souhaietai les affiher tous.
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/10/2011, 21h40   #11
Membre Expert
 
Inscription : septembre 2010
Messages : 1 242
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 242
Points : 1 564
Points : 1 564
Citation:
Envoyé par rawsrc Voir le message
Enfin, rien de plus... Tu y gagne en lisibilité parce que quand t'as des éléments imbriqués en pagaille, tu repères plus facilement les blocs avec un endforeach, endwhile ou toute autre syntaxe alternative qu'avec une simple accolade fermante. Pour peu que tu repasse après quelqu'un (qui code comme un cochon), crois-moi c'est appréciable.
J'ai une expérience totalement contraire. Simplement parce que tout éditeur légèrement évolué possède une fonction bien pratique qui s'appelle l'équilibrage des accolades et donc qu'il est beaucoup plus facile en un clic de retrouver le bloc concerné qu'avec la syntaxe endforeach etc. pour laquelle il n'existe pas d'équivalent pratique (tout au moins dans mon éditeur).

Ensuite quand je dis "comme tout le monde", cela fait simplement référence à plus de 95% (ou plus) des exemples que l'on trouve sur le web y compris dans le manuel php. Et je comptais pas faire monter ta tension pour si peu

Après chacun peut défendre ses préférences mais ce n'est pas la dessus que l'on juge de la qualité et de l'organisation d'un code. Et ma remarque dans mon message précédent allait simplement dans ce sens, histoire de recentrer les priorités : thebarbarius à bien d'autres choses à apprendre avant de se préoccuper de ces détails.


@thebarbarius tu enregistre les résultats de ta requête dans un tableau et ensuite tu liste les résultats de ce tableau avec ton foreach pour l'affichage dans ta vue.
Suivant que tu utilises ou non PDO, tu pourras récupérer directement le tableau avec fetchall si tu utilise l'extension PDO, ou tu devras construire ce tableau en faisant un while si tu utilise les extensions mysql, mysqli.
C'est que que je t'ai déjà dit dans mon avant dernier message et c'est que t'a détaillé un peu plus rawsrc par la suite.
Alors où est-il ce tableau dans ton code ?
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 08/10/2011, 22h12   #12
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
Merci.

Peut t'on rester sur mon code ?

Car il fonctionne mais me retounr qu'un resutat.

Je souhaietai les affiher tous.
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 08/10/2011, 22h17   #13
Membre Expert
 
Inscription : septembre 2010
Messages : 1 242
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 242
Points : 1 564
Points : 1 564
Citation:
Envoyé par ABCIWEB Voir le message
@thebarbarius tu enregistre les résultats de ta requête dans un tableau et ensuite tu liste les résultats de ce tableau avec ton foreach pour l'affichage dans ta vue.
Suivant que tu utilises ou non PDO, tu pourras récupérer directement le tableau avec fetchall si tu utilise l'extension PDO, ou tu devras construire ce tableau en faisant un while si tu utilise les extensions mysql, mysqli.
C'est que que je t'ai déjà dit dans mon avant dernier message et c'est que t'a détaillé un peu plus rawsrc par la suite.
Alors où est-il ce tableau dans ton code ?
Euh... sais plus quoi dire, tu ne veux pas le faire ce tableau ?
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h22.


 
 
 
 
Partenaires

Hébergement Web