Error en php

infokab Mensajes publicados 23 Estado Miembro -  
infokab Mensajes publicados 23 Estado Miembro -
Hola
estoy intentando crear un pequeño sitio pero tengo este error:

Fatal error: Call to a member function query() on null in C:\xampp\htdocs\tp3\etudiant\SiteWebShop\index.php on línea 26

no sé si me podrías ayudar
gracias

2 respuestas

infokab Mensajes publicados 23 Estado Miembro
 
Aquí está la línea que presenta el problema

$sql=$conexion->query($consulta); // envío de la consulta
0
jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención   4 830
 
Hola,

el mensaje de error significa que $conexion es "null".
¿Dónde lo has inicializado?

Sabiendo que para ayudarte... tener todo el código es lo ideal !!

NB: Si usas PDO: https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

NB²: Para publicar tu código en el foro: https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code


NB3: A leer antes... ¡para que nos muestres un código "limpio"!
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
0
infokab Mensajes publicados 23 Estado Miembro > jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención  
 
hola

gracias por tu respuesta

aquí está mi archivo de conexión :

 <?php define("SERVIDOR","localhost"); define("USUARIO","root"); define("CONTRASEÑA",""); define("BD","sitewebshop"); function conexionBd($host=SERVIDOR,$username=USUARIO,$password=CONTRASEÑA,$bd=BD) { try { $conexion= new PDO('mysql:host='.$host.';dbname='.$bd, $username, $password); $conexion->exec("SET CHARACTER SET utf8"); //Gestión de acentos return $conexion; } catch(Exception $e) { echo 'Error : '.$e->getMessage().'<br />'; echo 'N° : '.$e->getCode(); return null; } } ?> 

EDITAR : ¡Añadido las etiquetas de código!

0
infokab Mensajes publicados 23 Estado Miembro > jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención  
 
et las líneas que me plantean problema

$requete = "SELECT * FROM article ORDER BY RAND() LIMIT 3" ;
$sql=$connexion->query($requete); // envío de la consulta
$res=$sql->fetchALL(PDO::FETCH_ASSOC); // devuelve todos los resultados


gracias
0
jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención   4 830
 
Re,

Bueno... aparentemente no has leído ninguno de mis enlaces ANTES de publicar tu código.

Así que:
1 - Lee (y aplica...) el contenido de los enlaces que te he dado.
2 - Muéstranos tu código COMPLETO.
En el pequeño trozo de código de tus líneas que "causan" problemas... falta la llamada a la función de conexión a la base de datos...

--
Atentamente,
Jordane
0
infokab Mensajes publicados 23 Estado Miembro
 
gracias por tu respuesta

a decir verdad no he entendido mucho (¿hay que añadir la línea " setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); "
para manejar mis errores?

¿el problema se encuentra en mi archivo de conexión o en mis consultas?

gracias
0
infokab Mensajes publicados 23 Estado Miembro
 
```html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<link href="css/style.css" rel="stylesheet" type="text/css" />
<title>SiteWebShop</title>

</head>
<body>

<?php include 'header.php' ; ?>
<!-- INICIO de la página -->

<?php

include 'utile.php';

include_once 'connexion.php';
$connexion =connexionBd();

$requete = "SELECT * FROM article ORDER BY RAND() LIMIT 3" ;
$sql=$connexion->query($requete); // envío de la solicitud
$res=$sql->fetchALL(PDO::FETCH_ASSOC); // devuelve todos los resultados

?>

<!--<header>
<div class="wrap">
<h1><a href="#" rel="nofollow noopener noreferrer" target="_blank"><img src="images/openshop_logo.png" alt="logo open shop"></a></h1>


<nav>
<ul>
<li><a href="index.php" rel="nofollow noopener noreferrer" target="_blank">inicio</a></li>
<li><a href="login.php" rel="nofollow noopener noreferrer" target="_blank">iniciar sesión</a></li>
<li><a href="creer_compte.php" rel="nofollow noopener noreferrer" target="_blank">crear cuenta</a></li>
<li><a href="panier.php" rel="nofollow noopener noreferrer" target="_blank">carrito</a></li>
</ul>
</nav>

<form id="search" action="recherche.php" method="post" enctype="multipart/form-data">
<p>
<label for="searchText">Buscar :</label>
<input id="searchText" name="query" type="text" value="" />
<input id ="searchBtn" type="submit" class="bouton" value="OK" />
</p>
</form>


<nav id="menu-categorie">
<ul>
<li class="smenu"><a href="#" rel="nofollow noopener noreferrer" target="_blank">todos los productos</a></li>
<li class="smenu"><a href="#" rel="nofollow noopener noreferrer" target="_blank">ropa</a></li>
<li class="smenu"><a href="#" rel="nofollow noopener noreferrer" target="_blank">accesorios</a></li>
<li class="smenu"><a href="#" rel="nofollow noopener noreferrer" target="_blank">posters</a></li>
<li class="smenu"><a href="#" rel="nofollow noopener noreferrer" target="_blank">dvd</a></li>
</ul>
</nav>
</div>
</header> -->

<section>


<header>Bienvenido <span class="ss-titre">Somos el ?????? </span></header>
<p>La tienda en línea <strong>openSHOP</strong> es un trabajo realizado por <em>Thomas Jouannic</em> y <em>Jérome Saunier</em>
luego modificado y adaptado <strong>durante el curso de Sitios Web Avanzados</strong>.</p>
<p>En la parte superior, encontrará un medio para identificarse o crear una cuenta si no tiene ninguna. El campo de búsqueda
le permite mostrar fácilmente los productos correspondientes a lo que desea. También puede navegar entre las diferentes
categorías de productos haciendo clic en la que desea ver.</p>
<p>¡Buena navegación!</p>
</section>
<section>
<header>
<h2>Al azar...</h2>
</header>
<!--Mostrar 3 artículos al azar -->
<ul id= "product-list" >
<?php

foreach ( $res as $key => $val2)

echo "<li class ='product'>";

echo "<h3>".$value["Designación"]."</h3>";
echo "<p><img alt='' src='".$value['img_article']."'></p></img>";
echo "<p id='precio'>".$value['Precio']."€</p>";
echo "<p>".tronquer_texte($value['description'])."</p>";

echo '<p><a href="vue_produit.php?article='.$value[" rel="nofollow noopener noreferrer" target="_blank"id_article"].'">Ver los detalles</a></p>';

echo '</li>';

?>

</ul>

</section>

<?php include('footer.php') ; ?>

<!--<footer>
<p> <a id="goto-admin" href="admin.php" rel="nofollow noopener noreferrer" target="_blank">Admin</a></p>
<p id="extra">
Sitio Web Avanzados - Año 2016 - versión HTML 5
</p>

</footer> -->



</body>
</html> ```
0
jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención   4 830 > infokab Mensajes publicados 23 Estado Miembro
 
Una buena vez por todas.... ¿puedes

USAR LAS ETIQUETAS DE CÓDIGO

para publicar tu código en el foro???!!!!

Lee aquí las explicaciones: https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
0
infokab Mensajes publicados 23 Estado Miembro
 


include_once 'conexion.php';
$conexion =conexionBd();

$consulta = "SELECT * FROM articulo ORDER BY RAND() LIMIT 3" ;
$sql=$conexion->query($consulta);
$res=$sql->fetchALL(PDO::FETCH_ASSOC);




lo siento, es la primera vez que posteo, no sabía ( esto es mi índice )
0
infokab Mensajes publicados 23 Estado Miembro
 


<?php

define("SERVIDOR","localhost");
define("USUARIO","root");
define("CONTRASENA","");
define("BD","sitewebshop");


function conexionBd($host=SERVIDOR,$username=USUARIO,$password=CONTRASENA,$bd=BD)
{
try
{
$conexion= new PDO('mysql:host='.$host.';dbname='.$bd, $username, $password);
$conexion->exec("SET CHARACTER SET utf8"); //Gestión de acentos
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);


return $conexion;
}
catch(Exception $e)
{
echo 'Error : '.$e->getMessage().'<br />';
echo 'N° : '.$e->getCode();
return null;
}
}

?>





esto es mi archivo de conexión

gracias
0