Flux rss
Rechercher : dans
Par : Mots clés Nom d'utilisateur
Messages sans réponse

Problème de boucles imbriquées en PHP

hellnino, le vendredi 26 janvier 2007 à 15:56:29 
 Signaler ce message aux modérateurs

J'ai crée la fonction suivante en php,mais lors de son execution un problème apparait:



Notice: Undefined offset: 1 in c:\documents and settings\...\recherche.php on line 66

Notice: Undefined offset: 2 in c:\documents and settings\...\recherche.php on line 66

Notice: Undefined offset: 3 in c:\documents and settings\...\recherche.php on line 66

Notice: Undefined offset: 4 in c:\documents and settings\...\recherche.php on line 66

....

Notice: Undefined offset: 1 in c:\documents and settings\...\recherche.php on line 74


Le code est le suivant:

function verif()
{
	$lien=seConnecter();
	$i=0;
	$j=0;
	$resultat69=executerRequeteBD($lien, "SELECT idAuteur FROM auteur" );
	$nblig69=mysql_num_rows($resultat69);
	$nblig690=mysql_fetch_array($resultat69);
	
	$resultat70=executerRequeteBD($lien, "SELECT idAuteur FROM ecrire" );
	$nblig70=mysql_num_rows($resultat70);
	$nblig700=mysql_fetch_array($resultat70);
	
	for ($i=0;$i<=$nblig69;$i++)
	{
		$som=0;
		for ($j=0;$j<=$nblig70;$j++)
		{
			if ($nblig690[$i]==$nblig700[$j])   //ligne 66
			{
				$som=$som++;
			}
			
		}
		if ($som==0)
		{
			$resultat80=executerRequeteBD($lien, "DELETE FROM auteur WHERE IdAuteur='$nblig690[$i]'");   //ligne 74
		}
	}
	
}




Sachant que les erreurs notice n'empèchent apparament pas la suite de la page de s'executer,mais la fonction elle ne s'execute pas correctement.Si quelqu'un pouvait m'aider...merci
Configuration: Windows XP
Firefox 1.5.0.9

1

kij_82, le vendredi 26 janvier 2007 à 16:04:54

Ca ne va pas du tout !

Il ne faut pas bouclier en faisant des for, mais des while sur le résultat de tes deux premieres requetes comme suit :

function verif()
{
	$lien=seConnecter();
	$i=0;
	$j=0;
	
	$resultat69=executerRequeteBD($lien, "SELECT idAuteur FROM auteur" );	
	$resultat70=executerRequeteBD($lien, "SELECT idAuteur FROM ecrire" );

	while ( $nblig690=mysql_fetch_array($resultat69) ){
		$som=0;
		while ( $nblig700=mysql_fetch_array($resultat70) ){
			if ($nblig690[$i]==$nblig700[$j])
				$som++;
		}
		if ($som==0)
			$resultat80=executerRequeteBD($lien, "DELETE FROM auteur WHERE IdAuteur='$nblig690[$i]'");   //ligne 74
	}
	
}
~ iclic @ gauch,iclic,  iclic @ droate, iclic, iclic
             et ya pas de bôg môsieu !    ~

Répondre à kij_82

2

Reivax962, le vendredi 26 janvier 2007 à 16:07:27

Bonjour,

C'est tout simple :)
Ta fonction mysql_num_rows te dit que tu as X auteurs.
Ensuite, dans ta boucle, tu prends tous les auteurs, de 0 à X inclu. si compte, cela fait... X+1 auteurs en tout. Alors forcément, sur le dernier, il y a un problème !

Bref, tout ça pour dire que dans tes boucles for() (les deux), il ne faut pas mettre des <= mais des < stricts.

Voilà, bon courage pour la suite :)

Xavier

Répondre à Reivax962

3

kij_82, le vendredi 26 janvier 2007 à 16:10:21
  • +1

Ha ben non.
Oubli ce que j'ai mis c'est inutile.

~ iclic @ gauch,iclic,  iclic @ droate, iclic, iclic
             et ya pas de bôg môsieu !    ~

Répondre à kij_82

4

Reivax962, le vendredi 26 janvier 2007 à 16:30:33
  • +2

Bon, en fait, j'ai encore mieux pour faire ce que tu veux faire :)
Une seule requête !

Regarde déjà cette requête :

SELECT 
  DISTINCT idAuteur
FROM ecrire
Elle te renvoit tous les ID des auteurs qui ont effectivement écrit.
Si tu l'utilises dans ton delete :
DELETE FROM auteur
WHERE idAuteur NOT IN
(
SELECT 
  DISTINCT idAuteur
FROM ecrire
)
Une seule requête qui supprime tous les auteurs qui n'ont pas écrit. Le serveur PHP préfère, le serveur MySQL aussi, sans même parler de la personne qui lit ton code : tout bénèf :)

Répondre à Reivax962

5

 hellnino, le vendredi 26 janvier 2007 à 17:38:04
  • +1

Problème résolu!!Merci a Reivax962,ta première remarque était juste mais il y avait encor d'autres problèmes aloprs que la seconde marche parfaitement et est beaucoup plus simple^^.Merci aussi a kij_82.

Répondre à hellnino
Probleme sur la Boucle WHILE Bonjour, J'utilise deux boucles « for » imbriquées pour comparer deux tableaux de chaînes de caractères sous SH: for ((i=0;i www.commentcamarche.net/forum/affich-9964822-probleme-sur-la-boucle-while
[php] boucle sur un tableau Bonjour ou Bonsoir, J'aimerai savoir comment faire une boucle sur toutes les valeurs de mon tableau en PHP. Merci. Exemple : $tab = array("err","fdf"); while(???) { } JSS.merci www.commentcamarche.net/forum/affich-764392-php-boucle-sur-un-tableau
Remplir un array avec une boucle PHP Bonjour, je voudrai savoir si il est possible de remplir un array avec une boucle While ou for bien sur tout ça en PHP, si oui quel syntaxe utiliser merci pour vos réponse www.commentcamarche.net/forum/affich-11600202-remplir-un-array-avec-une-boucle-php
[PHP] Upload de fichiersLe langage PHP permet de gérer des fichiers envoyés (uploadés) grâce à un formulaire HTML. Formulaire d'envoi de fichiers Configuration de PHP pour permettre l'upload Récupération du fichier avec PHP Formulaire d'envoi de fichiers La... www.commentcamarche.net/faq/sujet-889-php-upload-de-fichiers
[PHP] Notice: Undefined index:Si vous utilisez les tableaux $_POST ou $_GET pour récupérer les variables de vos formulaires ou autres, il se peut que vous tombiez sur cette erreur: Notice: Undefined index 'champs du tableau' in 'chemin du fichier php en cours d'execution' on line... www.commentcamarche.net/faq/sujet-1391-php-notice-undefined-index
[PHP] Parse error, unexpected T_STRING, expecting ',' or ';'Cette erreur, fréquente, se produit notamment lorsqu'un guillemet est présent dans une chaîne délimitée par ce même type de guillemets, par exemple : www.commentcamarche.net/faq/sujet-869-php-parse-error-unexpected-t-string-expecting-or
While do boucle imbriquéeBonjour, donne moi un exemple comment fair la boucle while do imbriquée.svp merci. www.commentcamarche.net/forum/affich-12143352-while-do-boucle-imbriquee
[PHP] Boucle for et nom de variable ! (Résolu)Bonjour ... J'ai 7 inputs portant les noms suivants : CHARGES_HH0 CHARGES_HH1 CHARGES_HH2 CHARGES_HH3 CHARGES_HH4 CHARGES_HH5 CHARGES_HH6 Je vous rassure, c'est construit à l'aide d'une boucle for !! Je suis dans un formulaire method='post' et je veux... www.commentcamarche.net/forum/affich-2439118-php-boucle-for-et-nom-de-variable
[php]boucle while (Résolu)bonjour j'ai crée 3 boucles while, pour afficher 3 sortes de personnes présentes dans ma bdd. J'ai donc placé AVANT chaque boucle un différent(ex.fort, moyen, faible). Les boucles se font bien, mais la couleur d'arrière plan du h3 passe... www.commentcamarche.net/forum/affich-2321346-php-boucle-while
Télécharger PHP EditPHPEdit est un environnement de développement intégré (IDE) sous Windows pour le langage PHP. Il offre un grand nombre de fonctionnalités permettant de développer plus efficacement : Coloration syntaxique Auto-complétion des... www.commentcamarche.net/telecharger/telecharger-62-php-edit
Télécharger ASP/PHP Web Application BuilderASP/PHP Web Application Builder est une application de développement de base de données tout à fait anodin. Avec cette simplicité qu’il incarne, il ne nécessite aucune connaissance en programmation, il vous permet facilement de créer vos bases... www.commentcamarche.net/telecharger/telecharger-34058189-asp-php-web-application-builder
Télécharger PHP FTP SynchronizerLa mise à jour de site web est aussi complexe que sa conception. Alors il faut utiliser le bon outil avec les bon paramètres et une bonne connaissance de programmation pour mettre à jour un site. PHP FTP Synchronizer est une application vous... www.commentcamarche.net/telecharger/telecharger-34058093-php-ftp-synchronizer
PHP - Structures conditionnellesQu'est-ce qu'une structure conditionnelle? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non, c'est-à-dire si la valeur de son expression vaut 0 ou 1 (le PHP associe le mot clé true à 1... www.commentcamarche.net/contents/php/phpcond.php3
PHP - Récupération de donnéesPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des... www.commentcamarche.net/contents/php/phpform.php3
Introduction à PHPQu'est-ce que PHP? PHP est un langage interprété (un langage de script) exécuté du côté serveur (comme les scripts CGI, ASP, ...) et non du côté client (un script écrit en Javascript ou une applet Java s'exécute sur votre ordinateur...). La... www.commentcamarche.net/contents/php/phpintro.php3