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

Messages postés
10
Date d'inscription
mardi 13 avril 2010
Dernière intervention
21 février 2011
- - Dernière réponse : syndrael
Messages postés
2382
Date d'inscription
lundi 4 février 2002
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 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
403
Date d'inscription
mercredi 28 octobre 2009
Dernière intervention
23 mars 2012
1
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 111 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
Dernière intervention
11 septembre 2013
12
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
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
Dernière intervention
23 mars 2012
1
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
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
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
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.