Problème de variables en dehors d'une class [Résolu]

Messages postés
10
Date d'inscription
mardi 13 avril 2010
Statut
Membre
Dernière intervention
21 février 2011
- - Dernière réponse : syndrael
Messages postés
2382
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
- 12 févr. 2011 à 07:57
Bonjour à tous,

J'ai un problème pour utiliser une variable en dehors de ma class.

Voici mon code:
class pouet
{
public function SelectAll ()
{
$id=$_GET['id'];
$sql="SELECT * FROM news WHERE id=$id";
$result = $this->bdd->query($sql) or die ('Erreur SQL !
'.$sql.'
'.mysql_error() );
$data=$result->fetch(PDO::FETCH_ASSOC);
echo "{$data['titre']}
";
echo " {$data['contenu']}

";
echo "".date("j/n/Y G:i",strtotime($data["date"]))."

";


$sql="SELECT * FROM comment WHERE news_id=$id ORDER BY id DESC";
$result = $this->bdd->query($sql) or die ('Erreur SQL !
'.$sql.'
'.mysql_error() );
while($data2=$result->fetch(PDO::FETCH_ASSOC))
{
echo "-------------------------------
";
echo $data2["pseudo"];
echo "{$data2['contenu']}

";
echo "-------------------------------
";
}

}

ensuite j'ai une autre page voir.php:

?php

require "config.php";
$app= new News();
$app->Connectauto();
$app->SelectAll();

?>

<form action="addcom.php" method="post">
Pseudo :

URL :

Mail :

Contenu :
<textarea name="contenu" style="width:500px;height:200px;"></textarea>

</gras>" />
</form>

mon probleme se situe au niveau du <?php echo $data["id"]; ?> en gras, il n'arrive pas a définir $data["id"];

Merci pour votre aide
Afficher la suite 

7 réponses

Meilleure réponse
Messages postés
403
Date d'inscription
mercredi 28 octobre 2009
Statut
Membre
Dernière intervention
23 mars 2012
7
3
Merci
je dois absolument tout faire en php OO sans mettre de echo ou autre ??
En gros OUI !

Bon, je vais gentil avec toi, et pour revenir à ton souci; selon les éléments du 1er message :
<?php
class News 
{ 
public function SelectAll($id)
{
$sql = "SELECT ne.id, ne.titre, ne.contenu, ne.date, co.pseudo, co.news_contenu, co.news_id 
FROM news ne 
INNER JOIN comment co 
ON ne.id=co.news_id 
WHERE ne.id='".intval($id)."' 
ORDER BY id DESC";
try {		
if(!$result = $this->bdd->query($sql))
throw new exception('Erreur SQL');	
return $result->fetch(PDO::FETCH_ASSOC);	
}
catch(Exeption $e) {
die($e->getMessage().''.$e->getTrace().'

');
}

}

}
?>

<?php 
$app= new News(); 
$display = $app->SelectAll($_GET['id']); 


/*
POUR AFFICHAGE
foreach($display as $values) 
{
echo "{$display['titre']}
"; 
echo " {$display['contenu']} 

"; 
echo "".date("j/n/Y G:i",strtotime($display["date"]))."

";
echo "-------------------------------
"; 
echo $display["pseudo"]; 
echo "{$display['news_contenu']}

"; 
echo "-------------------------------
";
}
*/
?> 

<form action="addcom.php" method="post"> 
Pseudo : 
 
URL : 
 
Mail : 
 
Contenu : 
<textarea name="contenu" style="width:500px;height:200px;"></textarea> 
 
" /> 
</form>


Bon c'est fait avec les éléments du bord, c'est donc théorique mais ça devrait le faire.

Remarque : tu cherchais à définir ton $data['id'] mais n'est-il as l'équivalent de $_GET['id'] ?? Si oui il suffisait de faire un "echo intval($_GET['id']);" à la place de $data['id']
______________________________________________________________________

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 121 internautes nous ont dit merci ce mois-ci

Commenter la réponse de phpAnonyme
Messages postés
1660
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
8
0
Merci
bonjour

class pouet
class News je suppose
sont elles liées
EXTEND ?

a++
Commenter la réponse de cod57
Messages postés
10
Date d'inscription
mardi 13 avril 2010
Statut
Membre
Dernière intervention
21 février 2011
0
Merci
Re j'ai pas bien compris donc je vais donner tout le code ^^.

config.php:

class News
{
/* Attribut */
private $bdd;
private $perPage;

public function __construct()
{
$this->perPage = 4;
}

/* GETTER */
public function getPerPage()
{
return $this->perPage;
}

/* SETTER */
public function setPerPage($perPage)
{
$this->perPage = $perPage;
}

/* Méthodes */
public function Connectauto()
{
try
{
$this->bdd=new PDO("mysql:host=localhost;dbname=news", 'root', '');
}
catch (PDOException $e)
{
die( "Erreur : " . $e->getMessage() . "
");
}
}

public function SelectAll ()
{
$id=$_GET['id'];
$sql="SELECT * FROM news WHERE id=$id";
$result = $this->bdd->query($sql) or die ('Erreur SQL !
'.$sql.'
'.mysql_error() );
$data=$result->fetch(PDO::FETCH_ASSOC);
echo "{$data['titre']}
";
echo " {$data['contenu']}

";
echo "".date("j/n/Y G:i",strtotime($data["date"]))."

";


$sql="SELECT * FROM comment WHERE news_id=$id ORDER BY id DESC";
$result = $this->bdd->query($sql) or die ('Erreur SQL !
'.$sql.'
'.mysql_error() );
while($data2=$result->fetch(PDO::FETCH_ASSOC))
{
echo "-------------------------------
";
echo $data2["pseudo"];
echo "{$data2['contenu']}

";
echo "-------------------------------
";
}


?>
<form action="addcom.php" method="post">
Pseudo :

URL :

Mail :

Contenu :
<textarea name="contenu" style="width:500px;height:200px;"></textarea>

" />
</form>
<?php
}

public function linkNewsAll ()
{
$sql = "SELECT COUNT(id) as nbNews FROM news";
$result = $this->bdd->query($sql) or die ('Erreur SQL !
'.$sql.'
'.mysql_error() );
$data=$result->fetch(PDO::FETCH_ASSOC);

$nbNews = $data['nbNews'];
$nbPage = ceil($nbNews/$this->getPerPage());

if(isset($_GET['p']) && $_GET['p']>0 && $_GET['p']<=$nbPage)
{
$cPage = $_GET['p'];
}
else
{
$cPage = 1;
}

$firstPage = ($cPage-1)*$this->getPerPage();

$sql="SELECT titre, id FROM news ORDER BY date DESC LIMIT $firstPage,".($this->getPerPage())."";
$result = $this->bdd->query($sql) or die ('Erreur SQL !
'.$sql.'
'.mysql_error() );

while($data=$result->fetch(PDO::FETCH_ASSOC))
{
echo "[index.php Redirection vers index]
</form>
<?php
}

public function Delete()
{
$sql= "DELETE FROM news WHERE id={$_GET['id']}";
$result = $this->bdd->query($sql) or die ('Erreur SQL !
'.$sql.'
'.mysql_error() );
header("Location: index.php");
}

public function addCom ()
{
extract($_POST);
$sql= "INSERT INTO comment (pseudo, url, mail, contenu, news_id) VALUES ('$pseudo', '$url', '$mail', '$contenu', '$news_id') ";
$result = $this->bdd->query($sql) or die ('Erreur SQL !
'.$sql.'
'.mysql_error() );
header("Location: voir.php?id=$news_id");
}

}

et j'ai voir.php:

<?php

require "config.php";
$app= new News();
$app->Connectauto();
$app->SelectAll();

?>
<!--
<form action="addcom.php" method="post">
Pseudo :

URL :

Mail :

Contenu :
<textarea name="contenu" style="width:500px;height:200px;"></textarea>

" />
</form>
-->

et enfin edit.php:

<?php

require "../config.php";
$app= new News();
$app->Connectauto();
$app->Edit();

?>
<!--
<form method="post" action="edit.php" />
" />
Titre :" />


Contenu :

<textarea name="contenu" style="with:100%;height:150px;">?php echo $data["contenu"]; ?></textarea>



[index.php Redirection vers index]
</form>
-->

voila donc mon problème est que j'aimerais utiliser le html dans edit.php et voir.php mais il ne me reconnait pas <?php echo $data['n'importe la quelle']; ?> donc je suis obligé de mettre le html dans mes class se qui n'est pas très propre comme code php OO.

Merci :)
Commenter la réponse de yukimura27
Messages postés
403
Date d'inscription
mercredi 28 octobre 2009
Statut
Membre
Dernière intervention
23 mars 2012
7
0
Merci
1.Tu fais de l'objet sans en faire
2.Il faut instancier ta classe poulet
3.Il faut éviter de faire de l'affichage(absolu) dans des méthodes
______________________________________________________________________
Commenter la réponse de phpAnonyme
Messages postés
10
Date d'inscription
mardi 13 avril 2010
Statut
Membre
Dernière intervention
21 février 2011
0
Merci
Ok mais je débute donc je comprend pas bien ^^.

en gros je dois absolument tout faire en php OO sans mettre de echo ou autre ??

Mais le problème c'est que je ne vois pas trop comment faire ^^.
Commenter la réponse de yukimura27
Messages postés
10
Date d'inscription
mardi 13 avril 2010
Statut
Membre
Dernière intervention
21 février 2011
0
Merci
Ok je vois un peu mieux ce qu'il faut faire j'étais déjà entrain de refaire tout mon code dans ce sens.
Merci pour cette exemple, ça va bien m'aider.

++
Commenter la réponse de yukimura27
Messages postés
2382
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
11
0
Merci
En tout cas, même s'il y a des erreurs, c'est sympa de voir quelqu'un qui progresse ainsi.
S.
Commenter la réponse de syndrael