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

Signaler
Messages postés
10
Date d'inscription
mardi 13 avril 2010
Statut
Membre
Dernière intervention
21 février 2011
-
syndrael
Messages postés
2381
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
-
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

7 réponses

Messages postés
392
Date d'inscription
mercredi 28 octobre 2009
Statut
Membre
Dernière intervention
23 mars 2012
23
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']
______________________________________________________________________
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
10
bonjour

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

a++
Messages postés
10
Date d'inscription
mardi 13 avril 2010
Statut
Membre
Dernière intervention
21 février 2011

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 :)
Messages postés
392
Date d'inscription
mercredi 28 octobre 2009
Statut
Membre
Dernière intervention
23 mars 2012
23
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
______________________________________________________________________
Messages postés
10
Date d'inscription
mardi 13 avril 2010
Statut
Membre
Dernière intervention
21 février 2011

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 ^^.
Messages postés
10
Date d'inscription
mardi 13 avril 2010
Statut
Membre
Dernière intervention
21 février 2011

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.

++
Messages postés
2381
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
12
En tout cas, même s'il y a des erreurs, c'est sympa de voir quelqu'un qui progresse ainsi.
S.